YOLOV1提出论文:You Only Look Once: Unified, Real-Time Object Detection
只需要一个起始位置坐标,加上长和宽,即(x,y,w,h),就能把一个物体框出来了,这就是转化为回归问题
YOLO算法,在当时15、16年等了很久,因为Faster R-CNN精度高,但是太慢了,速度在当时比精度更重要
总结:
首先输入就是一个S*S个格子,每一个格子都产生两个候选框,产生两个候选框进行微调,但是不是所有候选框都进行微调,需要切实有物体的,什么时候有物体,通过执行度来判断
输入图像是一个448*448,是一个固定值(这个固定值并不意味着只能检测固定大小的东西,这个固定值是通过openCV的resize到固定值得到,里面的物体会进行缩放,最后的框会映射到一个完整的原始图像中),这个固定值也导致了一些问题,在v1版本中有一定的局限性

在网络的最后得到一个(7,7,30)的特征图,这个特征图表示的意义:77表示前面提到的SS个grid格子,在7*7的格子中,每一个格子都有30个值,每一个格子都要预测出30个值。
30个值的意义:
了解了30个值的意义,就了解了(7,7,30),就基本懂了yolo-v1了

前面我们已经解释了每个数字的意义
位置损失计算的是(X,Y,W,H)这4个值和真实值之间的误差
前面我们仔细解释了各项参数的含义,下面陆续给出整个损失计算公式,首先是位置损失,位置损失又包含两部分,分别是坐标和长宽,不是一个具体的坐标值,是经过归一化后得到的一个在0到1之间的相对值
λ
c
o
o
r
d
∑
i
=
0
S
2
∑
j
=
0
B
1
i
j
o
b
j
[
(
x
i
−
x
^
i
)
2
+
(
y
i
−
y
^
i
)
2
]
λ_{coord}\sum_{i=0}^{S^2}\sum_{j=0}^{B}1^{obj}_{ij}[(x_i-\hat{x}_i)^2+(y_i-\hat{y}_i)^2]
λcoordi=0∑S2j=0∑B1ijobj[(xi−x^i)2+(yi−y^i)2]
+ λ c o o r d ∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j [ ( w i − w ^ i ) 2 + ( h i − h ^ i ) 2 ] +λ_{coord}\sum_{i=0}^{S^2}\sum_{j=0}^{B}1^{obj}_{ij}[(\sqrt{w_i}-\sqrt{\hat{w}_i})^2+(\sqrt{h_i}-\sqrt{\hat{h}_i})^2] +λcoordi=0∑S2j=0∑B1ijobj[(wi−w^i)2+(hi−h^i)2]
求根号能使小框对误差更敏感
主要是判断当前预测的是前景还是背景,含有object物体即为前景
∑
i
=
0
S
2
∑
j
=
0
B
1
i
j
o
b
j
(
C
i
−
C
^
i
)
2
\sum_{i=0}^{S^2}\sum_{j=0}^{B}1^{obj}_{ij}(C_i-\hat{C}_i)^2
i=0∑S2j=0∑B1ijobj(Ci−C^i)2
λ n o o b j ∑ i = 0 S 2 ∑ j = 0 B 1 i j n o o b j ( C i − C ^ i ) 2 λ_{noobj}\sum_{i=0}^{S^2}\sum_{j=0}^{B}1^{noobj}_{ij}(C_i-\hat{C}_i)^2 λnoobji=0∑S2j=0∑B1ijnoobj(Ci−C^i)2
∑ i = 0 S 2 1 i o b j ∑ C ∈ c l a s s e s ( p i ( C ) − p ^ i ( c ) ) 2 \sum_{i=0}^{S^2}1^{obj}_{i}\sum_{C∈classes}(p_i(C)-\hat{p}_i(c))^2 i=0∑S21iobjC∈classes∑(pi(C)−p^i(c))2
前面的误差计算公式提到了三个指示函数:
1
i
o
b
j
=
{
1
,
如果第
i
个网格单元包含目标。
0
,
否则。
1^{obj}_{i} = {1,如果第 i 个网格单元包含目标。0,否则。
1 i o b j 1^{obj}_{i} 1iobj:第i个grid cell是否包含物体,也即是否有groud truth框的中心点落在grid cell中,若有则为1,否则为0
1
i
j
o
b
j
=
{
1
,
如果第
i
个网格单元中的第
j
个边界框预测到了目标。
0
,
否则。
1^{obj}_{ij} = {1,如果第 i 个网格单元中的第 j 个边界框预测到了目标。0,否则。
1
i
j
n
o
o
b
j
1^{noobj}_{ij}
1ijnoobj:第i个grid cell的第j个bounding box若负责预测物体则为1,否则为0
1
i
j
n
o
o
b
j
=
{
1
,
如果第
i
个网格单元中的第
j
个边界框没有预测到目标。
0
,
否则。
1^{noobj}_{ij} = {1,如果第 i 个网格单元中的第 j 个边界框没有预测到目标。0,否则。
1
i
j
n
o
o
b
j
1^{noobj}_{ij}
1ijnoobj:第i个grid cell的第j个bounding box若不负责预测物体则为1,否则为0

置信度是可以设置的,设置的较大的时候则比较严格,可能出现有些物体没有被检测,较小的时候可能一个物体出现多个预选框。
但是有时候就算设置较大的置信度,还是出现了多个预选框,我们可以进行非极大值抑制操作,对预选框的置信度进行排序,最终只选取较大的预选框。
YOLOV1到这里内容就全部都结束了,那YOLOV1有哪些问题呢?
那么YOLOV2做了哪些改进呢?