Thanks to visit codestin.com
Credit goes to github.com

Skip to content

yuanxiaoming8899/darknet_ros

 
 

Repository files navigation

YOLO ROS:ROS 实时目标检测

概述

这是一个为相机图像中的对象检测而开发的 ROS 包。 You Only Look Once (YOLO) 是最先进的实时目标检测系统。在以下 ROS 包中,您可以在 GPU 和 CPU 上使用 YOLO (V3)。卷积神经网络的预训练模型能够检测预训练的类,包括 VOC 和 COCO 的数据集,或者您也可以使用自己的检测对象创建网络。有关 YOLO、Darknet、可用训练数据和训练 YOLO 的更多信息,请参阅以下链接:YOLO:实时对象检测

YOLO 软件包已在ROS NoeticUbuntu 20.04下进行了测试。注意:我们还提供在ROS MelodicROS FoxyROS2下工作的分支。

这是研究代码,预计它会经常更改,并且否认对特定目的的任何适用性。

作者:Marko Bjelonic[email protected]

隶属关系:苏黎世联邦理工学院机器人系统实验室

Darknet Ros 示例:检测图像 Darknet Ros 示例:检测图像

基于Pascal VOC 2012 数据集,YOLO 可以检测 20 个 Pascal 对象类别:

  • 鸟、猫、牛、狗、马、羊
  • 飞机、自行车、船、公共汽车、汽车、摩托车、火车
  • 瓶子、椅子、餐桌、盆栽、沙发、电视/显示器

基于COCO数据集,YOLO可以检测80个COCO对象类:

  • 自行车、汽车、摩托车、飞机、公共汽车、火车、卡车、船
  • 交通灯、消防栓、停车标志、停车计时器、长凳
  • 猫、狗、马、羊、牛、象、熊、斑马、长颈鹿
  • 背包, 雨伞, 手提包, 领带, 手提箱, 飞盘, 滑雪板, 滑雪板, 运动球, 风筝, 棒球棒, 棒球手套, 滑板, 冲浪板, 网球拍
  • 瓶子,酒杯,杯子,叉子,刀,勺子,碗
  • 香蕉、苹果、三明治、橙子、西兰花、胡萝卜、热狗、披萨、甜甜圈、蛋糕
  • 椅子、沙发、盆栽、床、餐桌、厕所、电视监视器、笔记本电脑、鼠标、远程、键盘、手机、微波炉、烤箱、烤面包机、水槽、冰箱、书、时钟、花瓶、剪刀、泰迪熊、吹风机、牙刷

引用

该软件中使用的 YOLO 方法在论文中进行了描述:You Only Look Once: Unified, Real-Time ObjectDetection

如果您使用 YOLO V3 for ROS,请在您的出版物中添加以下引用:

M. Bjelonic “YOLO ROS:ROS 实时对象检测”,URL: https: //github.com/leggedrobotics/darknet_ros,2018

@misc{bjelonicYolo2018,
  author = {Marko Bjelonic},
  title = {{YOLO ROS}: Real-Time Object Detection for {ROS}},
  howpublished = {\url{https://github.com/leggedrobotics/darknet_ros}},
  year = {2016--2018},
}

安装

依赖关系

该软件基于机器人操作系统([ROS])构建,需要首先安装。此外,YOLO for ROS 依赖于以下软件:

建筑

构建状态

为了安装 darknet_ros,请使用 SSH(请参阅如何设置 SSH 密钥)将此存储库克隆到您的 catkin 工作区中的最新版本,并使用 ROS 编译该包。

cd catkin_workspace/src
git clone --recursive [email protected]:leggedrobotics/darknet_ros.git
cd ../

为了最大限度地提高性能,请确保在发布模式下构建。您可以通过设置指定构建类型

catkin_make -DCMAKE_BUILD_TYPE=Release

或使用Catkin 命令行工具

catkin build darknet_ros -DCMAKE_BUILD_TYPE=Release

CPU 上的 Darknet 速度很快(在 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 文件中。如果需要再次下载,请进入权重文件夹并从 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:ROS 实时目标检测与您的机器人一起运行,您需要调整一些参数。如果复制并调整包中需要更改的所有参数文件,这是最简单的darknet_ros。这些具体是文件夹中的参数文件config和启动文件launch

节点

节点:darknet_ros

这是主要的 YOLO ROS:ROS 节点的实时对象检测。它使用相机测量来检测帧中预先学习的对象。

ROS相关参数

您可以更改内部发布者、订阅者和操作的名称和其他参数darknet_ros/config/ros.yaml

订阅的主题

  • /camera_reading([传感器消息/图像])

    相机测量。

已发表的主题

  • object_detector([std_msgs::Int8])

    发布检测到的对象的数量。

  • bounding_boxes([darknet_ros_msgs::BoundingBoxes])

    发布边界框数组,以像素坐标形式提供边界框的位置和大小信息。

  • detection_image([sensor_msgs::图像])

    发布包含边界框的检测图像的图像。

行动

  • camera_reading([sensor_msgs::图像])

    发送带有图像的动作,结果是一组边界框。

检测相关参数

您可以通过添加类似于 的新配置文件来更改与检测相关的参数darknet_ros/config/yolo.yaml

  • image_view/enable_opencv(布尔)

    启用或禁用检测图像(包括边界框)的打开 cv 视图。

  • image_view/wait_key_delay(整数)

    打开简历窗口的等待按键延迟(以毫秒为单位)。

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

About

YOLO ROS:ROS 实时目标检测

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 78.9%
  • CMake 21.1%