利用深度学习进行目标测量的算法可分为两类:two-stage和one-stage。two-stage类的算法,是基于Region Proposal的,它包括R-CNN,Fast R-CNN, Faster R-CNN;one-stage类的算法仅仅使用一个CNN网路直接预测不同目标的类别与位置,它包括YOLO系列算法、SSD算法。two-stage类算法精度高,但速率慢,one-stage类算法速度快,但精度不如two-stage。当然了,在它们也在汲取彼此之间的精华,进而提高改进自我。
YOLO(You Only Look Once)凭借虽然时性、不错的精度,在工业应用中发挥着巨大的作用,如无人驾驶、农作物病虫害防治、医学检测等。而且YOLO系列从提出至今早已迭代研制出了15个版本,不断地借鉴新的算法提升己身性能。下面让我们一起来了解YOLO算法吧。
1. YOLO概述
实时物体检查早已成为诸多应用中的一个重要组成部份,如自主汽车、机器人、视频监控和提高现实等各个领域。在各类物体检查算法中,YOLO(You Only Look Once)因其在速率和准确性方面的明显平衡而脱颖而出,能够快速、可靠地辨识图象中的物体。自创立以来,YOLO系列早已经历了多次迭代,每次都是在先前的版本基础上解决局限性并提升性能(见右图)。
图1 YOLO发展年表
2. YOLOv1的基本原理
在介绍YOLO之前先来介绍一下滑动窗口技术。滑动窗口技术就是采用不同大小和比列(宽高比)的窗口在整张图片上以一定的步长进行滑动,然后对这种窗口对应的区域做图象分类,这样就可以实现对整张图片的测量了。
但是这有个致命的缺点,由于测量目标的大小未知,需要设置好多不同规格的窗口去滑动,这样会导致形成极多的无效区域,而且这种区域都须要经过分类器判定,计算量巨大。
YOLO抛开了滑动窗口技术,直接将原始图片分割成SS个互不重合的方块,然后通过频域最后形成SS的特点图,可以觉得特点图的每位元素对应原始图片的一个方块(和视野域挺像的),然后用每位元素来预测这些中心点在该小方格内的目标,这就是YOlO系列算法的质朴思想。
2.1. 设计理念
图2 YOLOv1模型预测示意图
YOLO的CNN网路将输入的图片分割成S*S的网格,然后每位单元格负责去检查这些中心落入其中的目标,最后该单元格会预测B(v1中B为2)个边界框(bounding box)以及边界框的置信度(confidence score)。
备注:这就是YOLO系列的设计范式——逐网格查找;以下是针对v1版本对该范式的详尽剖析。
对里面的话逐条阅读后,会形成以下疑惑:
1)怎么确认单元格是否对应目标?
这是对网路进行训练的结果,可以看作是一个二分类,其结果记为 Pr(object)。假如我们的目标是狗、自行车、汽车,预测单元格cell1对应的目标是狗,则Pr(object)=1;预测单元格cell2不在目标之中,则Pr(object)=0。
2)怎么确认边界框的大小与位置?
边界框的大小与位置可以用4个值来表征: (x, y, w, h) ,其中 (x, y) 是边界框的中心座标,而 w 和 h 是边界框的宽与高。还有一点要注意,中心座标的预测值 (x, y) 是相对于每位单元格左上角座标点的偏斜值,并且单位是单元格大小。而边界框的 w 和 h 预测值是相对于整个图片的宽与高的比列,这样理论上4个元素的大小应当在 [0,1] 范围。如图3,图中边界框可以表征为(0.4, 0.6, 0.4, 0.8)。
图3 网格界定及边界框示意图
3)边界框的置信度是哪些?该如何估算?
所谓置信度虽然包含两个方面,一是这个边界框富含目标的可能性大小,二是这个边界框的准确度。前者就是指边界框对应的单元格是否对应目标,其用Pr(object)表征,值为0和1。边界框的准确度可以用预测框与实际框(ground truth)的IOU(intersection over union,交并比)来表征,记为
因此置信度可以定义为
4)怎么确定富含目标的单元格类别?
对于每一个单元格其还要给出预测出 C个类别概率值,其表征的是由该单元格负责预测的边界框其目标属于各个类别的机率。直白来说,每个单元格只对应一个机率最高的类别(这个在v3及之后做了改变)。但是这种概率值虽然是在各个边界框置信度下的条件机率,即Pr(classi|object)。值得注意的是,不管一个单元格预测多少个边界框,其只预测一组类别概率值,这是Yolov1算法的一个缺点。同时,我们可以估算出各个边界框类别置信度(class-specific confidence scores):
边界框类别置信度表征的是该边界框中目标属于各个类别的可能性大小以及边界框匹配目标的优劣。一般会依照类别置信度使用NMS来过滤网路的预测框。注意和边界框置信度做分辨,边界框置信度是对是否富含目标的表征,边界框类别置信度是对富含的目标类别的表征。
5)总结:
每个单元格须要预测 (B5+C) 个值。如果将输入图片界定为 S×S 网格,那么最终预测值为 S×S×(B5+C) 。yolov1使用的是训练数据是PASCAL VOC数据,对于PASCAL VOC数据,其共有20个类别,如果令 S=7,B=2 ,那么最终的预测结果就是 7×7×30 大小的张量。
2.2. 网络设计
YOLO采用频域网路来提取特点,然后使用全联接层来得到预测值。网络结构参考GooLeNet模型,包含24个频域层和2个全联接层,如图4所示。对于前馈层,主要使用1x1频域来做channle reduction,然后紧随3x3频域。对于前馈层和全联接层,采用Leaky ReLU激活函数:max(x, 0, 1)。但是最后一层却采用线性激活函数。
图4 YOLOv1网路结构示意图
可以见到网路的最后输出为 7×7×30 大小的张量。这和上面的讨论是一致的。这个张量所代表的具体含意如图5所示。对于每一个单元格,前20个元素是类别概率值,然后2个元素是边界框置信度,两者相加可以得到类别置信度,最后8个元素是边界框的 (x, y, w, h) 。
大家可能会倍感奇怪,对于边界框为何把置信度 c 和 (x, y, w, h) 都分开排列,而不是根据 (x, y, w, h, c) 这样排列,其实纯粹是为了估算便捷,因为实际上这30个元素都是对应一个单元格,其排列是可以任意的。但是分离排布,可以便捷地提取每一个部份。这里来解释一下,首先网路的预测值是一个二维张量 P ,其shape为 [batch,7×7×30] 。
采用切块,那么 P[:,0:7720] 就是类别机率部份,而P[:,7720:77(20+2)] 是置信度部份,最后剩余部份 P[:,77(20+2):] 是边界框的预测结果。这样,提取每位部份是十分便捷的,这会方面旁边的训练及预测时的估算。
图5 预测张量的解析
3. 目标测量评价指标(mAP)
AP(Average-Precision),平均精度,是主流的目标测量模型的评价指标,通常来说一个越好的分类器,AP值越高。mAP(mean Average Precision)是多个类别AP的平均值,mAP的大小一定在[0,1]区间,越大越好。在目标测量中通常以mPA作为评价指标。
AP指标是基于精确率和召回率,处理多个对象类别,并使用IoU定义一个积极的预测。因此在深入了解AP之前我们须要先了解一下精确率(Precision)、召回率(Recalll)、PR曲线(Precision-recall 曲线)、IoU(Intersection over union)。
众所周知,在进行图象分类训练时我们会将数据集分为正样本和负样本。现在,假设我们有一份正样本(Positive)和负样本(Negative),将样本集输入某模型中进行辨识,其结果共有四类。
TP(True Positive):输入的正样本,预测结果是正样本;
FN(False Negative):输入的正样本,预测结果是负样本;
TN(True Negative):输入的是负样本,预测结果是负样本;
FP(False Positive):输入的是负样本,预测结果是正样本。
精确率(Precision),TP/(TP+FP)。即,所有被预测为正的样本中实际为正的样本的机率。
召回率(Recall)ai遇到未知的图像结构,TP/(TP+FN)。即,实际为正的样本中被预测为正样本的机率。
PR曲线(Precision-recall 曲线),精准率和召回率的分子是相同,都是TP,但分母是不同的,一个是(TP+FP),一个是(TP+FN)。两者的关系可以用一个P-R图来展示,如下图所示,图中的查全率就是召回率,查准率就是精确率。图中显著听到,如果其中一个十分高,另一个肯定会特别低,因此对于二者我们须要权衡取值找到一个平衡点。
图6 查全率与查准率
简单来说,AP就是PR曲线与座标轴围成的面积,可表示为,
实际估算中,我们并不直接对该PR曲线进行估算,而是对PR曲线进行平滑处理。即对PR曲线上的每位点,Precision的值取该点两侧最大的Precision的值,如下图所示。
图7 PR曲线的平滑处理
IoU(Intersection over union),交并比IoU评判的是两个区域的重叠程度,是两个区域重叠部份面积占两者总面积(重叠部份只估算一次)的比列。如下图,两个方形框的IoU是交叉面积(中间图片白色部份)与合并面积(右图蓝色部份)面积之比。在目标测量任务中,如果我们模型输出的方形框与我们人工标明的方形框的IoU值小于某个阀值时(通常为0.5)即觉得我们的模型输出是正确的。
图8 IoU示意
4. 非极大值抑制(NMS)
非极大值抑制(NMS)是物体检查算法中使用的一种后处理技术,用于降低重叠检查框的数目,提高整体测量质量。物体检查算法一般会在同一物体周围形成多个具有不同置信度分数的边界框。NMS过滤掉多余的和不相关的检查框,只保留最准确的检查框。下图显示了一个包含多个重叠边界框的物体测量模型的典型输出和NMS以后的输出。
图9 NMS使用前后
5. 数字系列的YOLO
Joseph Redmon等人的YOLO发表在CVPR 2016。它首次提出了一种实时的端到端物体检查方式,即YOLO。YOLO这个名子代表了 "你只看一次",指的是它只需通过一次网路才能完成检查任务。
本小节对YOLOv1-YOLOv8(YOLO数字系列)做一个简单介绍,用思维导图的方式诠释,内容是基于博文:从YOLOv1到YOLOv8的YOLO系列最新综述【2023年4月】_yolo最新版本_香菜烤蛋糕的博客-CSDN博客,本文对相关内容进行提炼。
图10-YOLOv3
图11-YOLOv4
图12-YOLOv5
图13-YOLOv7
图14-YOLOv8
备注:1)图11中的的架构内容是比较初期的版本,现v5早已更新到了7.x版本,内容上有改动,但总体思路是不变的;2)图片的勾画作者为了才能和v3与v4版本进行比较,输入图片的格式设置为了608608,实际上v5的输入图片是640640。
小结
观察右图,我们可以从锚框、深度学习框架、骨干网路、性能四个方面对YOLO系列做一个总结。
图15
6. 在不同领域的应用
YOLO早已被应用到了众多领域ai遇到未知的图像结构,如自主汽车系统,能够快速辨识和跟踪各类物体,如汽车、行人、自行车和其他障碍物;农业,能够测量和分类农作物、害虫和癌症,协助精准农业技术和自动化耕种过程;医学,能够用于疾病监测、皮肤分割和药丸辨识,从而提升确诊的准确性和更有效的诊治过程;遥感领域,能够用于卫星和民航图象中的物体测量和分类,有助于农地借助绘图、城市规划和环境监测;安防系统,能够快速检查可疑活动、社会距离和头部面具监测;交通领域,被用于牌照检查和交通标志辨识等任务。
为帮助更多对人工智能感兴趣的小伙伴们才能有效的系统性的学习以及论文的研究,小编特意制做整理了一份人工智能学习资料给你们,整理了好久,非常全面。
大致内容包括一些人工智能基础入门视频和文档+AI常用框架实战视频、计算机视觉、机器学习、图像辨识、NLP、OpenCV、YOLO、pytorch、深度学习与神经网路等学习资料、课件源码、国内外著名精华资源、以及AI热门论文等全套学习资料。
需要以上这种文中提及的资料,请先关注作者头条【AI乔治】,回复【666】,即可免费获取~~~~
每一个专栏都是你们十分关心,和特别有价值的话题,如果我的文章对你有所帮助,还请帮忙点赞、好评、转发一下,你的支持会激励我输出更高质量的文章,非常谢谢!