guodong's blog

master@zhejiang university
   

目标检测模型 YOLOv1

1、统一检测

1.1 关于r-cnn

之前的r-cnn都是需要两步走,第一步生成候选区域,第二步是在候选区域内检测目标的类别。

1.2 YOLO

yolo则是一步走,统一检测,使用一个端到端的网络来训练。

输入图片可以被分割成S*S(s=7)个格子(grid)。如果目标的中心落在了这个格子里,那这个格子就负责检测这个目标。

每一个格子预测B个bounding boxes(B=2)和这些boxes的置信度。置信度反应了这个格子包含这个目标的概率,例如  P(Objects)。

每一个bounding box预测5个值,x,y,w,h和置信度。其中x,y是与grid有关的每个box的中心点坐标。w,h代表宽和高,置信度可以用预测的boxes和真实的box之间的IOU来表示。

每一个格子还预测所属目标类别的可能性,即P(Classi|Object),classes的总数为20,网络的结构输出参看下图,

整个输出变成7*7*(2*5+20)=1470

2、网络结构

 

这个模型包含24个卷积层和最后两个全连接层。交替的1×1卷积层减少了前面层的特征空间。 (GoogLeNet中使用了1×1转换来减少参数数量。)

我们可以看到输入图片仅穿过网络一次,随后目标被检测出来,是一个端到端的学习。

3、loss函数

yolo的loss函数比较复杂

3.1 函数介绍

总共有5项

  1. 第一项x,y: bounding boxes 的x,y表示特定单元格位置的偏移量,所以它们范围为0-1,只有当它们还有目标时,才将平方差损失计算在内。
  2. 第二项w,h: w,h被标准化(除以图片的高和宽),其范围也是0-1, 因为大目标和小目标的差别太大,所以采取了平方根运算。
  3. 第三四项置信度:很多单元格中可能并不包括任何目标,所以它们的置信度将设置为0,但因它们的数量比包含目标的格子的数量多很多,所以在其前面设置个权重,来保持网络的稳定性。例如λnoobj=0.5。
  4. 第五项类别误差:当有目标的时候使用SSE误差
  5. λcoord:如同第三点提到的原因,设置λcoord是为了增大box坐标的权重,是的网络更倾向于目标坐标的准确性。

3.2 其他细节

除了最后一层,其他层均采用了leaky relu作为激活函数,同时使用了非极大值抑制方法。

 

 




上一篇:
下一篇:

头像

guodong

说点什么

avatar
  Subscribe  
提醒