论文阅读-目标检测(2019)-CenterNet:目标检测转化为关键点检测及其属性回归

CenterNet

论文:Objects as Points

地址:https://paperswithcode.com/paper/objects-as-points
论文阅读-目标检测(2019)-CenterNet:目标检测转化为关键点检测及其属性回归_第1张图片

基本思想

  目标检测一般将图像中物体识别为一个平行坐标轴的框,目前多数的检测器都几乎穷举了图像中所有可能的目标位置然后对其进行分类,这种方式非常低效而且需要额外的后处理。论文提出的检测方法CenterNet则将目标视为单个的点——边界框的中心点,该检测器使用关键点估计来确定中心点,然后回归所有其他的属性,比如尺寸,3D位置,角度甚至是姿态,CenterNet是一个端到端,全程可微,高校简单又准确的检测器,不仅再2d目标检测上表现较好,也可用于3d检测以及人体姿态估计。

  CenterNet将目标检测问题转换为一个标准的关键点估计问题,首先将图像喂给一个全卷积网络产生热点图,图上的峰值点对应目标的中心,每个峰值点附近的图像特征来预测目标的宽高,模型训练的方法使用的是标准的密集任务有监督学习,推断则是完全端到端没有nms后处理的方法。

  CenterNet与基于Anchor的一阶段检测器类似,一个中心点可以被视为一个形状位置的Anchor,不同的是:

  • CenterNet确定“anchor”只与位置相关,与框的重叠度无关;
  • 每个目标只有一个正“anchor”因此不需要NMS;
  • CenterNet输出的分辨率较大OS=4.

形式化

  令 I ∈ R W × H × 3 I\in R^{W\times H\times 3} IRW×H×3表示宽高分别为 W , H W,H W,H的输入图像,目标是预测一个关键点热力图 Y ^ ∈ [ 0 , 1 ] W R × H R × C \hat Y \in [0,1]^{\frac{W}{R}\times \frac{H}{R}\times C} Y^[0,1]RW×RH×C,其中 R R R表征输出的特征图尺寸, C C C表示关键点类型的数量(或者目标检测中的目标类别数),论文中 R = 4 R=4 R=4。在热力图中 Y ^ x , y , c = 1 \hat Y_{x,y,c}=1 Y^x,y,c=1对应一个被检测到的关键点, Y ^ x , y , c = 0 \hat Y_{x,y,c}=0 Y^x,y,c=0表示背景。

训练目标

2D目标检测

  训练过程,对于每个类别为 c c c的GT关键点 p ∈ R 2 p\in R^2 pR2,模型都会计算一个低分辨率的替换值 p ~ = ⌊ p R ⌋ \tilde p=\lfloor \frac{p}{R}\rfloor p~=Rp,然后使用一个高斯核函数 Y x y c = e x p ( − ( x − p ^ x ) 2 + ( y − p ^ y ) 2 2 σ p 2 ) Y_{xyc}=exp\left(-\frac{(x-\hat p_x)^2+(y-\hat p_y)^2}{2\sigma_p^2}\right) Yxyc=exp(2σp2(xp^x)2+(yp^y)2)将所有的GT关键点赋予到一幅热力图 Y ∈ [ 0 , 1 ] W R × H R × C Y\in [0,1]^{\frac{W}{R}\times \frac{H}{R}\times C} Y[0,1]RW×RH×C,如果同一类别的两个高斯生成点重叠,则以较大值为准,训练的目标损失函数如下:

L k = − 1 N Σ x y c { ( 1 − Y ^ x y c ) α l o g ( Y ^ x y c ) i f    Y x y c = 1 ( 1 − Y x y c ) β ( Y ^ x y c ) α l o g ( 1 − Y ^ x y c ) o t h e r w i s e L_k=\frac{-1}{N}\Sigma_{xyc} \begin{cases} (1-\hat Y_{xyc})^{\alpha}log(\hat Y_{xyc})&if\ \ Y_{xyc=1} \\ (1-Y_{xyc})^{\beta}(\hat Y_{xyc})^{\alpha}log(1-\hat Y_{xyc})&otherwise \end{cases} Lk=N1Σxyc{(1Y^xyc)αlog(Y^xyc)(1Yxyc)β(Y^xyc)αlog(1Y^xyc)if  Yxyc=1otherwise

  其中 α , β \alpha,\beta α,β是focal loss的超参数,论文中 α = 2 , β = 4 \alpha=2,\beta=4 α=2,β=4 N N N表示图像 I I I中关键点的数量,除以 N N N是为了对所有的正损失归一化。

  为了消除由于OS带来的离散误差,论文为每个中心点额外预测了一个偏移量 O ^ ∈ R W R × H R × 2 \hat O \in R^{\frac{W}{R}\times \frac{H}{R}\times 2} O^RRW×RH×2,所有的类别 c c c共享同一个偏移与测量,这里使用如下所示L1损失函数:

L o f f = 1 N Σ p ∣ O ^ p ^ − ( p R − p ^ ) ∣ L_{off}=\frac{1}{N}\Sigma_p\left| \hat O_{\hat p}-\left(\frac{p}{R}-\hat p\right)\right| Loff=N1ΣpO^p^(Rpp^)

  此监督旨在关键点位置 p ^ \hat p p^起作用。

  令 ( x 1 ( k ) , y 1 ( k ) , x 2 ( k ) , y 2 ( k ) ) (x_1^{(k)},y_1^{(k)},x_2^{(k)},y_2^{(k)}) (x1(k),y1(k),x2(k),y2(k))表示目标类别为 c k c_k ck的目标 k k k的边界框,其中心点 p k = ( x 1 ( k ) + x 2 ( k ) 2 , y 1 ( k ) + y 2 ( k ) 2 ) p_k=(\frac{x_1^{(k)}+x_2^{(k)}}{2},\frac{y_1^{(k)}+y_2^{(k)}}{2}) pk=(2x1(k)+x2(k),2y1(k)+y2(k)),使用关键点估计 Y ^ \hat Y Y^来预测所有的中心点,另外,为每个目标 k k k进行尺寸 s k = ( x 2 ( k ) − x 1 ( k ) , y 2 ( k ) − x 1 ( k ) ) s_k=(x_2^{(k)}-x_1^{(k)},y_2^{(k)}-x_1^{(k)}) sk=(x2(k)x1(k),y2(k)x1(k))的回归,使用L1损失来指导训练:

L s i z e = 1 N Σ k = 1 N ∣ S ^ p k − s k ∣ L_{size}=\frac{1}{N}\Sigma^N_{k=1}\left|\hat S _{p_k}-s_k\right| Lsize=N1Σk=1NS^pksk

  最终检测损失如下,其中 λ s i z e = 0.1 , λ o f f = 1 \lambda_{size}=0.1,\lambda_{off}=1 λsize=0.1,λoff=1

L d e t = L k + λ s i z e L s i z e + λ o f f L o f f L_{det}=L_k+\lambda_{size}L_{size}+\lambda_{off}L_{off} Ldet=Lk+λsizeLsize+λoffLoff

  最终论文实现了一个单一网络来预测关键点、偏移量和尺寸,每个位置对应 C + 4 C+4 C+4个模型输出。

  在推理过程中,首先提为每个类别单独的从热力图中提取峰值点,方法是检测3邻域中的最大值,令 P ^ c \hat P_c P^c表示 n n n个被检测到的类别为 c c c的中心点 P ^ = { ( x ^ i , y ^ i ) } i = 1 n \hat P=\{(\hat x_i,\hat y_i)\}_{i=1}^n P^={(x^i,y^i)}i=1n的集合,每个关键点的位置坐标由 ( x i , y i ) (x_i,y_i) (xi,yi)给出,使用关键点的值 Y ^ x i y i c \hat Y_{x_iy_ic} Y^xiyic作为检测的置信度然后在该位置产生一个边界框:

( x ^ i + δ x ^ i − ω ^ i / 2 ,    y ^ i + δ y ^ i − h ^ i / 2 , x ^ i + δ x ^ i + ω ^ i / 2 ,    y ^ i + δ y ^ i + h ^ i / 2 ) (\hat x_i+\delta \hat x_i-\hat \omega_i/2,\ \ \hat y_i+\delta\hat y_i-\hat h_i/2,\\ \hat x_i+\delta \hat x_i+\hat \omega_i/2,\ \ \hat y_i+\delta\hat y_i+\hat h_i/2) (x^i+δx^iω^i/2,  y^i+δy^ih^i/2,x^i+δx^i+ω^i/2,  y^i+δy^i+h^i/2)

  其中 ( δ x ^ i , δ y ^ i ) = O ^ x ^ i , y ^ i (\delta \hat x_i,\delta \hat y_i)=\hat O_{\hat x_i,\hat y_i} (δx^i,δy^i)=O^x^i,y^i是偏移预测量, ( ω ^ i , h ^ i ) = S ^ x ^ i , y ^ i (\hat \omega_i,\hat h_i)=\hat S_{\hat x_i,\hat y_i} (ω^i,h^i)=S^x^i,y^i是尺寸与测量,其中峰值点提取可以使用一个 3 × 3 3 \times 3 3×3最大池化,不再需要NMS后处理。

单目3D目标检测

  对于单目3D物体检测,其为每个目标输出一个三维的边界框,也就是说对于每个中心点需要输出三个额外的属性即:深度、3D尺寸和偏向角,论文为每一个输出都设计了一个单独的head。深度 d d d对于每个中心点来说是一个单独的所放量,但是深度比较难以直接回归,论文使用将深度作为一个额外的输出通道 D ^ ∈ [ 0 , 1 ] W R × H R \hat D \in [0,1]^{\frac{W}{R}\times \frac{H}{R}} D^[0,1]RW×RH来计算,这里也使用L1损失,其中 d k d_k dk是GT绝对深度,具体地:

L d e p = 1 N Σ k = 1 N ∣ 1 σ ( d ^ k ) − 1 − d k ∣ L_{dep}=\frac{1}{N}\Sigma_{k=1}^N|\frac{1}{\sigma(\hat d_k)}-1-d_k| Ldep=N1Σk=1Nσ(d^k)11dk

  目标的3D尺寸是三个参数,可以直接使用一个单独的head Γ ^ ∈ R W R × H R × 3 \hat \Gamma \in R^{\frac{W}{R}\times \frac{H}{R}\times 3} Γ^RRW×RH×3和L1损失来进行回归,其中 γ k \gamma_k γk表示目标的GT长宽高,具体地:

L d i m = 1 N Σ k = 1 N ∣ γ ^ k − γ k ∣ L_dim=\frac1{N}\Sigma_{k=1}^N|\hat \gamma_k-\gamma_k| Ldim=N1Σk=1Nγ^kγk

  最后偏向角则是一个单独的参数,很难直接回归,论文具体的方式是使用8个参数来编码偏向角,8个参数分为两组,用于两个有角度的bin。其中一个bin用于角度在 B 1 = [ − 7 π 6 , π 6 ] B_1=[-\frac{7\pi}{6},\frac{\pi}6] B1=[67π,6π]范围内,另一个bin则对应角度在 B 2 = [ − π 6 , 7 π 6 ] B_2=[-\frac{\pi}{6},\frac{7\pi}6] B2=[6π,67π]。对于每个bin,其中两个参数 b i ∈ R 2 b_i\in R^2 biR2用于softmax分类(如果朝向叫落在这个bin),另外两个参数 a i ∈ R 2 a_i\in R^2 aiR2用于预测bin内的正弦与余弦偏移(相对于bin中心 m i m_i mi),令GT朝向角 α ^ = [ b ^ 1 , a ^ 1 , b ^ 2 , a ^ 2 ] \hat \alpha=[\hat b_1,\hat a_1,\hat b_2,\hat a_2] α^=[b^1,a^1,b^2,a^2],L1损失具体为:

L o r i = 1 N ∑ k = 1 N ∑ i = 1 2 ( s o f t m a x ( b ^ i , c i ) + c i ∣ a ^ i − a i ∣ ) L_{ori}=\frac1{N}\sum_{k=1}^N\sum_{i=1}^2(softmax(\hat b_i,c_i)+c_i|\hat a_i-a_i|) Lori=N1k=1Ni=12(softmax(b^i,ci)+cia^iai)

  其中当 θ ∈ B i \theta\in B_i θBi c i = 1 c_i=1 ci=1,其余 c i = 0 c_i=0 ci=0 a i = ( s i n ( θ − m i ) , c o s ( θ − m i ) ) a_i=(sin(\theta-m_i),cos(\theta-m_i)) ai=(sin(θmi),cos(θmi)),最终预测的 θ \theta θ通过8个参数来编码,其中 j j j表示bin的索引:

θ ^ = a r c t a n 2 ( a ^ j 1 , a ^ j 2 + m j ) \hat \theta=arctan2(\hat a_{j1},\hat a_{j2}+m_j) θ^=arctan2(a^j1,a^j2+mj)

人体姿态估计

  对于人体姿态估计,其目标是为每个人实例估计 k k k个2D人体连接点,考虑对于每个中心点姿态为 k × 2 k\times 2 k×2维属性,然后将其参数化为对于中心点的一个偏移,从而直接使用L1损失回归连接点 J ^ ∈ R W R × H R × k × 2 \hat J\in R^{\frac{W}{R}\times \frac{H}{R}\times k \times2} J^RRW×RH×k×2。为了更好的输出关键点,论文还会使用一个标准的自底向上的多人体姿态估计来预测 k k k个人体关键点热力图 Φ ^ ∈ R W R × H R × k \hat\Phi\in R^{\frac{W}{R}\times \frac{H}{R}\times k} Φ^RRW×RH×k

结论

  总的来说,论文提出的方法不需要后处理,易于扩展可丝滑应用于多种视觉任务,效率高精度好,实现了较好的速度精度均衡。


欢迎扫描二维码关注微信公众号 深度学习与数学 ,每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾。
论文阅读-目标检测(2019)-CenterNet:目标检测转化为关键点检测及其属性回归_第2张图片

你可能感兴趣的