目标检测算法
交并比 IoU
这个阈值你也可以设定为0.6,这样精确度就会更高。
IoU(Interaction of Union)衡量了两个边框重叠的相对大小。
非最大抑制
非最大抑制算法就会去掉和当前概率最大的框的其他IoU值很高的矩形。
当尝试同时检测3个对象,比如行人,汽车,摩托,那么输出向量就会有3个额外的分量(c1,c2,c3)。正确的做法是要独立进行三次非最大抑制,分别对每个输出类别都做一次。
anchor boxes
(可以进一步改善算法效果)
如果想让一个格子检测出多个对象,就可以使用anchor box。
算法处理不好以下情况:
1.如果出现你有2个anchor box,但是再同一个格子中有3个对象中心点。
2.两个对象中心店都分配在同一个格子,且他们的anchor box形状也一样。
如何指定anchor box形状?
一般手工指定5~10个anchor box形状,以尽可能多的覆盖到不同形状,这要求你要合理考虑所有对象的形状。
更好的做法(自动选择形状):k-means算法,将两类对象的形状聚类,用它来选择一组最具代表性的anchor box,来代表你试图检测的十几个对象类别。
YOLO算法
实际中可能划分成
19
∗
19
19*19
19∗19的网格,同时设定更多(n个)anchor box,那么输出就会是
19
∗
19
∗
n
∗
8
19*19*n*8
19∗19∗n∗8。
YOLOv1
YOLOv1的缺点是定位不准,因为它是整个图片normalize到0~1之间之后,去看整张图找物体的。
YOLOv2
用
e
t
x
e^{t_{x}}
etx 可能会比较容易发散,为避免train到爆炸,把
e
x
e^x
ex 改成
s
i
g
m
o
i
d
(
x
)
2
sigmoid(x)^2
sigmoid(x)2 或
s
i
g
m
o
i
d
(
x
)
3
sigmoid(x)^3
sigmoid(x)3,这样走向像有一个盖。
还有一个优点是,可以处理不同尺度的图像,通过放大能够更容易检测小物体。
YOLOv2中一个anchorbox会带一个条件概率(之前YLOLv1是合并共享条件概率的),如果当一只猫和狗距离很近,YOLOv1的处理方式中一个框框的猫,一个框框的狗,但框出来的猫和狗的概率很可能是相当的,这样就很难把离得很近的东西框出来。内容互斥
YOLOv3
候选区域 region proposal:R-CNN
使用训练过的分类器时会针对每个滑动窗跑检测算法,导致在不可能有目标物体的区域仍然跑算法,这是没有意义的。而R-CNN(带区域的卷积网络)会选出一些区域,在这些区域运行卷积网络分类器是有意义的。
选出候选区域的方法是:运行图像分割算法(a segmentation algorithm)
在这些色块上分别运行分类器,这样可以有效减少需要处理的位置,可以减少卷积网络分类器的运行时间。
R-CNN的缺点在于速度慢
。