YOLOv1算法解析
2021-07-07 本文已影响0人
Epimenides
YOLOv1算法处理思路
- 将一幅图像分成SxS个网格(grid cell), 如果某个object的中心落在这个网格中,则这个网格就负责预测这个object。
-
每个网格要预测B个bounding box,每个bounding box 除了要预测位置之外,还要附带预测一个confidence值。每个网格还要预测C个类别的分数。
在YOLOv1论文中
-
并将训练集图片分割成
7x7
个网格.(S = 7) -
每个网格预测两个
bounding box
.(B=2) -
使用的PASCAL VOC数据集的类别数为20.(C=20)
-
每一个bounding box
包含五个预测参数(x,y,w,h)&confidence
- 其中(x,y)是关于grid cell的相对坐标,取值范围是(0,1).
- 其中(w,h)是关于整个图像的相对坐标,取值范围也是(0,1).
-
confidence计算公式为:
Pr(Object)*IOU(gt||pr)
- Pr(Object)表示是否为20个目标中的一个,数值为0或1.
- IOU(gt||pr)标注的groundtruth和预测框的交并比。
-
该途中如果没有标注-s-的话,卷积核的stride为1,如果标注-s-2的话,卷积核的stride为2.
-
网络的输出进行展平处理,接上一个
fc(4096)
层,最后会得到一个4096
维的向量 -
将上面
4096维
的向量再接上一个fc(1470)
层,将最后的向量reshape成7x7x30
的特征矩阵。
- YOLOv1的损失函数:
- 其中第一行为正样本的损失,第二行是负样本的损失。第二行中公式的开方是为了避免不同面积相同偏移量的情况。
- 第一行是计算正样本的损失,第i个
grid cell
中是存在目标的。第二行是计算负样本的损失,第i个gird cell
中没有目标的情况。
-
YOLOv1存在的一些问题
-
对于检测一些群体性小目标的检测效果较差
-
目标出现了新的尺寸和配置,预测效果较差
-
定位不准确,后面的改进(YOLOv2及以后)采用基于anchor的回归。
-