粗读概念
1. 论文提出了什么?
- 论文提出了一种不需要anchor boxesanchor\ boxesanchor boxes的目标检测的方法
- 提出了一种新的corner−poolingcorner-poolingcorner−pooling操作
- 属于anchor−freeanchor-freeanchor−free的方法
2. 论文为什么提出这种方法?解决了什么问题
-
此前的one−stage detecorone-stage\ detecorone−stage detecor需要在图像上生成许多anchorboxesanchor boxesanchorboxes, 但是只有少量的boxboxbox能够在
覆盖到有目标的地, 过多的negative boxnegative\ boxnegative box导致样本不平衡,从而训练缓慢 -
需要anchorboxesanchor boxesanchorboxes 的方法通常需要设置许多超参数, 例如boxboxbox数量, 长宽比, 大小等, 这些通常需要一些经验来支持更好的结果
3. 方法描述


通过卷积网络生成一组top−left cornertop-left\ cornertop−left corner和一组bottom−right cornerbottom-right\ cornerbottom−right corner以及它们对应的embedding vectorembedding\ vectorembedding vector, 这个vectorvectorvector的作用是匹配属于一个objectobjectobject的左上右下的角点
4. corner pooling
-
作者提出corner poolingcorner\ poolingcorner pooling是因为实际中, object boxobject\ boxobject box的角点通常是在objectobjectobject的外面的, 所以没有本地的依据来进行调整, 如下图所示, 作者提出一种新的cornet poolingcornet\ poolingcornet pooling 来解决这个问题
-
具体是对角点的水平和垂直两个方向,分别在feature mapfeature\ mapfeature map上取各个channelchannelchannel上的最大值, 然后再加起来
-
但是文中提到的两个feature mapfeature\ mapfeature map是指的什么呢??
以top−left cornertop-left\ cornertop−left corner为例, 是hourglass networkhourglass\ networkhourglass network生成feature mapfeature\ mapfeature map分别做水平和垂直poolingpoolingpooling生成 tijt_{ij}tij 和 lijl_{ij}lij 的, 本质上是一个featuremapfeature mapfeaturemap
精读部分
3 CornerNet
3.1 overview
CornerNetCornerNetCornerNet通过Human Pose EstimationHuman\ Pose\ EstimationHuman Pose Estimation领域中Hourglass NetworkHourglass\ NetworkHourglass Network作为backbonebackbonebackbone提取初级特征, 然后将初级特征输入到Top−left CornersTop-left\ CornersTop−left Corners和Bottom−right CornersBottom-right\ CornersBottom−right Corners两个预测模块中, 经过corner poolingcorner\ poolingcorner pooling及后续的nnnnnn得到Heatmaps, Embeddings, OffsetsHeatmaps,\ Embeddings,\ OffsetsHeatmaps, Embeddings, Offsets三个输出, 其中HeatmapsHeatmapsHeatmaps为C×H×WC×H×WC×H×W的binary maskbinary\ maskbinary mask, 有C个channelschannelschannels分别对应C个classesclassesclasses, H×WH×WH×W分别对应图上的点是否有CornersCornersCorners, EmbeddingsEmbeddingsEmbeddings用来对预测的两种cornerscornerscorners的groupinggroupinggrouping,也就是配对, OffsetsOffsetsOffsets用来微调预测角点的值, 改善网络对小目标的预测结果
3.2 Detecting Corners
这个部分主要讲了两个内容:
-
NegativePositionNegative PositionNegativePosition的定义: 以gt positiongt\ positiongt position为中心, radiusradiusradius为半径的圆外的点, 其中radius的大小有gtbboxgt bboxgtbbox的大小确定,原则如下图所示,大意是radiusradiusradius中点组成的boxboxbox与gtboxgt boxgtbox的IOUIOUIOU最小为ttt, 文中的括号里0:30:30:3没看懂,感觉是笔误,应该是0.30.30.3吧(这个不太确定). 对于negativepositionnegative positionnegativeposition的penaltypenaltypenalty, 作者使用2DGaussians=e−(x2+y2)/2×σ22D Gaussians=e^{-(x^2+y^2)/2\times\sigma^2}2DGaussians=e−(x2+y2)/2×σ2生成一个gt heatmapgt\ heatmapgt heatmap为ycijy_{cij}ycij, 以gt positiongt\ positiongt position为中心,方差为radius/3radius/3radius/3, 从公式可以看到对于生成的heatmapheatmapheatmap某个点若对应ycij=1y_{cij}=1ycij=1(即对应gt positiongt\ positiongt position),按照上式求losslossloss, 对于其他negative positionnegative\ positionnegative position,越接近gt positiongt\ positiongt position, 那么(1−ycij)(1-y_{cij})(1−ycij)则越小, 也就是惩罚越小,来计算losslossloss.


-
OffsetsOffsetsOffsets: 许多网络下采样后将预测的左边remap回原始图像时通常会损失一些精确度, 所以作者在CornerNetCornerNetCornerNet中设置offsetsoffsetsoffsets来微调预测的坐标使结果更准确.其中(2)(2)(2)式为计算偏差公式, 那么οk\omicron_{k}οk和ο^k\hat\omicron_{k}ο^k分别对应gt offsetgt\ offsetgt offset与predict offsetpredict\ offsetpredict offset, 最后通过SmoothL1LossSmoothL1LossSmoothL1Loss来学习. SmoothL1LossSmoothL1LossSmoothL1Loss是Fast RCNNFast\ RCNNFast RCNN中提出的,相比L1L1L1收敛更快,相比L2L2L2对于离群点、异常值更加鲁棒,训练不容易跑飞


3.3 Grouping Corners
这个部分讲如何将预测的cornerscornerscorners进行配对,文中写的方法是based on the distance between the embeddings of corners ,但是具体距离的计算公式什么,文中没有给出,也许可以在作者提到的NewellNewellNewell的论文中有提到, 此外作者引用NewellNewellNewell论文中pull−pushpull-pushpull−push的方法训练使成对的cornercornercorner接近,不成对的进行远离.

3.4 Corner Pooling
大概原理如下图所示, 文中说的vectorvectorvector应该指的是1×channel1\times channel1×channel, 也就是从spatialspatialspatial的每个点看向channelchannelchannel方向, 下图是一个channelchannelchannel的top−left corner poolingtop-left\ corner\ poolingtop−left corner pooling情形,分别从右往左与从下往上max poolingmax\ poolingmax pooling

4 Experiments
实验中作者验证了论文几个key componentskey\ componentskey components的结果,总结如下:
-
不同poolingpoolingpooling方式的对比显示cornerpoolingcorner poolingcornerpooling在APAPAP上提高2%
-
negative penaltynegative\ penaltynegative penalty中radiusradiusradius的三种方式对比, 不要radiusradiusradius效果最差, fixed radiusfixed\ radiusfixed radius提高接近3%, object−dependent radiusobject-dependent\ radiusobject−dependent radius提高5.5%(这个是文中使用的方法)
-
在backbonenetworkbackbone networkbackbonenetwork的对比中Hourglass+cornersHourglass+cornersHourglass+corners比FPN+cornersFPN+cornersFPN+corners提到6%多, 性能差别还是挺大的.
8467

被折叠的 条评论
为什么被折叠?



