1.锚框的解释
目标检测算法中,通常会在输入图像中采样大量区域,然后判断这些区域是否包含所感兴趣的目标,并调整区域边界从而更加准确的预测目标真实的边缘框。
①一类目标检测算法是基于锚框的
②提出多个框被称为锚框的区域(边缘框)
③预测每个锚框里是否含有关注的物体
④如果是,预测从这个锚框到真实边缘框的偏移
边缘框:图像真实的位置,标号的位置
锚框:计算机预测的位置
“算法本身不知道标号物体真实的位置,如果直接对位置预测比较困难。算法的操作是先提出一些框,在锚框里有没有关注的物体。如果有关注的物体,锚框慢慢调整到真实边缘框的位置。两次预测:物体类别和位置”
2.loU-交并比:锚框与真实框的相似度
①loU是用来计算两个框之间的相似度
0表示无重叠 1表示有重叠
②这是Jacquard指数的一个特殊情况
给定两个集合A和B
A是锚框 B是边缘框 分子是交集,分母是并集。两个重合的时候结果是1
3.赋予锚框标号
在训练集中,每个锚框看作训练样本。为了训练模型,需要每个锚框的类别(class,与锚框 相关对象的类别)和偏移量(offset,真实边缘框相对于锚框的偏移量)标签。
①每个锚框是一个训练样本
②每个锚框,要么框住了背景,要么关联上一个真实的边缘框(锚框所框住的物体的标号与所关联的边缘框物体的标号相同。锚框的偏移就是关联边缘框的偏移,偏移量根据锚框和真实边缘框的相对位置以及大小进行标记)
③可能会生成大量的锚框,将导致大量的负类样本
“学习的过程是在各位置上都学习一个正确的锚框,预测的时候,只要物体出现,网络就知道在哪里标上正确的bbox”
4.图示锚框标号
①列:标注好的边缘框,4列表示4个边缘框
行:锚框
②每个锚框跟边缘框算loU值,在每个方格中的值表示
③将整个矩阵中的最大值挑选出来,假设x23,那么将边缘框3中的标号给锚框2,删除X23所在的行和列
在剩下的矩阵找最大值,假设是X71。锚框7跟边缘框1关联起来,同时删除所在的行和列
以此类推,直到所有的边缘框与对应的锚框关联。
锚框的生成:
①固定生成
②根据图片生成锚框
5.使用非极大值抑制(NMS)输出
①每个锚框预测一个边缘框时,有很多相似且重叠的锚框
②NMS可以合并相似的预测
Ⅰ选中是非背景类的最大预测值(对类的预测的softmax值,越接近于1置信度越高)
Ⅱ去掉所有其他和它loU值大于θ的预测(也就是去掉和最大预测值相似度比较高的其它锚框)
Ⅲ重复上述过程直到所有预测要么选中,要么去掉
【总结】
①一类目标检测算法是基于锚框来预测
②首先生成大量的锚框,并赋予标号,每个锚框作为一个样本进行训练
③预测时,使用NMS来去掉冗余的预测