ros対応のyoloを以下でclone & buildします。
$ cd catkin_workspace/src
$ git clone --recursive https://github.com/kanezaki/darknet_ros.git
$ cd darknet_ros/darknet_ros
$ catkin bt -DCMAKE_BUILD_TYPE=Release
ビルドは1回目最後まで終わらなかったので、一回強制終了して2回目で通りました(謎)。
GPUの有無は、勝手に判別してよしなにしてくれるらしいです。
次に学習パラメータをダウンロードします。
$ cd catkin_darknet_ros/yolo_network_config/weights/
$ wget http://pjreddie.com/media/files/yolov3.weights
カメラは、今回は手持ちのUSB Cam(ELECOM UCAM-C0220FBNBK)を使用しました。ROSで動くカメラであれば、基本OKなはずです。
以下で必要なドライバインストールします。
$ sudo apt-get update
$ sudo apt-get install ros-kinetic-usb-cam
以下コマンドでroscore動かして
$ roscore
以下コマンドでカメラを起動します。
$ rosparam set usb_cam/pixel_format yuyv
$ rosrun usb_cam usb_cam_node
続いて、カメラに合わせて、 トピック名を変更しておきます。 /darknet_ros/darknet_ros/config/ros.yaml
というファイルで変更します(最初 launchでremapしようとしてハマりました)
以下のように修正しました。
diff --git a/darknet_ros/config/ros.yaml b/darknet_ros/config/ros.yaml
index 04abce5..5d72612 100644
--- a/darknet_ros/config/ros.yaml
+++ b/darknet_ros/config/ros.yaml
@@ -1,7 +1,7 @@
subscribers:
camera_reading:
- topic: /camera/rgb/image_raw
+ topic: /usb_cam/image_raw
queue_size: 1
以下コマンド実行すると、Yolo v3が走って、ウィンドウが開いてリアルタイムに結果が出力されます。
$ roslaunch darknet_ros darknet_ros.launch
コンソールによると5fps近く出ているようです。
FPS:4.7
Objects:
person: 98%
ウィンドウが邪魔な場合は、ros.yamlの image_view/enable_opencv を falseにすればOKです。Readmeにも書いてあります。
あとは、以下実行すれば、検出結果が表示されます。
$ rosrun image_view image_view image:=/darknet_ros/detection_image