yolov1详细讲解
设计概念
整体来看,Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测
第一步:将输入图片resize到448x448,然后送入CNN网络
第二步:得到处理网络预测结果得到检测的目标
具体来说,Yolo的CNN网络将输入的图片分割成77网格,然后每个单元格负责去检测那些中心点落在该格子内的目标,如下图所示:
从上图中可以看到,YOLO-V1网络的主要步骤如下:
可以看到网络的最后输出为77*30大小的张量。这个张量所代表的具体含义如下图所示。对于每一个单元格,前20个元素是类别概率值,然后2个元素是边界框置信度,两者相乘可以得到类别置信度(注意这句话:两者相乘可以得到类别置信度),最后8个元素是边界框的(x,y,w,h)。对于边界框为什么把置信度c和(x,y,w,h)都分开排列,而不是按照(x,y,w,h,c)这样排列,其实纯粹是为了计算方便,因为实际上这30个元素都是对应一个单元格,其排列是可以任意的。
损失函数
YOLO V1每个网格单元能够预测多个边界框。为了计算true positive的损失,只希望其中一个框负责该目标,为此选择与GT具有最高IOU的那个框
YOLO正样本选择
当一个真实物体的中心点落在了某个cell内时,该cell就负责检测该物体。
具体做法是将与该真实物体有最大IoU的边框设为正样本, 这个区域的类别真值为该真实物体的类别,该边框的置信度真值为1。
YOLO负样本选择
除了上述被赋予正样本的边框,其余边框都为负样本。负样本没有类别损失与边框位置损失,只有置信度损失,其真值为0。
YOLO使用预测值和GT之间的误差平方的求和(MSE)来计算损失。 损失函数包括
localization loss -> 坐标损失(预测边界框与GT之间的误差)
classification loss -> 分类损失
confidence loss -> 置信度损失(框里有无目标, objectness of the box)
专业词汇解释:
作者在YOLO算法中把物体检测(object detection)问题处理成回归问题,用一个卷积神经网络结构就可以从输入图像直接预测bounding box和类别概率。
( Instead, we frame object detection as a regression problem to spatially separated bounding boxes and associated class probabilities.我们将对象检测框架做为一个回归问题,以实现空间分离的边界框和相关的类概率。)
1.置信度(confidence)
置信度(confidence)=类概率*IoU
在这里插入图片描述Pr(Object)是边界框内存在对象的概率,若存在对象,Pr(Object)=1,否则Pr(Object)=0;IOU是真实框(ground truth)与预测框(predicted box)的交并比
2.IoU(Intersection over Union ratio)
实际上就是预测框和真实框面积的交集与并集的比值(两边界框相交部分面积与相并部分面积之比)。我们认为只有IoU>0.5的priorbox才是有价值的。