当前位置:   article > 正文

基于ROS搭建简易软件框架实现ROV水下目标跟踪(十二)--数据集制作_ros rov

ros rov

        项目链接:GitHub - cabinx/cabin_auv_ws: A simple demo for rov/auv underwater object tracking based on ros

        在目标跟踪时,摄像头提供实时的图片信息,我们需要识别出图片目标,且输出目标在图片中的位置,为后续的控制提供条件。在demo中,我是借助darknet_ros实现这一目标。当然,这一模块可以替换成性能更优秀的识别算法。

        darknet_ros为yolov3在ros下的一个工具包(https://github.com/leggedrobotics/darknet_ros)。需要对yolov3的使用有所了解(YOLO: Real-Time Object Detection)。例程我就不介绍了,可以在网上搜索。在此主要基于demo测试介绍我个人的使用情况,主要包括摄像头驱动、数据集制作、模型训练、模型部署。

        本文主要介绍用于yolo训练的数据集的制作。

1、数据包录制

        当摄像头能正常工作时,我们就可以录制视频数据。ros下采集数据十分方便,鉴于我们只需要图片数据,由上文说明,图片数据的topic为/usb_cam/image_raw,则利用rosbag record指令:

rosbag record /usb_cam/image_raw -O 001

        结果我们在当前路径获得录制好的视频数据包001.bag。我们可以依次录制002、003等等的数据包。

2、视频数据包提取图片

        安装图片处理依赖包:

  1. sudo apt-get install mjpegtools
  2. sudo apt-get install ffmpeg

        依旧借助image_view(image_view - ROS Wiki)工具:

rosrun image_view extract_images _sec_per_frame:=0.01 image:=<IMAGETOPICINBAGFILE>

        其中,IMAGETOICINBAGFILE为图片topic。图像数据保存在当前目录下。以001.bag为例,需要依次新建三个终端执行:

  1. roscore
  2. rosrun image_view extract_images _sec_per_frame:=0.01 image:=/usb_cam/image_view
  3. rosbag play 001.bag

3、批量修改文件名

        借助rename指令:

rename -v ‘s/frame/1_/*.jpg

        结果将使得提取出来的文件夹中的图片文件名由frame0000.jpg、frame0001.jpg修改为1_0000.jpg,1_0001.jpg。

4、图片标注

        图片标注的工具非常多,在此我只介绍一下我所使用的labelImg(【wpsshop博客】

推荐阅读
相关标签