开源项目|从0到1教你搭建一个适配于智能车的目标检测系统
引言
本教程連載一輛能夠用 ROS 控制的帶攝像頭的小車,用 ROS 發(fā)布圖像數(shù)據(jù),對獲取到的圖像進行處理,例如目標檢測。這里主要介紹如何把本教程后面的的內(nèi)容匯聚起來,實現(xiàn)一個能目標檢測的小車。
先歸納一下之后文檔的內(nèi)容:
獲取本項目完整教程代碼及文檔請關(guān)注下方二維碼
并在公眾號后臺回復數(shù)字“4"
這篇文檔幾乎涉及了上面所有文檔的內(nèi)容是一個綜合應用,大家可以根據(jù)之后的連載一步一步學起來。如果對上面的內(nèi)容比較熟悉了,就會發(fā)現(xiàn)這篇文檔很簡短,但是卻是建立在之前已有的基礎上。
現(xiàn)在應當已經(jīng)熟悉的內(nèi)容:
了解 CNN 的工作原理;
能使用 Darknet 訓練自己的目標檢測模型
能用 rosserial 建立 RT-Thread 和 ROS 的連接
能用 ROS 發(fā)布圖像信息
下面就會介紹如何用 ROS 發(fā)布的圖像信息和 Darknet 連接做目標檢測。
1.Darknet ROS
1.1 獲取源碼
其實下面要用到的是一個 ROS 軟件包,這個軟件包現(xiàn)在也是開源的:
1#?初始化工作環(huán)境 2$?mkdir?catkin_workspace 3$?cd?catkin_workspace/src 4$?catkin_init_workspace 5 6##?下載源碼 7$?git?clone?--recursive?http://github.com/leggedrobotics/darknet_ros.git除了源碼,我們還要下載一些訓練好的神經(jīng)網(wǎng)絡權(quán)值,放在下面這個目錄:
1$?catkin_workspace/src/darknet_ros/darknet_ros/yolo_network_config/weights/如果覺得國外下載速度太慢的話,這里我有個國內(nèi)的 CDN 加速鏡像:
yolov2-tiny.weights:https://wuhanshare-1252843818.cos.ap-guangzhou.myqcloud.com/yolov2-tiny.weights
yolov2.weights:https://wuhanshare-1252843818.cos.ap-guangzhou.myqcloud.com/yolov2.weights
yolov3.weights:https://wuhanshare-1252843818.cos.ap-guangzhou.myqcloud.com/yolov3.weights
如果源碼和權(quán)值都下載好了,我們就可以準備編譯了。
1.2 編譯源碼
為了保證 Darknet 能夠獲取到攝像頭的數(shù)據(jù),我們需要先告訴它攝像頭的信息發(fā)布在哪里,修改這個文件:
1$?catkin_workspace/src/darknet_ros/darknet_ros/config/ros.yaml把下面的 topic 修改為自己圖像發(fā)布的位置,例如我這里發(fā)布在 /usb_cam/image_raw
1camera_reading: 2????topic:?/usb_cam/image_raw 3????queue_size:?1然后就可以編譯軟件包了,在 catkin_workspace 目錄下:
1$?catkin_make一切正常的話,編譯就完成了,其實不需要做太多的工作,編譯完記得更新一下環(huán)境變量,這樣后面才能正常啟動這個軟件包。
1$?sorce?devel/setup.bash1.3 目標檢測
在進行目標檢測前,我們先啟動 ROS 節(jié)點:
1$?roscore然后啟動一個攝像頭節(jié)點:
這樣就可以實時看到攝像頭的數(shù)據(jù)了,攝像頭在哪里其實不重要,既可以在小車上,也可以在電腦上,這也是 ROS 的優(yōu)美之處,只要節(jié)點發(fā)布了攝像頭消息,不管攝像頭在哪, ROS 都能拿到處理:
接下來我們啟動 Darknet 的節(jié)點:
1$?roslaunch?darknet_ros?darknet_ros.launch下面這張圖就可以看到有兩個視頻流,左邊的是沒有處理的實時圖像,右邊是運行了目標檢測的結(jié)果:
2.總結(jié)
RT-Thread 作為實時操作系統(tǒng)負責控制,Linux 則負責提供豐富的軟件包運行算法,兩者相結(jié)合,互相取長補短還是配合地挺好的。
3.參考文獻
Darknet ROS:https://github.com/leggedrobotics/darknet_ros
獲取本項目完整教程代碼及文檔請關(guān)注下方二維碼
并在公眾號后臺回復數(shù)字“4"
RT-Thread
讓物聯(lián)網(wǎng)終端的開發(fā)變得簡單、快速,芯片的價值得到最大化發(fā)揮。Apache2.0協(xié)議,可免費在商業(yè)產(chǎn)品中使用,不需要公布源碼,無潛在商業(yè)風險。
長按二維碼,關(guān)注我們
點擊“閱讀原文”進入RT-Thread GitHub
總結(jié)
以上是生活随笔為你收集整理的开源项目|从0到1教你搭建一个适配于智能车的目标检测系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑外设配件有哪些(2022年游戏手柄推
- 下一篇: docker和虚拟机的区别(Docker