6 通俗学AI:始入目标检测( 三 )


这是不对的,因为如果这样做,就代表了不管它是哪一张图,只要候选框的信息固定,就有一个与之对应的修正框,这样明显是不对的 。
我们需要根据实际情况来得到每个框的四个d函数 。因此作者是将最后一个池化层的结果:[2000,4096]作为输入,乘上一个[4096,4]的矩阵,得到一个[2000,4]的矩阵(2000个候选框对应的四个d函数) 。最后SVM得到结果后,再把候选框代进对应的四个d函数,根据上面的公式就能算出修正框的位置了 。
那么这个[2000,4]的矩阵如何得到呢?答案是线性回归,假设一个式子Y=W*X,然后我有大量的X和对应的Y,我就能把W学习出来 。而我们把G近似看成G戴帽子,再把上述图片中的公式移项一下,就得到了下面这堆公式 。理论上来说t就是d 。
图片来自论文
我们根据G和P把t算出来,随后我们以最后一个池化层的结果为Φ5,根据下面这个损失函数进行训练:
图片来自论文
机器学习的内容,不多赘述了,后面的正则化项特别重要(作者说的) 。
非极值抑制
上面都跑完后,我们会得到很多重叠的框框,如下图的情况 。这个时候我们就要用到一个叫做非极值抑制(NMS)的技术,它的作用是将这么多个框变为一个 。
图片改自论文
首先,我们有一堆的框,以及我们知道每个框代表的类别和概率 。我们先把概率低于一定阈值(这个阈值自己设定)的框的概率设为0 。然后我们将所有框按照概率的高低由高到低排序 。这样之后,每一类最高概率那几个框肯定排在前面 。然后我们重头往后遍历,每次选择一个框A,计算排在后面的与框A同类的框B和框A之间的IOU,如果大于某个阈值(自己设定),就删除框B,直至遍历完成 。
NMS算法其实就是从靠得很紧的一类框里,选出概率(或者说是分数)最高的那个 。