概要
最近YOLOv5なるもの(賛否両論あるようですが)が出てきたこともあり,多少時代遅れのYOLOv3からYOLOv4にしようと思いましたが ,ROS(Robot Operating System)環境でのセットアップ記事が見当たらなかったので備忘録としてまとめてみます.
※以下の記事によると,YOLOv5はフレームワークにpytorchが使われていて現環境と異なるので取りあえず見送ります.
実行環境
今回はUbuntu16.04とUbuntu18.04で動作を確認しました.以下詳細です.
OS | Ubuntu16.04.6 LTS | Ubuntu18.04.5 LTS |
---|---|---|
CPU | Intel Core i7-8700 | Intel Core i5-6500 |
GPU | Geforce GTX 1080 Ti | Geforce GTX 960 |
ROS | Kinetic 1.12.14 | Merodic 1.14.9 |
Nvidia Driver | 450.51.06 | 440.100 |
CUDA(toolkit) | 8.0 | 10.2 |
cuDNN | 7 | 7 |
今回は上記環境が整っていることが前提として進めていきます.
準備
現在,~/catkin_ws/src/下にあるdarknet_rosパッケージを避難させる.適当にホームディレクトリなどにバックアップディレクトリ(今回はYOLOv3)を作りそこに移動させる.
※darknet_rosを初めて使う人はとばしてください
# 1行ずつ実行してください
$ cd
$ mkdir YOLOv3
$ cd ~/catkin_ws/src
$ mv darknet_ros ~/YOLOv3
次に以下を参考にYOLOv4用のdarknet_rosパッケージをクローンする.
YOLO V4 for darknet_ros
<注意>
リンク先に書いてあるコマンドでクローンするとyolov4-for-darknet_rosパッケージという,darknet_rosより1つ上の階層のパッケージがインストールされてしまい,私の場合catkin_makeが通りませんでした.以下に変更すると上手く行きました.
$ cd ~/catkin_ws/src
$ git clone --recursive https://github.com/Tossy0423/darknet_ros.git
$ cd ..
$ catkin_make
これでmakeが通れば完了です.
補足
このdarknet_rosは,USBカメラのドライバとしてuvc_cameraを採用してあります.私の場合usb_camをドライバとして使用しているのでテストする際にはdarknetが受け取るカメラノードの変更が必要でした.
- catkin_ws/src/darknet_ros/darknet_ros/config/ros.yaml
1 subscribers:
2
3 camera_reading:
4 topic: /camera/rgb/image_row
5 queue_size: 1
1 subscribers:
2
3 camera_reading:
4 topic: /usb_cam/image_row
5 queue_size: 1
テスト
動作テストをしてみました.
# 2つの端末で実行
# darknet_rosノード立ち上げ
$ roslaunch darknet_ros yolov4.launch
# カメラノード立ち上げ
$ roslaunch usb_cam usb_cam-test.launch
いい感じに表示することができました.以上です.