YOLO系列(一)——YOLO v1
前言
该系列为博主自主学习YOLO系列的自我总结。主要对该系列网络的设计原因,算法原理,模型结构,损失函数及模型优缺点进行学习和分析。
一、设计原因
YOLO的诞生是为了解决之前的目标检测网络耗时长的问题,以达到能实时(real-time)进行目标检测。
二、算法原理
1、将输入图像分割为S×S个网格
2、在每一个网格中预测B个边界框,每个边界框包含5个值——x、y、w、h、confidence。
3、在每一个网格中也会预测C个类别概率Pr(Class|Object)
4、网络最后的输出为S×S×(B×5+C)
三、模型结构
YOLO的模型结构设计灵感来自于用于图像分类的GoogleNet。YOLOv1网络包含24个3×3卷积层,之后连接2个全连接层。与GoogleNet不同的是,YOLOv1采用1×1的归约层连接3×3的卷积层。
四、损失函数
YOLOv1将目标检测看成回归问题(即根据先验数据——输入,对下一数据——输出的一种估计),所以采用的是均方差损失函数。YOLOv1的损失函数可分为三个部分:定位误差损失、置信度误差损失、分类误差损失,每个部分采用不同的权值。
定位误差损失
对于定位误差,会采用较大的权值,例如:λcoord=5。根据上图可以看到定位误差采用的是均方误差的计算方法,而对于w,h计算的方法和下x,y不一样,这是因为宽高较小的边框的变化敏感度要大于宽高较大的边框。为了避免这种情况,对宽高
预测改为对其均方根的预测。
i表示第i个网格,j表示第j个边界框,1i,j表示第i个网格存在目标且有第j个边界框预测该目标。
置信度误差损失
对于置信度的预测,要区分包含目标边界框的置信度和不包含目标边界框的置信度。对于包含目标的边界框,其权值要大一些,取1。而对于不包含目标的边界框,其权值要小一些,λnoobj=0.5。
分类误差损失
1i表示第i个网格存在目标。
五、优缺点
优点
YOLOv1采用一个CNN网络来实现目标检测,模型结构较为简单,且速度很快,可以实现实时检测;
由于YOLOv1是对整张图片做卷积,所以在检测目标时会有更大的视野,不容易对背景进行误判;
YOLOv1泛化能力强,做部署时鲁棒性高。
缺点
对于小物体较多的图片来说,表现效果较差。因为单元格内的边界框数量有限,设置过多速度就不够快,精度也会下降;
定位不准确,同时对尺寸不规则的物体定位也不准。