二分匹配损失: y y y 是目标的 gt 集合, y ^ = { y ^ i } i = 1 N \hat y=\{\hat y_i\}_{i=1}^{N} y^={y^i}i=1N 是 N N N 个预测值, N N N 远大于图片中的 gt 个数,同时将 y y y 视为大小为 N 并用 ∅ 填充的集合(无对象)。为了找到这两个集合的二分匹配,搜索一个具有最低成本的排列(这一部分看不懂的话,看一下匈牙利算法就能理解了,其实就是找一种匹配方法使得匹配损失最小) σ ^ = a r g m i n σ ∈ S N ∑ i N L m a t c h ( y i , y ^ σ ( i ) ) \hat\sigma={argmin}_{\sigma\in\mathfrak S_N}\sum_i^N \mathcal L_{match}(y_i,\hat y_{\sigma(i)}) σ^=argminσ∈SNi∑NLmatch(yi,y^σ(i)) 其中 L m a t c h ( y i , y ^ σ ( i ) ) L_{match}(y_i,\hat y_{\sigma(i)}) Lmatch(yi,y^σ(i)) 是gt y i y_i yi 和预测索引为 σ ( i ) \sigma(i) σ(i) 的预测框之间的匹配损失
L m a t c h L_{match} Lmatch:匹配损失考虑了类别预测和 预测框与gt框 的相似性。gt 集合每一个元素 i i i 可以看做是 y i = ( c i , b i ) y_i=(c_i,b_i) yi=(ci,bi) ,其中 c i c_i ci 是类标签(可能是 ∅ ∅ ∅), b i ∈ [ 0 , 1 ] 4 b_i\in[0,1]^4 bi∈[0,1]4 是定义 gt 框的中心坐标和其相对于图像尺寸的高度和宽度的向量。对于索引为 σ ( i ) \sigma(i) σ(i) 的预测,将 c i c_i ci 类的概率定义为 p ^ σ ( i ) ( c i ) \hat p_{\sigma(i)}(c_i) p^σ(i)(ci),并将预测框定义为 b ^ σ ( i ) \hat b_{\sigma(i)} b^σ(i),定义 L m a t c h ( y i , y ^ σ ( i ) ) L_{match}(y_i,\hat y_{\sigma(i)}) Lmatch(yi,y^σ(i))为 − L { c i ≠ ∅ } p ^ σ ( i ) ( c i ) + L { c i ≠ ∅ } L b o x ( b i , b ^ σ ( i ) ) -\mathbb L_{\{c_i\neq∅\}}\hat p_{\sigma(i)}(c_i)+\mathbb L_{\{c_i\neq∅\}}\mathcal L_{box}(b_i,\hat b_{\sigma(i)}) −L{ci=∅}p^σ(i)(ci)+L{ci=∅}Lbox(bi,b^σ(i))
L H u n g a r i a n ( y , y ^ ) L_{Hungarian}(y,\hat y) LHungarian(y,y^):
L b o x \mathcal L_{box} Lbox:
DETR 结构
Backbone:原始图片 x i m g ∈ R 3 × H 0 × R 0 x_{img}\in\mathbb R^{3×H_0×R_0} ximg∈R3×H0×R0,使用一个 CNN 生成特征图 f ∈ R C × H × W f\in\mathbb R^{C×H×W} f∈RC×H×W,典型值为 C = 2048 , H , W = H 0 32 , W 0 32 C=2048,H,W=\frac{H_0}{32},\frac{W_0}{32} C=2048,H,W=32H0,32W0
Transformer encoder:
1 x 1 1x1 1x1 卷积将 f f f 的通道维度从 C C C 减少到更小的维度 d d d,得到新特征图 z 0 ∈ R d × H × W z_0 ∈\mathbb R^{d×H×W} z0∈Rd×H×W
encoder需要一个序列作为输入,因此我们将 z 0 z_0 z0 的空间维度折叠为一个维度,从而得到一个 d × H W d×HW d×HW 特征图