DDP:微软提出动态detection head选择,适配计算资源有限场景 | CVPR 2022

DPP能够对目标检测proposal进行非统一处理,根据proposal选择不同复杂度的算子,加速整体推理过程。从实验结果来看,效果非常不错

来源:晓飞的算法工程笔记 公众号

论文: Should All Proposals be Treated Equally in Object Detection?

[图片上传失败...(image-918413-1665323159579)]

Introduction


  在目标检测中,影响速度的核心主要是密集的proposal设计。所以,Faster RCNN → Cascade RCNN → DETR → Sparse RCNN的演变都是为了稀疏化proposal密度。虽然Sparse R-CNN成功地将proposal数量从几千个减少到几百个,但更复杂deation head导致减少proposal数量带来的整体计算收益有限。

  复杂的deation head结构虽然能带来准确率的提升,但会抹杀轻量级设计带来的计算增益。对于仅有300个proposal的Sparse RCNN,deation head的计算量是主干网络MobileNetV2的4倍(25 GFLOPS 与 5.5 GFLOPS)。

[图片上传失败...(image-3bd2e-1665323159579)]

  为此,作者研究是否有可能在降低deation head计算成本的同时保留精度增益和proposal稀疏性。现有检测算法采用相同复杂度的操作处理所有proposal,在高质量proposal上花费大量的计算是合适的,但将相同的资源分配给低质量的proposal则是一种浪费。由于每个proposal的IoU在训练期间是已知的,所以可以让检测器学习为不同的proposal分配不同的计算量。

  由于在推理时没有IoU,网络需要学习如何根据proposal本身进行资源分配。为此,作者提出了dynamic proposal processing(DPP),将detection head使用的单一算子替换为一个包含不同复杂度算子的算子集,允许检测器在复杂度-精度之间进行权衡。算子的选择通过增加一个轻量级选择模型来实现,该模型在网络的每个阶段选择适用于每个proposal的最佳算子。

Complexity and Precision of Proposals


  假设主干网络产生了一组proposalX = \{x_1, x_2, \cdots, x_N \},计算消耗主要来源于detection head而主干的计算消耗可忽略,并且将deation head的计算进一步分解为per-proposal的算子h(网络结构)以及对应的proposal间处理组件pNMS操作或proposal之间的的自注意机制)。

  • Complexity of unequally treated proposals

  在之前的检测器中,所有的proposal都由同一个算子h处理:

[图片上传失败...(image-cecb8e-1665323159579)]

  其中\psi = \{h, p\}C_hC_p 分别是hp的 per-proposal 复杂度。

  • Complexity of unequally treated proposals

  与其将相同的算子h应用于所有proposal,作者建议使用包含J个具有不同复杂度算子的算子集\mathcal{G} = \{h_j\}^J_{j=1},由动态选择器s选择具体的算子分配给proposal x_i

[图片上传失败...(image-f4751-1665323159579)]

  其中s_i = s(x_i)h_{s_i}\in \mathcal{G} 表示来自 \mathcal{G} 的算子,由选择器s分配给的proposal x_i\psi = \{\{h_{s_i}\}_i, s, p\}C_{h_{s_i}}为整个per-proposal操作的计算复杂度。为简单起见,p的复杂度仍然视为常数。

  • Precision over proposals

  当deation head对proposal非统一处理时,给定复杂性约束C的最佳检测器精度可以通过优化算子对proposal的分配来提升:

[图片上传失败...(image-cc4e46-1665323159579)]

  其中\mathcal{P}(\{h_{s_i}\}_i)是分配的特定运算符\{h_{s_i}\}_i的精度。随着C的变化,P(\psi^{∗}|C)构建了复杂度-精度(C-P)曲线,该曲线表示了可使用\mathcal{G}实现的目标检测器在成本和精度之间trade-off的最佳性能。

Dynamic Proposal Processing


  基于上面的背景,作者提出了一个动态proposal处理(DPP)。假设detection head由多个阶段(\psi = \phi_1 \circ \cdots \circ \phi_K)依次处理proposal,每个阶段\varphi_K由选择器s\mathcal{G}中选择的运算符实现。为了最小化复杂性,选择器每次只应用于阶段子集k \in K \subset \{1,\cdots,K\},其余阶段使用上一次处理选择的运算符,即\phi_k = \phi_{k−1}, \forall k\notin K

Operator Set

  作者提出了由三个计算成本差异较大的算子组成的算子集合\mathcal{G} = \{g_0, g_1, g_2\}

  • g_0是高复杂度的算子,由一个参数与proposal相关的动态卷积层(DyConv)和一个前馈网络(FFN)来实现,类似于Sparse R-CNN采用的动态Head结构。
  • g_1是一个中等复杂度的算子,由FFN实现。
  • g_2是一个由identity block构建的轻量级算子,只是简单地传递proposal而无需进一步提取特征。

Selector

  在DPP中,通过控制操作符对proposal的分配,选择器是控制精度和复杂性之间权衡的关键组件。定义z^k_i是proposal x_i在阶段\phi_k的输入特征,选择器由3层MLP实现,输出与关联z^k_i的3维向量\epsilon^k_i \in [0, 1]^3

[图片上传失败...(image-f18a9a-1665323159579)]

  其中\epsilon^k_{i,j}\epsilon^k_i中的选择变量,代表将操作g_j分配给proposal x_i的权重:

  • 在训练期间,选择向量是包含三个变量one hot编码,将Gumble-Softmax函数作为MLP的激活函数,用于生成选择向量。
  • 在推理中,选择向量包含三个连续值,选择值最大的变量对应的操作。

[图片上传失败...(image-c8dac-1665323159579)]

  分配过程如图2所示,整体开销非常小(100个proposal仅需4e-3 GFLOPS),与detection head相比可以忽略不计。

  从公式4可以看出,不同的proposal和阶段选择的算子都有变化,从而能够进行动态处理。
此外,虽然\mathcal{G}仅有三个候选项,但潜在的detection head网络结构有3^{|K|}种。最后,由于选择器是可训练的,所以整体结构可以端到端学习。

Loss Functions

  为了确保在给定复杂度的情况下,DPP能为每个proposal选择最优的操作序列,作者增加了选择器损失,包含两个目标:

  • 首先,应该将复杂的算子(g_0g_1)分配给高质量的proposal(高IoU):
    [图片上传失败...(image-4a1b10-1665323159579)]
    其中u_k是第i个proposal在第k阶段的 IoU。当IoU小于0.5时,L_{iou}推动选择器将\epsilon^k_{i,0}\epsilon^k_{i,1}变为0,反之则变为1,鼓励在阶段 k 中使用更复杂的算子来获得高质量的proposal。此外,损失的大小是由IoU值决定的,为高IoU proposal选择简单结构或为低IoU proposal选择复杂结构均会产生大梯度值。

  • 其次,选择器应该知道每张图像中的实例总数,并根据总数调整整体复杂度,在实例密集时选择更复杂的算子:
    [图片上传失败...(image-f3f431-1665323159579)]
    其中T是特定图像选择g_0算子目标次数,定义为T = \alpha M,即图像中M个实例的倍数。此外,T\in [T_{min}, N ]需通过根据预先指定的下限T_{min}和由总体proposal数N给出的上限对\alpha M进行裁剪。下界防止对高复杂度算子进行过于稀疏的选择,然后\alpha则是根据实例数调整选择器。

  最终的整体选择器损失为:

[图片上传失败...(image-5a3cf1-1665323159579)]

  选择器损失是一种即插即用损失,可以应用于不同的对象检测器。在实现时,与应用DPP的原始检测器的所有损失相结合,包括交叉熵损失和边界框回归损失。

Experiments


  DPP的主干网络使用MobileNet V2或ResNet-50,使用特征金字塔网络(FPN)生成多维特征,在其之上使用Sparse R-CNN的策略学习初始proposal。为简单起见,选择器仅应用于阶段 K = \{2, 4, 6\}

  对于损失函数,设置\lambda=1T_{min}=1\alpha=2N=100

Proposal processing by DPP

  • Contribution of Each Operator

[图片上传失败...(image-646955-1665323159579)]

  不同候选算子对性能的贡献。

  • Performance of Each Stage in DPP

[图片上传失败...(image-85b207-1665323159579)]

  阶段1∼6的AP分别为\{15.6, 32.1, 39.3, 41.7, 42.0, 42.2\},精度在前 4 个阶段迅速增加,然后达到饱和。较后的阶段,复杂算子占比越少,这说明 DPP 如何在复杂性与精度之间取得相当成功。

  • Visualization

[图片上传失败...(image-2afd57-1665323159579)]

  阶段4和阶段6中,g_0的预测结果。

Main Results

  • ResNet

[图片上传失败...(image-30f0b7-1665323159579)]

[图片上传失败...(image-25d696-1665323159579)]

  基于ResNet50与SOTA算法对比。

[图片上传失败...(image-1d7584-1665323159579)]

[图片上传失败...(image-5716a4-1665323159579)]

  • MobileNetV2

  基于MobileNetV2与SOTA算法对比。

  • Inference speed

[图片上传失败...(image-156dee-1665323159579)]

  推理速度对比。

Ablation Study

  • Selection loss

[图片上传失败...(image-efc701-1665323159579)]

[图片上传失败...(image-7af811-1665323159579)]

  选择器损失的作用。

  • Target number of heavy operators

[图片上传失败...(image-754907-1665323159579)]

  复杂算子预期数量的作用。

Conclusion


  DPP能够对目标检测proposal进行非统一处理,根据proposal选择不同复杂度的算子,加速整体推理过程。从实验结果来看,效果非常不错。



如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

work-life balance.
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容