目标检测算法
交并比 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算法
实际中可能划分成的网格,同时设定更多(n个)anchor box,那么输出就会是。
YOLOv1
YOLOv1的缺点是定位不准,因为它是整个图片normalize到0~1之间之后,去看整张图找物体的。
YOLOv2
用 可能会比较容易发散,为避免train到爆炸,把 改成 或 ,这样走向像有一个盖。
还有一个优点是,可以处理不同尺度的图像,通过放大能够更容易检测小物体。
YOLOv2中一个anchorbox会带一个条件概率(之前YLOLv1是合并共享条件概率的),如果当一只猫和狗距离很近,YOLOv1的处理方式中一个框框的猫,一个框框的狗,但框出来的猫和狗的概率很可能是相当的,这样就很难把离得很近的东西框出来。内容互斥
YOLOv3
候选区域 region proposal:R-CNN
使用训练过的分类器时会针对每个滑动窗跑检测算法,导致在不可能有目标物体的区域仍然跑算法,这是没有意义的。而R-CNN(带区域的卷积网络)会选出一些区域,在这些区域运行卷积网络分类器是有意义的。
选出候选区域的方法是:运行图像分割算法(a segmentation algorithm)
在这些色块上分别运行分类器,这样可以有效减少需要处理的位置,可以减少卷积网络分类器的运行时间。R-CNN的缺点在于速度慢
。