点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”
导读作者:Jonathan Hui
编译:ronghuaiyang
昨天介绍了YOLOv3,发现大家对这一系列很感兴趣,从今天开始,会连载YOLO,YOLOv3,YOLOv3的相关内容,让大家更加清楚YOLO这一系列发展的过程。今天先介绍YOLO。
YOLO是一个以实时处理为目标的物体检测系统。我们将在本文中介绍YOLO、YOLOv2和YOLO9000。对于那些只对YOLOv3感兴趣的人,请转到文章底部。以下是YOLO网站提供的准确性和速度对比。
我们从下面我们自己的测试图像开始。
使用YOLO进行物体检测:
网格单元
为了便于讨论,我们对原始照片进行了剪裁。YOLO将输入图像划分为 S×S 个网格。每个网格单元仅预测一个对象。例如,下面的黄色网格单元格尝试预测中心(蓝点)位于网格单元格内的“person”对象。
每个网格单元预测固定数量的边界框。在本例中,黄色网格单元格预测两个边界框(蓝色框)来定位人员的位置。
然而,一个网格只预测一个物体的规则限制了检测到的物体之间的距离。因此,YOLO对物体之间的距离有一定的限制。如下图所示,左下角有9个圣诞老人,而YOLO只能检测到5个。
对于每个网格单元格,
预测B个边界框,每个框有一个box置信度得分
只检测一个对象,而不考虑边界框B的数量
预测C个条件类的概率(每个类有一个概率)
在Pascal VOC上进行评估,YOLO使用7×7网格(S×S),2个边界框(B)和20个类(C)。
让我们来了解更多的细节。每个边界框包含5个元素:(x, y, w, h)和box置信度得分。置信度分数反映框中包含对象的可能性(object )以及边界框的准确性。我们通过图像的宽度和高度对边界框的宽度w和高度h进行规范化。x和y是对应单元格的偏移量。因此,x, y, w和h都在0和1之间。每个单元格有20个条件类概率。条件类probability是检测到的物体属于特定类的概率(每个单元格的每个类别有一个概率)。所以YOLO的预测输出的尺寸为(S, S, B×5 + C) = (7、7、2×5 + 20) = (7、7、30)。
YOLO的主要概念是建立一个CNN网络来预测一个(7,7,30)的张量。它使用一个CNN网络得到1024个通道的7×7的输出。YOLO用两个全连接层来进行7×7×2个边界框的预测(下图)。为了做出最终的预测,我们保留那些边界框置信度得分高(大于0.25)的盒子边界框作为最终的预测(右图)。
每个预测框的类置信度得分计算为:
它度量分类和定位的(物体所在的位置)的置信度。
我们可以很容易地混淆那些得分和概率项。这是数学上的定义,供你以后参考。
网络设计
YOLO有24个卷积层,然后是2个全连接层(FC)。有些卷积层使用了1x1的卷积核来降低特征图的通道数。对于最后一个卷积层,它输出一个形状为(7,7,1024)的张量。然后张量被压扁。使用2个全连接层,它输出7×7×30个参数然后reshape成(7、7、30),即每个位置2个边界框。
YOLO的一个更快但准确率较低的版本叫做Fast YOLO,只使用了9个卷积层和更少的feature map数量。
损失函数
YOLO预测每个网格单元有多个边框。为了计算true positive的损失,我们只希望它们中的一个对该物体负责。为此,我们选择了和ground truth具有最高IoU的那个。这种策略导致边界框预测之间的专门化。每种预测都能更好地预测特定的尺寸和纵横比。
YOLO使用预测和ground truth之间的平方和误差来计算损失。损失函数包括:
分类损失。
定位损失(预测边界框与ground truth之间的误差)。
置信度损失。
分类损失
如果物体被检测到了,每个单元格的分类损失为每个类的条件概率类的平方误差:
定位损失
定位损失测量的是预测的边界框的位置和尺寸的误差。我们只计算负责检测物体的框。
我们不希望在大框和小框中对绝对误差进行同等的加权。例如,一个大框的2像素误差和一个小框的2像素误差是一样的。为了部分解决这个问题,YOLO预测边框宽度和高度的平方根,而不是宽度和高度。此外,更加重视边界框的准确性,我们将这个损失乘以λcoord(默认值是5)。
置信度损失
如果在一个框中,有物体被检测到了,置信度的损失为:
如果在一个框中,没有物体检测到,置信度损失为:
大多数框不包含任何物体。这就造成了类不平衡的问题,即我们训练模型检测背景的频率比检测物体的频率要高。为了弥补这一点,我们将这个损失的权重降低,通过一个因子λnoobj(默认值为0.5)。
损失
最终的损失包括定位损失、置信度损失和分类损失。
推理:非极大值抑制
YOLO会对同一物体进行重复检测。为了解决这个问题,YOLO使用了非最大抑制来删除置信度较低的重复的框。非最大抑制在对mAP能增加2-3%。
下面是其中一种非最大抑制实现:
根据置信度得分对预测进行排序。
从最高分开始,如果我们发现任何一个预测,和之前的预测有相同的类并且IoU > 0.5,那么就忽略掉当前的预测。
重复步骤2,直到检查完所有预测。
YOLO的优点
快,适合实时处理。
预测(物体位置和类)由单个网络进行。可进行端到端训练,提高精度。
YOLO更一般化。当从自然图像推广到其他领域(如艺术品)时,它的性能优于其他方法。
区域建议方法将分类器限制在特定区域。YOLO在预测边界框时访问整个图像,YOLO在背景区域显示的假阳性更少。
YOLO每个网格单元检测一个对象。它加强了预测的空间多样性。
<未完,明天继续>
— END—
英文原文:https://medium.com/@jonathan_hui/real-time-object-detection-with-yolo-yolov2-28b1b93e2088
●新手必看的Top10个机器学习算法(这些都学会了你就是老手了)
更多历史文章请关注公众号,点击“历史文章”获取
请长按或扫描二维码关注本公众号
喜欢的话,请给我个好看吧!