G-CNN
算法背景
从2016年以前的文章的目标检测的方法大都沿袭了{region proposal→CNN→classify}的思路。但是region proposal是一个非常耗费时间的操作,在RPN网络之前大部分使用的使用的都是selective search或者之类的算法,从原始图片中提取将近2k张图片,这个方法非常耗时,后来Faster Rcnn剔除了RPN网络之后,用网络提取region proposal,大大缩短了提取时间。
而G-CNN的思路,则是消除region proposal,与yolo和ssd不同,G-CNN工作借鉴了迭代的想法,把边框检测等价于找到初始边框到最终目标的一个路径,并使用迭代的方法逐步接近最终的目标
算法流程
在训练阶段,首先在图像中获取叠加的多尺度的规则网格(实际网格相互叠加,示意图中显示平铺以视觉化),然后通过GT与每一个网格的IOU进行每一个网格GT的分配,并完成训练过程,使得网格在回归过程中渐渐接近GT。在检测阶段,对于每一个BOX针对每一类获得置信分数,用最可能类别的回归器来更新box的位置
网络结构
G-CNN的网络可以采用任何的网络结构,包括alexnet、googlenet、vggnet等,网络结构如图,经过卷积层提取图像的特征,通过ROI pooling得到bbox的特征,经过全链接层以后,使用softmax进行分类和边界框回归,得到的结果进行下一次迭代。每次移动一小步,逐渐逼近最优解。
损失函数
G-CNN是一个迭代的过程,所以每次迭代都存在一个loss,假设B表示整个所有的bbox的构成的集合。Bi是第i个bbox,上表s表示的第s次迭代。在训练的时候,首先把IOU阈值大于0.2的边框分配一个GT,表示改变看移动的目标,分配函数如下所示:
公式(1)中的
代表图片的GT,公式(1)的意义在于,在所有的IOU大于0.2的边框集合中,每一个边框选取一个最接近GT边框作为移动目标。但是直接从原始的的边框移动到目标边框是非线性的,为了解决这个问题,作者采用了分段的方法,每次只移动一小步,多次迭代,直到移动到最终的目标,公式(2)代表了每次移动的目标bbox:
公式(2)中
代表分配的目标边框。
G-CNN的目标损失函数如下: