在2022年举办的北京冬奥会上,非常令人震撼的一个表演名为《闪亮的雪花》。舞台上的孩子们举着和平鸽四处奔跑,脚下闪出十分美丽的雪花特效,形成十分唯美的画面。

孩子们脚底下的特效需要由摄像机拍摄并由目标检测算法计算坐标,传给加特效的算法制作特效。虽然这些都是工业级别的开发,但是我们也可以通过目前比较成熟的一些开源技术开发退阶版本。目前目标检测主要有RCNN系列,YOLO系列,SSD等很多算法,考虑到实时性,本文将以YOLO v5算法为例进行目标检测的介绍。

根据视频资料得知,舞台前的摄像机将录制的画面实时传输给服务器,因此可以得知目标检测的输入是视频流。根据GitHub上yolov5部分源码的解读(yolov5/detect.py以及yolov5/utils/dataloaders.py中的LoadStreams类)可以得知,对视频流进行目标识别实际上是利用了多线程和opencv对每一帧进行目标识别,yolo之所以比其它算法速度快是因为它是单阶段的目标检测,只需要提取一次特征即可。因此,视频目标检测的本质还是对每一帧图片进行目标检测,并进行拼接。

目标检测基于卷积神经网络(CNN),需要识别出目标的位置以及种类。一般的目标检测算法使用VGGNet等CNN模型,yolo使用的是谷歌开发的DarkNet自定义架构,但是其仍然拥有卷积层、池化层等一系列CNN的特征(从v3开始取消了池化层,用卷积层减小特征图)。yolo v1将图片划为7x7的grid,每个grid生成两个bounding box,对这些box进行坐标、置信度等计算,最终通过一系列算法去除置信度低的和冗余的box,划分出我们所看到的“框“。利用卷积层和全连接层来进行识别。在后续版本更新中,取消了全连接层,新增加BN层,多次预测增加精度等等。但是万变不离其宗,它和传统CNN是类似的训练方式。

yolo v5目标检测性能尚可,根据官方数据极限可达每秒140帧,速度非常快,其五个版本的mAP 0.5分别在45.7-68.9,准确率中等偏上。而像RCNN等滑动窗口类似暴力法,虽然消耗时间很长但是精度较高。

为了训练模型,事先需要大量拿着和平鸽的孩子的打上标签,制作为数据集供模型训练。但是,舞台大、舞台上的孩子数量多、十分密集,众多的因素会让检测的精度非常差,因此只能称其为退阶版本。但抛开这种情况,在具体生活中其应用还是非常的广泛,例如马路上车辆行人检测,人脸检测等等。

最后修改:2024 年 02 月 22 日
如果觉得我的文章对你有用,请随意赞赏