Darknet可以对目标对象进行识别,目前可以实现以下80 个目标的识别。也可以训练自己的识别库。目前很多的超市就使用该技术进行称重识别,替代人工选择物品类别。(尝试过连红心柚子与白心柚子都可以分开。但是红心火龙果与白心的区分不开)当然也有很多其地方可以应用到,比如自动驾驶的红绿灯检测,还有行人避让,饮料瓶碾过。
- 人
- 自行车, 汽车, 摩托车, 飞机, 公共汽车, 火车, 卡车, 船
- 红绿灯, 消防栓, 停车标志, 停车计时器, 长凳
- 猫, 狗, 马, 羊, 牛, 象, 熊, 斑马, 长颈鹿
- 背包, 雨伞, 手提包, 领带, 手提箱, 飞盘, 滑雪板, 雪板, 运动球, 风筝, 棒球棒, 棒球手套, 滑板, 冲浪板, 网球拍
- 瓶子, 酒杯, 杯子, 叉子, 刀, 勺子, 碗
- 香蕉,苹果,三明治,橙色,西兰花,胡萝卜,热狗,比萨,甜甜圈,蛋糕
- 椅子, 沙发, 盆栽, 床, 餐桌, 厕所, tvmonitor, 笔记本电脑, 老鼠, 远程, 键盘, 手机, 微波, 烤箱, 烤面包机, 水槽, 冰箱, 书, 时钟, 花瓶, 剪刀, 泰迪熊, 吹风机, 牙刷
第一步下载代码并编译
cd ~/catkin_ws/src
git clone --recursive git@github.com:leggedrobotics/darknet_ros.git
cd ../
为了最大限度地提高性能,请确保在release模式下构建。
catkin_make -DCMAKE_BUILD_TYPE=Release
或使用catkin 命令行工具
catkin build darknet_ros -DCMAKE_BUILD_TYPE=Release
我编译时,遇到如下错误,是因为opencv被NVIDIA命名时加了版本号
NVIDIA的32.3.1.img文件把opencv文件夹命名成了opencv4
所以只需修改/opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeconfig.cmake,include/opencv改成include/opencv4
第二步下载权重
自动下载可能比较慢
yolo-voc.weights 和 tiny-yolo-voc.weights 会自动下载到 CMakeLists.txt 文件中。如果需要手动下载(http://pjreddie.com/media/files/yolov2.weights
),我这边也提供了下载好的免费资源
https://download.csdn.net/download/leoFY123/75278493
cd ~/catkin_ws/src/darknet_ros/darknet_ros/yolo_network_config/weights/ wget http://pjreddie.com/media/files/yolov2.weights wget http://pjreddie.com/media/files/yolov2-tiny.weights
get http://pjreddie.com/media/files/yolov3-tiny.weights wget http://pjreddie.com/media/files/yolov3.weights
第三步关链数据源并运行
先打开一下带有image_raw的节点,我这边用的是jetson_csi_cam.launch
TX2安装jetson_csi_cam_leoFY123的博客-CSDN博客
roslaunch jetson_csi_cam jetson_csi_cam.launch
新开一个终端查看rostopic list
更改darknet_ros/config/ros.yaml内的topic信息
vim ~/catkin_sw/src/darknet_ros/config/ros.yaml
更改完运行
roslaunch darknet_ros darknet_ros.launch