TX2安装darknet_ros
作者:互联网
概述
这是为相机图像中的对象检测而开发的 ROS 包。你只看一次 (YOLO) 是最先进的实时对象检测系统。
基于Pascal VOC 2012 数据集,YOLO 可以检测出 20 个 Pascal 对象类:
- 人
- 鸟, 猫, 牛, 狗, 马, 羊
- 飞机, 自行车, 船, 公共汽车, 汽车, 摩托车, 火车
- 瓶子,椅子,餐桌,盆栽,沙发,电视/显示器
基于COCO数据集,YOLO 可以检测出 80 个 COCO 对象类:
- 人
- 自行车, 汽车, 摩托车, 飞机, 公共汽车, 火车, 卡车, 船
- 红绿灯, 消防栓, 停车标志, 停车计时器, 长凳
- 猫, 狗, 马, 羊, 牛, 象, 熊, 斑马, 长颈鹿
- 背包, 雨伞, 手提包, 领带, 手提箱, 飞盘, 滑雪板, 雪板, 运动球, 风筝, 棒球棒, 棒球手套, 滑板, 冲浪板, 网球拍
- 瓶子, 酒杯, 杯子, 叉子, 刀, 勺子, 碗
- 香蕉,苹果,三明治,橙色,西兰花,胡萝卜,热狗,比萨,甜甜圈,蛋糕
- 椅子, 沙发, 盆栽, 床, 餐桌, 厕所, tvmonitor, 笔记本电脑, 老鼠, 远程, 键盘, 手机, 微波, 烤箱, 烤面包机, 水槽, 冰箱, 书, 时钟, 花瓶, 剪刀, 泰迪熊, 吹风机, 牙刷
要安装 darknet_ros,请使用 SSH 将最新版本(请参阅如何设置 SSH 密钥)从该存储库克隆到您的 catkin 工作区,并使用 ROS 编译包。
cd catkin_workspace/src
git clone --recursive git@github.com:leggedrobotics/darknet_ros.git
cd ../
为了最大限度地提高性能,请确保在发布模式下构建。您可以通过设置指定构建类型
catkin_make -DCMAKE_BUILD_TYPE=Release
或使用Catkin 命令行工具
catkin build darknet_ros -DCMAKE_BUILD_TYPE=Release
因为NVIDIA的32.3.1.img文件把opencv文件命名成了opencv4
所以只需修改上述路径中的cv_bridgeconfig.cmke文件,把说有的include/opencv改成include/opencv4
CPU 上的暗网速度很快(在 Intel Core i7-6700HQ CPU @ 2.60GHz × 8 上大约需要 1.5 秒),但在 GPU 上快 500 倍!你必须有一个 Nvidia GPU 并且你必须安装 CUDA。CMakeLists.txt 文件会自动检测您是否安装了 CUDA。CUDA 是由 Nvidia 创建的并行计算平台和应用程序编程接口 (API) 模型。如果您的系统上没有 CUDA,构建过程将切换到 YOLO 的 CPU 版本。如果您使用 CUDA 进行编译,您可能会收到以下构建错误:
nvcc fatal : Unsupported gpu architecture 'compute_61'.
这意味着您需要检查 GPU 的计算能力(版本)。您可以在此处找到 CUDA 中支持的 GPU 列表:CUDA - WIKIPEDIA。只需找到您的 GPU 的计算能力并将其添加到 darknet_ros/CMakeLists.txt 中。只需添加类似的行
-O3 -gencode arch=compute_62,code=sm_62
下载权重
yolo-voc.weights 和 tiny-yolo-voc.weights 会自动下载到 CMakeLists.txt 文件中。如果需要再次下载,请进入 weights 文件夹,从 COCO 数据集中下载两个预训练的权重:
cd catkin_workspace/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
VOC数据集中的权重可以在这里找到:
wget http://pjreddie.com/media/files/yolov2-voc.weights
wget http://pjreddie.com/media/files/yolov2-tiny-voc.weights
YOLO v3 的预训练权重可以在这里找到:
wget http://pjreddie.com/media/files/yolov3-tiny.weights
wget http://pjreddie.com/media/files/yolov3.weights
这里报告了来自不同数据集的更多预训练权重。
使用自己的检测对象
为了使用您自己的检测对象,您需要在目录中提供权重和 cfg 文件:
catkin_workspace/src/darknet_ros/darknet_ros/yolo_network_config/weights/
catkin_workspace/src/darknet_ros/darknet_ros/yolo_network_config/cfg/
此外,您需要为 ROS 创建配置文件,在其中定义检测对象的名称。您需要将其包括在内:
catkin_workspace/src/darknet_ros/darknet_ros/config/
然后在启动文件中,您必须在该行中指向您的新配置文件:
<rosparam command="load" ns="darknet_ros" file="$(find darknet_ros)/config/your_config_file.yaml"/>
单元测试
使用Catkin 命令行工具运行单元测试
catkin build darknet_ros --no-deps --verbose --catkin-make-args run_tests
您将看到上面的图像弹出。
基本用法
为了让 YOLO ROS: Real-Time Object Detection for ROS 与您的机器人一起运行,您需要调整一些参数。如果复制并调整您需要从darknet_ros
包中更改的所有参数文件,这是最简单的。这些具体是文件夹中的参数文件config
和启动文件launch
。
节点
节点:darknet_ros
这是主要的 YOLO ROS: Real-Time Object Detection for ROS 节点。它使用相机测量来检测帧中预先学习的对象。
ROS相关参数
您可以更改内部发布者、订阅者和操作的名称和其他参数darknet_ros/config/ros.yaml
。
订阅的主题
-
/camera_reading
([sensor_msgs/图像])相机测量。
发表的主题
-
object_detector
([std_msgs::Int8])发布检测到的对象的数量。
-
bounding_boxes
([darknet_ros_msgs::BoundingBoxes])发布边界框数组,以像素坐标提供边界框的位置和大小信息。
-
detection_image
([sensor_msgs::Image])发布包含边界框的检测图像的图像。
行动
-
camera_reading
([sensor_msgs::Image])发送带有图像的动作,结果是边界框数组。
-
subscribers: camera_reading: topic: /csi_cam_0/image_raw queue_size: 1
检测相关参数
您可以通过添加一个类似于 的新配置文件来更改与检测相关的参数darknet_ros/config/yolo.yaml
。
-
image_view/enable_opencv
(布尔)启用或禁用检测图像的打开 cv 视图,包括边界框。
-
image_view/wait_key_delay
(整数)等待打开 cv 窗口的键延迟(毫秒)。
-
yolo_model/config_file/name
(细绳)用于检测的网络的 cfg 文件的名称。代码在内部搜索此名称
darknet_ros/yolo_network_config/cfg/
。 -
yolo_model/weight_file/name
(细绳)用于检测的网络权重文件的名称。代码在内部搜索此名称
darknet_ros/yolo_network_config/weights/
。 -
yolo_model/threshold/value
(漂浮)检测算法的阈值。它定义在 0 和 1 之间。
-
yolo_model/detection_classes/names
(字符串数组)里面的 cfg 和 weights 文件使用的网络的检测名称
darknet_ros/yolo_network_config/
。
标签:catkin,darknet,yolo,weights,ros,config,TX2 来源: https://blog.csdn.net/leoFY123/article/details/122381998