ROS下實現darknet_ros(YOLO V3)檢測

一. 代碼下載
代碼Github主頁:https://github.com/leggedrobotics/darknet_ros
下載命令:

git

mkdir -p catkin_workspace/src
cd catkin_workspace/src
git clone --recursive git@github.com:leggedrobotics/darknet_ros.git
cd ../

下載時間可能比較長,請耐心等待…github

二. 編譯
在ROS工做空間目錄下,執行命令:
bash

catkin_make -DCMAKE_BUILD_TYPE=Release

此時會開始編譯整個項目,編譯完成後會檢查{catkin_ws}/darknet_ros/darknet_ros/yolo_network_config/weights文件下有沒有yolov2-tiny.weights和yolov3.weights兩個模型文件,默認下載好的代碼裏面爲了節省體積是不帶這兩個模型文件的。所以編譯以後會自動開始下載模型文件,此時又是一段漫長的等待時間。
若是恰好你以前已經下載好了模型文件,那就行了,在開始編譯以前就把模型文件拷貝到上述文件夾下,就不會再次下載了。
併發

三. 運行代碼
1. 圖像話題發佈
由於darknet_ros會直接訂閱指定的圖像話題名,而後對圖像進行檢測,繪製檢測框,併發布相應的檢測話題,所以首先須要找一個可以發佈圖像話題的ROS包,這裏推薦使用ROS官方提供的usb_cam驅動包,能夠直接將電腦自帶攝像頭或鏈接電腦的USB攝像頭採集的圖像發佈爲ROS圖像話題。
下載攝像頭驅動:


spa

sudo apt-get install ros-kinetic-usb-cam

而後發佈攝像頭圖像話題:3d

roslaunch usb_cam usb_cam-test.launch

若是順利的話應該能夠看到實際的圖像顯示界面。code

2. 運行darknet_ros
而後執行darknet_ros進行檢測,在運行檢測以前須要更改一下配置文件,使得darknet_ros訂閱的話題與usb_cam發佈的圖片話題對應。
打開darknet_ros/config/ros.yaml文件,修改:

blog

subscribers:
  camera_reading:
    topic: /camera/rgb/image_raw
    queue_size: 1

圖片

subscribers:
  camera_reading:
    topic: /usb_cam/image_raw
    queue_size: 1

回到darknet的工做空間根目錄,執行:get

source devel/setup.bash
roslaunch darknet_ros darknet_ros.launch

出現對攝像頭採集圖像的實時檢測結果。

 

能夠看到檢測的結果仍是有很大問題的!!

咱們只須要把預訓練集換成YOLO v3的來檢測就能夠了,更換以下:找到config文件能夠看到以下的訓練集

 打開launch文件

修改 darknet_ros.launch
 

arg name="network_param_file"         default="$(find darknet_ros)/config/yolov2-tiny.yaml"/

改成

arg name="network_param_file"         default="$(find darknet_ros)/config/yolov3.yaml"/

以下:

 而後從新啓動:

roslaunch darknet_ros darknet_ros.launch

 檢測結果以下:

多來幾張結果:

 

後續有時間會嘗試製做如何訓練本身的訓練集並在ROS下進行檢測使用,謝謝!

相關文章
相關標籤/搜索