❝上期我们一起学习了
❞YOLOV1
算法的原理框架,如下:
目标检测算法YOLO-V1算法详解
今天我们深入一步,一起学习下关于YOLO-V1
算法的损失函数和优缺点。
YOLO-V1损失函数
从上期我们知道,YOLO-V1
算法最后输出的检测结果为7x7x30
的形式,其中30
个值分别包括两个候选框的位置和有无包含物体的置信度以及网格中包含20
个物体类别的概率。那么YOLO
的损失就包括三部分:位置误差,confidence
误差,分类误差。
损失函数的设计目标就是让坐标(x,y,w,h)
,confidence
,classification
这个三个方面达到很好的平衡。YOLO-V1
算法中简单的全部采用了sum-squared error loss
来做这件事,如下图:

在上图中,我们也能清晰的看出来,整个算法的损失是由预测框的坐标误差,有无包含物体的置信度误差以及网格预测类别的误差三部分组成,三部分的损失都使用了均方误差的方式来实现。
我们知道,如果8
维的localization error
,两个置信度error
和20
维的classification error
同等重要显然是不合理的;还有如果一个网格中没有object
(一幅图中这种网格很多),那么就会将这些网格中的box
的confidence push
到0
,相比于较少的有object
的网格,这种做法是overpowering
的,这会导致网络不稳定甚至发散。这里算法中用了权重系数来进行平衡,对于不同的损失用不同的权重,我们来逐个看:
位置损失
从上图可以看出,坐标损失也分为两部分,坐标中心误差和位置宽高的误差,其中