- 粉丝福利送书:《机器学习入门:基于数学原理的Python实战》
- 点赞 收藏 ⭐留言 即可参与抽奖送书
- 本周五(9月10日)晚上20:00将会在【点赞区和评论区】抽一位粉丝送这本书~
- 详情请看第六点的介绍嗷~✨
由于是人脸识别,我们在打算使用OpenCV
,通过进行一些的cv操作,例如将背景和人进行一个减法操作的运算,再进行高斯滤波降噪点,以及进行形态学的腐蚀与膨胀操作,但是这种算法只能应用于简单背景下的单人检测。无法应对多人情况下的检测识别。于是进入第二阶段。
在这个阶段,我们采取了YOLOv3 + OpenCV
的方案,YOLO系列算法是目标检测领域的佼佼者。在YOLOv3强大的网络下,我们的人脸识别准确率达到了一个新的高度。当然由于YOLOv3的权重文件高达两百兆,无法实现多端部署(移动端等),于是我们寻求了更轻的网络结构—YOLOv5s,开启了我们的第三阶段。
麻雀虽小,五脏俱全。虽然YOLOv5s
权重文件的大小仅有YOLOv3的二十分之一,但是在速度上却提高了两个量级,准确度的平均值比YOLOv3高出了6.3%。为了进一步扩大YOLOv5的长处,我们打算改进YOLOv5s的网络结构,将YOLOv5中的backbone结构更换成更轻量的结构,以为后续的多端协同操作打下基础。
在这个阶段,我们将YOLOv5s
中的backbone更换成MoblieNetV3
网络结构,我们的改进的模型,只有五兆,但是准确率降低了很多,在写这篇文章的时候,还没有很好的解决方案,还在研究当中。
目标在高速移动情况下的可能会失去检测,被堆叠情况下也可能会没被检测到。
由于在人脸堆叠的情况下,YOLOv3
中的NMS
算法对于目标堆叠状况下无法很好的进行检测,这也是我们更换YOLOv5
的原因之一。
在YOLOv5
的输出端
中采用其中的GIOU_Loss
做Bounding box
的损失函数。
针对很多目标框的筛选,通常需要NMS
操作。因为CIOU_Loss
中包含影响因子v,涉及groudtruth
的信息,而测试推理时,是没有groundtruth
的。所以Yolov4
在DIOU_Loss
的基础上采用DIOU_nms
的方式,而YOLOv5
中采用加权nms
的方式。这种方式能更好地识别出目标。
数据集的制作,在各大网络上的现成数据集无法满足我们项目的需求。
数据集方面,我们相对增强了堆叠状况
的数据以及遮掩情况
下的数据集。使得模型能够更好的迭代更新。
使用爬虫
爬取网络的人脸图片,使用labelImg
进行数据的标注,由于人工标注有限,我们总共标注了一千张左右的人脸图片,但是通过了YOLOv5
的数据增强,例如上下翻滚,多图拼接等,使得了我们的数据集是原来的四倍。
从YOLOv3到YOLOv5的过程并不是一蹴而就的,我们首先从YOLOv3转到YOLOv4,再转到YOLOv5。由于v4的网络结构与v3有部分的不同。而v5与前两代也不同,在这里就直接说一下v3到v5上的部分算法结构。
【Darknet-53】
Yolo V3 采用了 Darknet-53 的网络结构(含有 5 组残差模块)来提取特征。其网络结构采用了横纵交叉结构,并采用了连串的 3×3 和 1×1 卷积。
其中,3×3 的卷积增加通道数,而 1×1 的卷积在于压缩 3×3 卷积后的特征表示,同时 Darknet-53 为了防止池化带来的低级特征
的丢失,采用了全卷积层
,并且引入了 residual残差
结构。
这意味着网络结构可以更好地利用 GPU
,从而使其评估效率更高、速度更快。Darknet-53 作为特征提取层,最终每个预测任务得到的特征大小为[3×(4+1+C)]
。
每个grid cell
预测 3
个预测框,4
代表 4
是边界框中心坐标bx
,by
,以及边界框 bw
,bh
,1
代表预测值,C
代表预测类别。最终YoloV3
可以获取(16×10+32×20+64×40)
个特征向量。
【网络结构】
模型结构如下图:
从测试结果我们可以看出这个网络的检测结果的问题:
当检测目标处于不堆叠
且非黑色肤种
的时候,就有非常高的准确率。
当人脸在被遮掩的情况,也有很不错的表现。
Mosaic数据增强
的方式,通过随机缩放
,随机剪裁
,随机排布
的方式进行拼接,对于小目标检测的效果有明显提高。初始锚框
的基础上输出预测框,进而与真实框进行对比,计算两者差距,再反向传播,迭代网络参数
。V5对于V3、V4再这方面并不是固定的,而是将这个功能嵌入到了代码当中,每次训练中,都会自适应计算不同训练集中最佳的锚框值。缩放系数
,原始图片的长宽都乘以最小的缩放系数,得到原本需要填充的高度。再对32
(V5的网络经过5
次下采样,而2的5次方=32。所以至少要去掉32的倍数) 取余,得到像素点,再除以2,即得到图片高度两端需要填充的数值通过这种简单的改进,推理速度得到了37%的提升Focus结构
V3、V4中并没有Focus结构,Focus结构是V5模型的一个创新点。其中关键点就是进行切片操作。比如下图的切片操作。
CSP结构
Yolov4网络结构中,借鉴了CSPNet
的设计思路,在主干网络中设计了CSP
结构。v5与v4不同点在于,v4中只有主干网络使用了CSP
结构。而v5中设计了两种CSP
结构,以Yolov5s网络为例,CSP1_X
结构应用于Backbone
主干网络,另一种CSP2_X
结构则应用于Neck
中。
与yolov3的残差结构对比的话。CSPnet结构并不算复杂,就是将原来的残差块的堆叠进行了一个拆分,拆成左右两部分:
Yolov5现在的Neck和Yolov4中一样,都采用FPN+PAN的结构,但在Yolov5刚出来时,只使用了FPN结构,后面才增加了PAN结构,此外网络中其他部分也进行了调整。
PANet结构
上图为原始的PANet的结构,可以看出来其具有一个非常重要的特点就是特征的反复提取,在(a)里面是传统的特征金字塔结构,在完成特征金字塔从下到上的特征提取后,还需要实现(b)中从上到下的特征提取。
迭代训练完三百次后的模型结果还是很客观的,mAP不断向1收敛,我们为了防止过拟合,选择了停止训练,点到为止。
【模型优化】
介于YoloV5的轻便小巧的特点,我们的优化方案是将V5小巧的优点继续发扬,将原生V5中的网络结构替换成MoblieNetV3。在mobilenet中,会有深度可分离卷积(depthwise separable convolution)
由depthwise(DW)和pointwise(PW)两个部分结合起来,用来提取特征feature map。相比常规的卷积操作,其参数数量和运算成本比较低。
深度可分离卷积主要分为两个过程
逐通道卷积(Depthwise Convolution)
DC的一个卷积核负责一个通道,一个通道只被一个卷积核卷积,这个过程产生的feature map
通道数和输入的通道数完全一样。一张5×5
像素、三通道彩色输入图片(shape为5×5×3)
,DC首先经过第一次卷积运算,DW完全是在二维平面内进行。卷积核的数量与上一层的通道数相同(通道和卷积核一一对应)。所以一个三通道的图像经过运算后生成了3个Feature map
。
DC完成后的Feature map
数量与输入层的通道数相同,但无法扩展Feature map
。而且这种运算对输入层的每个通道独立进行卷积运算,并没有有效的利用不同通道在相同空间位置上的feature信息
。因此需要Pointwise Convolution
来将这些Feature map
进行组合生成新的Feature Map
。
逐点卷积(Pointwise Convolution)
PC的运算与常规卷积运算非常相似,它的卷积核的尺寸为 1×1×M
,M为上一层的通道数。所以这里的卷积运算会将上一步的map
在深度方向上进行加权组合,生成新的Feature map
。有几个卷积核就有几个输出Feature map
。经过PC之后,同样输出了4张Feature map
,与常规卷积的输出维度相同。
我们可以看出这个权重文件是非常小的
我们从v3模型的216M,到v5模型的16M,再到优化后的5M大小
[1] 张麒麟,林清平,肖蕾.改进YOLOv5的航拍图像识别算法[J].长江信息通信,2021,34(03):73-76.
[2] 江大白. 深入浅出Yolo系列之Yolov5核心基础知识完整讲解.2020
[3] 姜文志,李炳臻,顾佼佼,刘克.基于改进YOLO V3的舰船目标检测算法[J/OL].电光与控制:1-5[2021-04-21].http://kns.cnki.net/kcms/detail/41.1227.TN.20210322.1258.003.html.
[4] 王莉,何牧天,徐硕,袁天,赵天翊,刘建飞.基于YOLOv5s网络的垃圾分类和检测[J].包装工程,2021,42(08):50-56.
[5] 春枫琰玉. mobilenet系列之又一新成员—mobilenet-v3. CSDN.https://arxiv.org/abs/1905.02244
点赞
或评论
,截至本周五(9月10日)在点赞区和评论区
抽一位朋友,送这本《机器学习入门:基于数学原理的Python实战》书籍!!!
理论性与实用性兼备,既可作为初学者的入门书籍,也可作为求职者的面试宝典,更可作为职场人士转岗的实用手册。
《机器学习入门:基于数学原理的Python实战》
本书适合需要全面学习机器学习算法的初学者、希望掌握机器学习算法数学理论的程序员、想转行从事机器学习算法的专业人员、对机器学习算法兴趣浓厚的人员、专业培训机构学员和希望提高Python编程水平的程序员。
【作者简介】
- 戴璞微,中国民航大学硕士,CSDN博客专家。曾获得全国大学生数学竞赛国家一等奖、北美数学建模二等奖,参与国家自然科学基金项目1项。对计算机视觉、机器学习和深度学习有深入研究。
- 潘斌,浙江大学应用数学系博士,现任辽宁石油化工大学理学院副院长。2018年入选辽宁省“兴辽英才计划”青年拔尖人才,2016年主持国家自然科学基金青年基金项目1项;2015年主持辽宁省自然科学基金项目1项;2016年主持浙江大学CAD&CG国家重点实验室开放课题2项。近年来,指导本科生获全国大学生数学建模竞赛国家一等奖。
【书籍优势】
1.与周志华编写的《机器学习》相比,本书多了对算法的数学原理详细严谨的推导。
2.与李锐翻译的《机器学习实战》相比,本书多了用面向对象思想将算法模块化,并且书中代码在 Python 3
环境下运行。
3.为了照顾初学者,本书补充了全书涉及的高等数学、线性代数、概率论与数理统计、Jessen不等式等数学基础知识。
小生凡一,期待你的关注。