概要

ロボットの顔が人の方を向くアプリケーション「顔ロボット」を作成しました。人が移動してもロボットの顔が人を追います。人の検出には、人工知能のディープラーニングによるリアルタイム物体検出を使いました。人が横を向いていても、座っていても人だと検出できています。

1)物体検出プログラムを使って、ヒューマノイドロボットに搭載したカメラ映像からリアルタイムに人を検出します。検出結果は、「確率、X座標、Y座標、幅、高さ」です。
2)人の検出結果から、確率・位置・大きさを考慮して目標にするポイントを決め、そこを向くためのロボットの顔の目標角度を計算します。目標角度をロボットに送信します。
3)ロボットは指令通りに動作します。

ロボットの左目にカメラを内蔵しています。ディープラーニングによるリアルタイム物体検出プログラムの実行と、ロボットへの指令の計算プログラムの実行は、ノートパソコンを使用しています。ロボットの関節のサーボモータの制御は、ロボットに搭載したマイコンで行っています。

ロボットの顔が人の方を向く写真

ロボットの顔が人の方を向く

動画

人工知能により人を検出して、人の方を見るヒューマノイドロボット

物体検出(YOLO)の環境

物体検出には、DarknetのYOLOv3を使用しました。人工知能のディープラーニングを高速に行うために、GPU付きのPCを使用して、CUDAとcuDNNをインストールしました。GPUの能力を使わないと物体検出の計算が遅くなります。

使用したノートPCの仕様

Windows 10 Pro OMEN by HP 15 Corei7-8750H 16GB GeForce GTX1070 with Max-Q Design(8GB)

 

OpenCVは画像用のライブラリです。
Visual Studio を使って、YOLOのC言語プログラムのプロジェクト(darknet.sln)をコンパイルします。

webカメラの映像でプログラムを実行する場合のオプション

C:\darknet\build\darknet\x64\darknet.exe detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights -c 0

 

以下は、インストールについてです。

1)CUDAのインストール

CUDA Toolkit 9.0 Downloads

バージョン確認方法

C:\Users\sakamoto>nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:32_Central_Daylight_Time_2017
Cuda compilation tools,
release 9.0,
V9.0.176

2)cuDNNのインストール

nvidiaのcuDNNインストールのページ

バージョン確認方法
ファイル cudnn.h

#define CUDNN_MAJOR 7
#define CUDNN_MINOR 2
#define CUDNN_PATCHLEVEL 1

3)OpenCVのインストール

opencvのダウンロードのページ

ダウンロードしたファイル opencv-3.4.0-vc14_vc15.exe

Windowsの環境変数のPATH設定を追加する

C:\opencv340\build\x64\vc14\bin

4)Microsoft Visual Studio 2015のインストール

Visual Studio のダウンロードのページ

5)リアルタイム物体検出YOLOのインストール

Darknetのホームページ

YOLOのダウンロード先
YOLO: Real-Time Object Detection

リアルタイム物体検出の速度は、実測26FPS出ました。

標準で検出できるのは以下の80種類

“person”, “bicycle”, “car”, “motorcycle”, “airplane”, “bus”, “train”, “truck”, “boat”, “traffic light”, “fire hydrant”, “stop sign”, “parking meter”, “bench”, “bird”, “cat”, “dog”, “horse”, “sheep”, “cow”, “elephant”, “bear”, “zebra”, “giraffe”, “backpack”, “umbrella”, “handbag”, “tie”, “suitcase”, “frisbee”, “skis”, “snowboard”, “sports ball”, “kite”, “baseball bat”, “baseball glove”, “skateboard”, “surfboard”, “tennis racket”, “bottle”, “wine glass”, “cup”, “fork”, “knife”, “spoon”, “bowl”, “banana”, “apple”, “sandwich”, “orange”, “broccoli”, “carrot”, “hot dog”, “pizza”, “donut”, “cake”, “chair”, “couch”, “potted plant”, “bed”, “dining table”, “toilet”, “tv”, “laptop”, “mouse”, “remote”, “keyboard”, “cell phone”, “microwave”, “oven”, “toaster”, “sink”, “refrigerator”, “book”, “clock”, “vase”, “scissors”, “teddy bear”, “hair drier”, “toothbrush”