粗读概念
1. 论文提出了什么?
- 论文提出了一种不需要 a n c h o r b o x e s anchor\ boxes anchor boxes的目标检测的方法
- 提出了一种新的 c o r n e r − p o o l i n g corner-pooling corner−pooling操作
- 属于 a n c h o r − f r e e anchor-free anchor−free的方法
2. 论文为什么提出这种方法?解决了什么问题
-
此前的 o n e − s t a g e d e t e c o r one-stage\ detecor one−stage detecor需要在图像上生成许多 a n c h o r b o x e s anchor boxes anchorboxes, 但是只有少量的 b o x box box能够在
覆盖到有目标的地, 过多的 n e g a t i v e b o x negative\ box negative box导致样本不平衡,从而训练缓慢 -
需要 a n c h o r b o x e s anchor boxes anchorboxes 的方法通常需要设置许多超参数, 例如 b o x box box数量, 长宽比, 大小等, 这些通常需要一些经验来支持更好的结果
3. 方法描述
通过卷积网络生成一组 t o p − l e f t c o r n e r top-left\ corner top−left corner和一组 b o t t o m − r i g h t c o r n e r bottom-right\ corner bottom−right corner以及它们对应的 e m b e d d i n g v e c t o r embedding\ vector embedding vector, 这个 v e c t o r vector vector的作用是匹配属于一个 o b j e c t object object的左上右下的角点
4. corner pooling
-
作者提出 c o r n e r p o o l i n g corner\ pooling corner pooling是因为实际中, o b j e c t b o x object\ box object box的角点通常是在 o b j e c t object object的外面的, 所以没有本地的依据来进行调整, 如下图所示, 作者提出一种新的 c o r n e t p o o l i n g cornet\ pooling cornet pooling 来解决这个问题
-
具体是对角点的水平和垂直两个方向,分别在 f e a t u r e m a p feature\ map feature map上取各个 c h a n n e l channel channel上的最大值, 然后再加起来
-
但是文中提到的两个 f e a t u r e m a p feature\ map feature map是指的什么呢??
以 t o p − l e f t c o r n e r top-left\ corner top−left corner为例, 是 h o u r g l a s s n e t w o r k hourglass\ network hourglass network生成 f e a t u r e m a p feature\ map feature map分别做水平和垂直 p o o l i n g pooling pooling生成 t i j t_{ij} tij 和 l i j l_{ij} lij 的, 本质上是一个 f e a t u r e m a p feature map featuremap
精读部分
3 CornerNet
3.1 overview
C o r n e r N e t CornerNet CornerNet通过 H u m a n P o s e E s t i m a t i o n Human\ Pose\ Estimation Human Pose Estimation领域中 H o u r g l a s s N e t w o r k Hourglass\ Network Hourglass Network作为 b a c k b o n e backbone backbone提取初级特征, 然后将初级特征输入到 T o p − l e f t C o r n e r s Top-left\ Corners Top−left Corners和 B o t t o m − r i g h t C o r n e r s Bottom-right\ Corners Bottom−right Corners两个预测模块中, 经过 c o r n e r p o o l i n g corner\ pooling corner pooling及后续的 n n nn nn得到 H e a t m a p s , E m b e d d i n g s , O f f s e t s Heatmaps,\ Embeddings,\ Offsets Heatmaps, Embeddings, Offsets三个输出, 其中 H e a t m a p s Heatmaps Heatmaps为 C × H × W C×H×W C×H×W的 b i n a r y m a s k binary\ mask binary mask, 有C个 c h a n n e l s channels channels分别对应C个 c l a s s e s classes classes, H × W H×W H×W分别对应图上的点是否有 C o r n e r s Corners Corners, E m b e d d i n g s Embeddings Embeddings用来对预测的两种 c o r n e r s corners corners的 g r o u p i n g grouping grouping,也就是配对, O f f s e t s Offsets Offsets用来微调预测角点的值, 改善网络对小目标的预测结果
3.2 Detecting Corners
这个部分主要讲了两个内容:
-
N e g a t i v e P o s i t i o n Negative Position NegativePosition的定义: 以 g t p o s i t i o n gt\ position gt position为中心, r a d i u s radius radius为半径的圆外的点, 其中radius的大小有 g t b b o x gt bbox gtbbox的大小确定,原则如下图所示,大意是 r a d i u s radius radius中点组成的 b o x box box与 g t b o x gt box gtbox的 I O U IOU IOU最小为 t t t, 文中的括号里 0 : 3 0:3 0:3没看懂,感觉是笔误,应该是 0.3 0.3 0.3吧(这个不太确定). 对于 n e g a t i v e p o s i t i o n negative position negativeposition的 p e n a l t y penalty penalty, 作者使用 2 D G a u s s i a n s = e − ( x 2 + y 2 ) / 2 × σ 2 2D Gaussians=e^{-(x^2+y^2)/2\times\sigma^2} 2DGaussians=e−(x2+y2)/2×σ2生成一个 g t h e a t m a p gt\ heatmap gt heatmap为 y c i j y_{cij} ycij, 以 g t p o s i t i o n gt\ position gt position为中心,方差为 r a d i u s / 3 radius/3 radius/3, 从公式可以看到对于生成的 h e a t m a p heatmap heatmap某个点若对应 y c i j = 1 y_{cij}=1 ycij=1(即对应 g t p o s i t i o n gt\ position gt position),按照上式求 l o s s loss loss, 对于其他 n e g a t i v e p o s i t i o n negative\ position negative position,越接近 g t p o s i t i o n gt\ position gt position, 那么 ( 1 − y c i j ) (1-y_{cij}) (1−ycij)则越小, 也就是惩罚越小,来计算 l o s s loss loss.
-
O f f s e t s Offsets Offsets: 许多网络下采样后将预测的左边remap回原始图像时通常会损失一些精确度, 所以作者在 C o r n e r N e t CornerNet CornerNet中设置 o f f s e t s offsets offsets来微调预测的坐标使结果更准确.其中 ( 2 ) (2) (2)式为计算偏差公式, 那么 ο k \omicron_{k} οk和 ο ^ k \hat\omicron_{k} ο^k分别对应 g t o f f s e t gt\ offset gt offset与 p r e d i c t o f f s e t predict\ offset predict offset, 最后通过 S m o o t h L 1 L o s s SmoothL1Loss SmoothL1Loss来学习. S m o o t h L 1 L o s s SmoothL1Loss SmoothL1Loss是 F a s t R C N N Fast\ RCNN Fast RCNN中提出的,相比 L 1 L1 L1收敛更快,相比 L 2 L2 L2对于离群点、异常值更加鲁棒,训练不容易跑飞
3.3 Grouping Corners
这个部分讲如何将预测的 c o r n e r s corners corners进行配对,文中写的方法是based on the distance between the embeddings of corners ,但是具体距离的计算公式什么,文中没有给出,也许可以在作者提到的 N e w e l l Newell Newell的论文中有提到, 此外作者引用 N e w e l l Newell Newell论文中 p u l l − p u s h pull-push pull−push的方法训练使成对的 c o r n e r corner corner接近,不成对的进行远离.
3.4 Corner Pooling
大概原理如下图所示, 文中说的
v
e
c
t
o
r
vector
vector应该指的是
1
×
c
h
a
n
n
e
l
1\times channel
1×channel, 也就是从
s
p
a
t
i
a
l
spatial
spatial的每个点看向
c
h
a
n
n
e
l
channel
channel方向, 下图是一个
c
h
a
n
n
e
l
channel
channel的
t
o
p
−
l
e
f
t
c
o
r
n
e
r
p
o
o
l
i
n
g
top-left\ corner\ pooling
top−left corner pooling情形,分别从右往左与从下往上
m
a
x
p
o
o
l
i
n
g
max\ pooling
max pooling
4 Experiments
实验中作者验证了论文几个 k e y c o m p o n e n t s key\ components key components的结果,总结如下:
-
不同 p o o l i n g pooling pooling方式的对比显示 c o r n e r p o o l i n g corner pooling cornerpooling在 A P AP AP上提高2%
-
n e g a t i v e p e n a l t y negative\ penalty negative penalty中 r a d i u s radius radius的三种方式对比, 不要 r a d i u s radius radius效果最差, f i x e d r a d i u s fixed\ radius fixed radius提高接近3%, o b j e c t − d e p e n d e n t r a d i u s object-dependent\ radius object−dependent radius提高5.5%(这个是文中使用的方法)
-
在 b a c k b o n e n e t w o r k backbone network backbonenetwork的对比中 H o u r g l a s s + c o r n e r s Hourglass+corners Hourglass+corners比 F P N + c o r n e r s FPN+corners FPN+corners提到6%多, 性能差别还是挺大的.