YOLO V3对冰壶的检测和跟踪

Posted B612灯夫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YOLO V3对冰壶的检测和跟踪相关的知识,希望对你有一定的参考价值。

公司最近在做冬奥会相关的创意竞赛,刚好自己再研究机器学习相关的知识,便想着是不是可以做点什么。

翻了一下互联网,发现并没有什么特别的东西,大部分都已经有人做过或者有类似的内容,不过偶然发现冰壶这类运动倒是鲜有涉及,因而想做一套相关的识别和分析。

言归正传

开发环境

显卡:1050Ti

CPU:I7 9700k

内存:16G

软件:VS2015 Premiere 

数据标注和整理

百度谷歌走了一圈,并没有发现什么数据集可以使用,有一哥们做过类似的,但是联系不到人,没办法,自己动手丰衣足食。

从网上下载了一段冰壶比赛视频,通过处理选择了800张图片进行手动标注。标注工具是Yolo-markGithub地址标注过程比较枯燥,大概花了一整个上午的时间,标注完成后拷贝到yolo v3的训练目录即可。

Yolov3训练

本次训练使用的是tiny yolo v3 标签一共有2种冰壶(红色和黄色)

采用的cfg为tiny-yolo;具体参数以及yolo的编译、配置、生成过程不是本次重点,便不再赘述

用的的是c++版本

训练过程中收敛速度还是可以的(30000次迭代)

冰壶识别测试

模型训练好之后,配合yolo生成的应用程序,一行代码即可进行测试和输出;

直接使用视频进行测试,效果如下,帧率可以做到60+实时性良好;在部分遮挡的情况下,仍然可以有很高的识别率

换用其他的视频,识别率略下降,个人考虑是因为数据集的问题,通过扩大数据集以及对数据集进行缩放、裁剪、遮挡等方式进行扩充,识别效率会更好

冰壶的追踪

追踪有多种方式:

1、通过颜色/特征进行追踪,思路就是在识别到之后传入到追踪模块在进行追踪,这样会有些问题相通的目标会混淆,不能在多个相同标签的情况下进行追踪

2、使用Opencv自带的追踪器进行追踪参考 OpenCV自带了各种追踪器,一共有八种如下此处参考解析,该文章进行了介绍和解析

BOOSTING Tracker:速度较慢,并且表现不好
MIL Tracker:比上一个追踪器更精确,但是失败率比较高。(最低支持OpenCV 3.0.0)
KCF Tracker:比BOOSTING和MIL都快,但是在有遮挡的情况下表现不佳。(最低支持OpenCV 3.1.0)
CSRT Tracker:比KCF稍精确,但速度不如后者。(最低支持OpenCV 3.4.2)
MedianFlow Tracker:在报错方面表现得很好,但是对于快速跳动或快速移动的物体,模型会失效。(最低支持OpenCV 3.0.0)
TLD Tracker:我不确定是不是OpenCV和TLD有什么不兼容的问题,但是TLD的误报非常多,所以不推荐。(最低支持OpenCV 3.0.0
MOSSE Tracker:速度真心快,但是不如CSRT和KCF的准确率那么高,如果追求速度选它准没错。(最低支持OpenCV 3.4.1)
GOTURN Tracker:这是OpenCV中唯一一深度学习为基础的目标检测器。它需要额外的模型才能运行,本文不详细讲解。(最低支持OpenCV 3.2.0)

3、通过kalman卡尔曼进行追踪,卡尔曼滤波器包括两个主要过程:预估与校正。

预估过程:主要是利用时间更新方程建立对当前状态的先验估计,及时向前推算当前状态变量和误差协方差估计的值,以便为下一个时间状态构造先验估计值;

校正过程:负责反馈,利用测量更新方程在预估过程的先验估计值及当前测量变量的基础上建立起对当前状态的改进的后验估计。

这样的一个过程,我们称之为预估-校正过程,对应的这种估计算法称为预估-校正算法。

 

写在最后

分享一下训练好的权重模型,拿走不谢

为了联盟

 

 

 

以上是关于YOLO V3对冰壶的检测和跟踪的主要内容,如果未能解决你的问题,请参考以下文章

PyTorch深度学习实战 | 基于YOLO V3的安全帽佩戴检测

轻量级深度学习框架--YOLO V3

YOLOPose:除了目标检测,YOLO还能不花代价地估计人体姿态,对实时性能有要求必看!

图像工程——目标检测与目标跟踪

目标检测yolo系列-yolo v3(2018年)

教程 | 从零开始PyTorch项目:YOLO v3目标检测实现(下)