赞
踩
项目链接: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、视频数据包提取图片
安装图片处理依赖包:
- sudo apt-get install mjpegtools
- 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为例,需要依次新建三个终端执行:
- roscore
- rosrun image_view extract_images _sec_per_frame:=0.01 image:=/usb_cam/image_view
- 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博客】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。