TX2安装darknet_ros

概述

这是为相机图像中的对象检测而开发的 ROS 包。你只看一次 (YOLO) 是最先进的实时对象检测系统。

TX2安装darknet_ros

 

TX2安装darknet_ros

基于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

TX2安装darknet_ros

因为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])

    发送带有图像的动作,结果是边界框数组。TX2安装darknet_ros

  • 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/

  • TX2安装darknet_ros


 

上一篇:catkin在centos中的安装


下一篇:C# 系统应用之使用Pancel控件同一窗体切换页面