01
背景及预期目标
在无人机航拍领域中,为了实现追踪拍摄,目标检测和追踪必不可少,因此,目标检测和追踪技术是无人机航拍领域的重要研究方向。在本项目中,我们将yolov3目标检测方法和kcf目标跟踪方法相结合,预期实现利用安装在无人机上的相机采集的视频图像作为输入,控制无人机对图像范围内的地面目标进行检测和跟踪。
YOLO(You Only Look Once, YOLO)是一个端到端的单阶段目标检测算法,不需要预先提取region proposal(RCNN目标检测系列),通过一个网络就可以输出:类别,置信度,坐标位置,检测速度很快,不过,定位精度相对低些,特别是密集型小目标。本项目中,我们使用YOLOv3,并在COCO数据集上进行训练(要达到更好的检测效果可以根据自己的需要训练自己的数据集)。
在目标跟踪方面,主要有判别类和生成类两种跟踪方式。核相关滤波器(Kernelized Correlation Filters, KCF)是一种典型的判别类跟踪方法。初始化KCF时,由目标区域生成循环矩阵,利用循环矩阵在傅里叶域可对角化的性质,将空域上的卷积运算转化为频域上的相关运算,以此持续修正跟踪框位置。该方法巧妙利用了循环矩阵对角化特性,大幅降低了计算量,提高了跟踪的速度。
将检测算法融入跟踪框架时,将检测得到的目标框信息(包括目标的类别,位置,尺寸及置信度等信息)传送给跟踪部分,在本项目中我们设置检测成功的阈值,即当检测目标的类别正确且置信度大于某一阈值时,认为检测结果可信,由当前帧转入跟踪状态。
02系统框图
系统主要在嵌入式平台上进行实现,因此采用 Linux 操作系统,为了便于后续对系统的功能进行扩展,目前在 ROS 框架下进行系统开发。主要分为数据读入、数据处理两部分和数据输出三部分,在数据读入部分,进行图像的预处理,主要将图像放缩成固定大小,进行基础的滤波去噪,之后将图像存入自定义消息中,并发布出去,同时,通过加载训练好的网络,为目标识别做准备。数据处理部分主要对图像中的目标进行检测和跟踪,并且在某些情况下重新初始化滤波器参数,并完成对影响数据的更新,并将结果发布出去,最后通过数据输出部分记录结果信息。根据所需流程,总结步骤如下:
通过web_cam从摄像头读取视频图像,
并发布话题/camera/rgb/image_publisher;
检测是否接收到图像话题,若是,则转下一步;
对场景内的目标进行实时检测,将检测得到的目标位置信息通过节点darknet_ros发布出去,通过事先的样本模型训练,可以只对特定目标物体进行检测;
订阅darknet_ros话题,KCF通过YOLO检测得到的目标框位置信息进行初始化,在后续过程中目标的模型不断更新,计算出目标相对位置的偏差x、y发送给无人机飞控持续对目标进行跟踪;
03、缺陷及未来规划
1) 对视野内丢失目标的情况没有很好的解决方法,导致无人机在丢失目标后控制出现紊乱;
2) 目标检测结果不稳定,可以通过后续训练自己的数据集得到极大改善;
3) 检测结果画面延迟,帧率有待提高。
未来规划:
1) 进一步优化检测算法,处理目标丢失的问题和应对方法。
2) 未来结合多无人机协同,实现协同的目标检测和跟踪。
测试视频分享给大家~
无人机追踪地面行人+空中物体
技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把无人系统行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在无人机行业,就请关注我们的公众号,我们将持续发布无人系统行业最有价值的信息和技术。