DOI: 10. 3969 / j. issn. 1009-9492. 2021. 06. 001
许冠,詹金峰. 基于YOLOv3改进的手势检测算法[J] . 机电工程技术,2021,50(06):1-5.
作者简介:
许冠(1963-),男,广东廉江人,大学本科,高级工程师,研究领域为机械设计与制造,已发表论文20多篇。
基金项目:
广东省科学技术基金项目(编号:2017A040405025)
基于YOLOv3 改进的手势检测算法*
许冠1,詹金峰2
(1. 佛山市南海中南机械有限公司, 广东佛山528247;
2. 华南理工大学自动化科学与工程学院, 广州510640)
摘要:针对传统手势检测算法在第一视角多手势场景下检测精度和准确率不高的问题,提出了一种基于YOLOv3网络框架改进的手势检测算法。利用Kmeans++聚类算法代替Kmeans对训练集的尺度进行重新聚类,得到更符合手势分布的先验点;针对检测过程中正负样本极不均衡的问题改进YOLOv3的损失函数,引入Focal Loss损失函数使得网络更加关注难训练的样本;改进非极大值抑制算法(NMS),通过对候选框进行加权得到更接近Ground Truth的结果,并通过判断候选框之间的位置关系去除冗余候选框。在Egohands数据集中实验表明,提出的算法相对于原本的YOLOv3算法在准确率和mAP上有较大的提升。
关键词:YOLOv3;Kmeans++;Focal Loss;改进NMS;Egohands
中图分类号:TP391.41 文献标志码:A
文章编号:1009-9492 ( 2021 ) 06-0001-05
Improved Gesture Detection Algorithm Based on YOLOv3
Xu Guan1,Zhan Jinfeng2
(1. Foshan Nanhai Zhongnan Machinery Co., Ltd., Foshan, Guangdong 528247, China;
2. School of Automation, South China University of Technology, Guangzhou 510640, China)
Abstract: Aiming at the problem of low detection accuracy of traditional gesture detection algorithms in the first-view multi-gesture scene, an improved gesture detection algorithm based on the YOLOv3 network framework was proposed. The Kmeans++ clustering algorithm was used instead of Kmeans to re-cluster the scale of the training set to obtain a priori point that was more in line with the gesture distribution. To improve the loss function of YOLOv3 for the problem of extremely imbalanced positive and negative samples in the detection process, Focal Loss loss function was introduced to made the network paid more attention to samples difficult to train. The non-maximum suppression algorithm was improved, a result closer to Ground Truth was got by weighting the candidate bounding boxes, and redundant candidates were removed by judging the positional relationship between the candidate bounding boxes. Experiments in the Egohands data set show that the algorithm proposed has a greater improvement in accuracy and mAP compared to the original YOLOv3 algorithm.
Key words: YOLOv3; Kmeans++; Focal Loss; improved NMS; Egohands
0 引言
手势检测的目标是检测出图像中手势所在的位置,并用矩形框、椭圆框等加以标示。手势检测作为手势识别、手势估计的基础任务,在人机交互等领域中有着诸多应用。为了将其应用在实际场景中,手势检测相对其他目标检测任务要求更高的检测精度以及检测准确率。
手势检测是目标检测的特例化,因此一般的手势检测方法是在通用的目标检测算法中融合手势特征得以实现。目前的手势检测方法主要包括基于肤色模型的检测方法、基于运动的检测方法、基于分割的检测方法、基于深度学习的检测方法等[1]。
基于肤色模型的检测方法是一种传统且高效的方法,一般将手势图像从RGB 空间转化到YCrCb 空间、HSV空间、YUV空间等,因为在这些空间内肤色有着很好的规律,可以从其他颜色背景中完整地提取出来。H F Hashem等[2]提出了一种自适应的HSV肤色模型,可以根据不同的光照条件动态调整阈值。S Kolkur等[3]提出融合多个肤色空间进行肤色提取的方法,相比基于单个肤色空间的方法有更高的准确率。
基于运动的检测方法假设被检测物体相对于背景是运动的,通过对视频帧中连续的两帧或者多帧进行分析,从而提取出目标。其主要方法有光流法、帧间差分法和背景差分法。
基于分割的检测方法通过对图像进行像素级的分类,能够得到比一般检测方法更加精确的结果。Grab cut[4]结合图论理论对图像进行分析,将每个像素点视为带权无向图的顶点,进而将原问题转化成图的顶点划分问题。SLIC[5] 基于超像素进行图像分割,能通过对图像的颜色、亮度、纹理等特征进行聚类以形成超像素块,然后进行迭代聚合。FCN[6]开创了利用深度学习进行图像分割的先河,其摒弃了传统网络的全连接层,并创造性地使用了反卷积模块。
基于深度学习的检测方法具有不需要人工提取特征、检测准确率高等特点,是手势检测的发展趋势。RCNN[7]的提出让基于深度学习的检测方法成为目标检测的研究主流方向,其通过对图像进行密集采样,将目标检测问题转化成了图像分类问题。之后Fast R-CNN[8]以及Faster R-CNN[9]对原始的R-CNN 进行了一系列改进,获得了突破性的性能提升。但是基于两阶段的R-CNN系列网络结构复杂,不能端到端的训练,且实时性较差。因此基于一阶段的检测方法,例如YOLO[10]系列检测算法凭借其网络架构简单高效、端到端训练、拓展性强,且相对于多阶段网络实时性能好等优点,更加适合应用在实际检测的任务中。马巧梅等[11]将YOLOv3应用到车牌检测中,在复杂的场景中取得了更好的检测效果。郝帅等[12]利用改进的YOLOv3算法来检测输电线路的故障,通过引入注意力机制等方法提高了检测准确率。
YOLOv3[13]在YOLOv2 的基础上将骨架网络由Darknet-19更改成了Darknet-53,加深了网络的深度,同时融入了残差单元,然后将Darknet-53的中间层作为不同感受野的特征进行融合,输出3个不同尺度的特征图,接着直接在特征图上进行损失计算。其还将分类输出函数Softmax替换为Logistic Classifier,减小计算量的同时提升了检测效果。通过这些改进,YOLOv3在各大手势检测数据集中获得了非常好的准确率和检测速度。





结束语
本文针对手势检测对于检测准确度、检测准确率以及实时性要求较高的特点,选取了YOLOv3来进行手势检测。由于原始的YOLOv3无法满足手势检测的要求,本文从3个方面进行了改进:用Kmeans++进行尺度重聚类,使得网络初始Prior更贴合数据分布;引入FocalLoss损失函数代替了原本的交叉熵置信度损失函数,改善网络的训练过程;用加权NMS替换了传统的NMS,并加入位置判别的去冗余模块,提高检测框与GroundTruth的贴合程度并有效地去除冗余候选框。通过实验验证,本文提出的算法相较于原算法,在检测率以及mAP上都取得了较大的提升。