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