《AutoFocus: Efficient Multi-Scale Inference》论文笔记 《AutoFocus: Efficient Multi-Scale Inference》论文笔记1. Motivation这是一篇讨论如何“from coarse to fine”进行目标检测的论文。进行多尺度目标检测一般都会用到金字塔网络有的是利用特征金字塔如FPNFeature Pyramid Network在深层特征图上检测大目标在浅层特征图上检测小目标也有的用图像金字塔如本文。但是对不含目标的区域进行检测会消耗不必要的计算资源所以通常会采用逐步精细化的检测策略。在本文中是通过在coarse scale上定位可疑目标返回区域切片再在fine scale的切片上进行小目标检测最后合并各尺度检测结果实现的。2. MethodAutoFocus的架构AutoFocus FocusPixels FocusChips Focus Stacking1. 生成FocusPixels定义在特征图如Resnet的Conv5的某个像素点上如果该像素点在对应原图的区域上有小物体存在即感受野上有小物体这个像素点就被定义成FocusPixels。训练网络训练时标记FocusPixels为正样本标签为1其他像素被定义成无效样本标签为-1或者负样本标签为0网络学习在这些标签为1的位置产生高的激活值。标签定义正样本l 1有小物体覆盖的像素。无效样本l -1有中等大小物体或极小物体覆盖的像素。负样本l 0不符合上述条件的像素。打标签的过程下面用论文中给出的图讨论打标签的过程首先上图非推理过程这里的多尺度不是推理时的原始尺度上找到可能包含小物体的区域—— 将该区域的图像放大作为scale2进行检测——再放大到scale3进行检测。事实上这个图反映的是训练过程中的标签标注过程对于上图三个尺度来说都在做同一件事找到图像中的小目标。对于scale1来说红色框的两个小物体尺寸属于小目标被标注为正类而黄色框的因为属于中间大小的物体从而被标注为无效样本。对于scale2来说红色框表示小物体被标注为正类黄色框属于中间尺寸被标注为无效样本在scale1中被标注为无效样本的大象因为在scale2中尺寸符合了大目标的定义所以被定义成负样本。对于scale3原来在scale2中的小目标在scale3中因为尺寸变大被定义成无效样本。如果还不理解可以参考论文中的标注数学表达式如下所示l{1,if IoU(GT,l)0 and aGT Areab−1,if IoU(GT,l)0 and GT Areaa or bGT Areac0,otherwisel \begin{cases} 1, \text{if } \text{IoU}(\text{GT}, l) 0 \text{ and } a \sqrt{\text{GT Area}} b \\-1, \text{if } \text{IoU}(\text{GT}, l) 0 \text{ and } \sqrt{\text{GT Area}} a \text{ or } b \sqrt{\text{GT Area}} c \\0, \text{otherwise}\end{cases}l⎩⎨⎧​1,−1,0,​ifIoU(GT,l)0andaGT Area​bifIoU(GT,l)0andGT Area​aorbGT Area​cotherwise​其中的GTAreaGTAreaGTArea是原始的GT框经过不同尺度的变换得到的即如果输入图片变大了那么GTAreaGTAreaGTArea也变大了而上面公式中的a,b,ca,b,ca,b,c是不变的这样必然会引起同一个目标在不同尺度的图像中被打成不一样的标签。2. 生成FocusChips过程使用阈值ttt从特征图中标记 FocusPixels激活值大于阈值的像素被标注为1目标小于的被标注为0背景使用膨胀卷积对这些像素进行膨胀处理以增加上下文信息。前面两步会得到一个个的像素块下面使用FocusChip Generator算法将属于同一目标的块合并并生成一个大的矩形框作为新的像素块确保框的尺寸大于预定义的K小于的话就多覆盖一些周围的像素作为context。3. 执行Focus Stacking步骤通过尺度变换合并来自各个尺度的检测结果如果在边界上检测到目标删除掉这个框执行非极大值抑制