第四部分 目标检测 3 笔记
3.8 Anchor Boxes
为了使一个格子检测多个对象,需要引入Anchor Boxes概念。
上图中第六个格子,输出向量y为八维度,只能检测出一个对象,而实际上此格子中有两个边界框的中点落入。Anchor Boxes的思路是,预先定义好多个不同形状的Anchor Boxes,上图中定义了两个。由于有两个Anchor Boxes,格子对应的标签y由[pc,bx,by,bh,bw,c1,c2,c3]变为了[pc,bx,by,bh,bw,c1,c2,c3,pc,bx,by,bh,bw,c1,c2,c3]。
使用Anchor Boxes之前的算法,每个格子对应8维标签,图像的标签为3x3x8.
使用Anchor Boxes之后,跟之前一样每个对象分配到不同的格子中,并将其在标签中的位置分配到与其边界框交并比最高的Anchor Boxes中。例子中有两种Anchor Boxes,那么图像的标签为3x3x16。
存在问题:
1、两种Anchor Boxes,无法应对一个格子三个以上的情况;
2、一个格子中有两个对象,而且两个对象的Anchor Boxes形状也一样。由于存在这些问题,需要额外引入一些手段来解决。(格子的尺寸变小,3x3 -> 19x19,可以减缓这种问题的影响)
Anchor Boxes形状的选择方法:k-平均算法,例如将两类对象形状聚类,选择最具有代表性的一组anchor box,可以代表你试图检测的十几个对象类别。
3.9 YOLO算法
Putting it together: YOLO algorithm
1、构造训练集并进行训练
类别:3 行人、汽车、摩托车 Anchor Boxes: 2 网格尺寸: 3x3
标签维度: 3x3x2x8 网格尺寸 x Anchor Boxes个数 x 类别个数
2、进行预测
格子1 无对象预测应为:[0,?,?,?,?,?,?,?,0,?,?,?,?,?,?,?]
格子7有测预测应为:[0,?,?,?,?,?,?,?,1,bx,by,bh,bw,0,1,0]
3、非极大值抑制
3.1 如果有两种Anchor Boxes,一般预测后影像每个格子会有两个预测边界框。
3.2 舍弃低概率的预测。
3.3对每个类别,分别做极大值预测。
检测过程:
3.10 候选区域
Region proposals
R-CNN的算法,意思是带区域的卷积网络,或者带区域的CNN。该算法尝试选出一些区域,在这些区域上运行卷积网络分类器是有意义的,不再针对每个滑动窗运行检测算法,而是只选择一些窗口,在少数窗口上运行卷积网络分类器。
选出候选区域的方法是运行图像分割算法,分割的结果是下边的图像,为了找出可能存在对象的区域。比如说,分割算法在这里得到一个色块,所以你可能会选择这样的边界框,然后在这个色块上运行分类器,比如绿色的东西,在这里找到一个色块,接下来在那个矩形上运行一次分类器,看看有没有东西。在这种情况下,如果在蓝色色块上运行分类器,希望能检测出一个行人,如果在青色色块上运行算法,也许你可以发现一辆车。
候选区域系列算法