论文阅读:Hit-Detector: Hierarchical Trinity Architecture Search for Object Detection
简介:
Hit-Detector是首个能够同时识别网络架构中的backbone、neck和head部分的神经架构搜索工具,在低算力与低参数量环境下实现了高mAP指标。
前言:
在图像识别领域中,NAS已经取得了重大进展。而针对更为复杂的目标检测任务领域,则是通过将NAS技术应用到这里实现的。在此之前的研究人员已经尝试将NAS应用于目标检测任务领域中去探索其潜力。然而目前大多数基于神经搜索算法的方法仅关注于探索检测网络的不同组件之间的关系(例如Det NAS专注于搜索Backbone组件而像 NAS-FPN这样的方法则专注于特征融合问题),而忽略了其他组件如Middle layer等部分的具体设计工作。作者认为单纯的结合神经搜索算法与人工设计的方式可能无法充分发挥其潜力并限制了整体性能表现。经过深入研究作者发现了先前方法存在的局限性而Hit-Detector正是针对这一缺陷而被提出它不仅能够同时探索Backbone、Neck和Head组件还能够深入分析这些组件各自偏好使用的操作符(即它们喜欢什么样的操作而不泄露自己的隐私)。 Hit-Detector的方法表现出色,在COCO数据集上仅使用27 million参数量且无需任何额外技巧就可以达到41.4 mAP的表现令人印象深刻。
文章概括:
研究表明,搜索空间与 search strategy 的设计对神经架构搜索( NAS )的结果产生了直接影响。本研究提出了一种层次化的框架,在全局规模的操作集合中识别出最具代表性的局部 search space。
主要贡献:
- 首个基于全连接状态下协同工作的目标检测网络实现了对backbone、neck和head的综合优化;
- 通过研究发现backbone、neck和head各自擅长的操作特征,并构建分层机制,在不同子网络空间中分别探索优化结构;
- 因此得到的智能目标检测网络强度高且计算开销小。
Hit-Detector结构图:

Hit-Detector原理:
Hit-Detector超越了早期的 NAS 模型(包括 NAS-FPN 和 DetNAS 等)所面临的局限性。那么让我们简要介绍下先前 NAS 的网络结构搜索机制是如何运作的?其数学表达式如公式 (1) 所示。

我们定义A为一个有向无环图(DAG),其核心目标是探索backbone或neck可能的结构配置。在这个DAG中,每个节点代表了网络中的特定特征。边则编码了相邻节点之间所采用的操作类型,如卷积层或池化层等。其中a代表我们发现的具体网络架构,在该架构中,backbone和neck部分被优化设计。通过遍历这些子图结构,我们可以逐步构建出最优的网络模型。在此过程中,在式(1)的基础上进行推理运算以辅助搜索效率提升。通过上述分析过程, 我们可以清晰地理解式(1)的意义: 它旨在最小化验证集上的损失函数值, 这一目标对应于我们在搜索过程中不断优化的目标函数表达式.
那么Hit-Detector是怎样解决之前NAS缺陷的呢?简而言之,它就是将(1)式的搜索目标数量从一个扩展到了三个,如(3)所示:

其中a、b、r分别代表我们旨在搜索的backbone、neck和head网络结构。
上文已经描述了Hit-Detector的工作流程。现在详细阐述其具体实现步骤。
首先,在大搜索空间中定义三个独立的子空间:backbone、neck和head。
在该大搜索空间中共有N种基本操作类型(包括卷积层、池化层以及block结构等),其中N设定为32。
在该大搜索空间中的block结构如Figure2所示:

面对过大的搜索空间所带来的高耗时与高内存问题,本研究提出了一种改进方案。具体而言,在解决这一问题的过程中,我们分别从backbone、neck和head三个模块中筛选出合适的子网络结构。其中以backbone为例,在其L层的操作中引入了一个评估机制:设第l层共有i个操作得到的得分为a_{l,i}(l=1,2,…,L),我们将其定义为结构参数向量(该定义与DARTS系列提出的网络架构搜索方法高度相似)。值得注意的是,在初始阶段该向量的空间维度为L×N(L表示层数大小而N代表搜索空间规模),随着网络不断被优化和训练过程展开,在每一层内部各个操作都会产生不同的评分结果a_{l,i}。为了实现对低效操作的有效过滤,在每次迭代过程中我们都会对同一层内不同操作的评分进行排序,并按照一定的规则剔除那些评分较低的操作(即不再在子网络选择过程中考虑这些低分操作)。如此反复迭代直至最终收敛至L×Nb维的空间维度。
为了进一步提升权重评估结果的有效性并增强对各层操作重要性的区分度,在模型训练过程中我们引入了一种稀疏正则化方法(如公式4所示):

其中u是一个在折中中起作用的关键参数。

其中a表示结构化参数,Ob表示backbone的搜索空间,o表示当前NAS选择的操作。Neck和head与backbone的做法相同(就是把a分别替换成b和r,再结合(3)式,就得到Hit-Detector的目标函数啦)。由于结构化参数的存在,所以整个网络都是可微的,因此可以对网络进行端到端的搜索。
担心有些朋友不了解darts,我就再啰嗦一下结构化参数a和网络结构的关系。举个例子,搜索空间包含conv1 1,conv3 3,conv5 5三种操作,backbone的第l层则可以在三种操作中选择一个操作作为当前层,那么怎么选择呢,就是通过a来选择。a是由NAS学习得到的,可以把a当做是选择各个操作的概率,比如conv1 1的a=90%,conv3 3的a=8%,conv5 5的a=2%,那么当前层就会选择conv1*1,网络的每一层都可以通过a来选择,因此由a就可以得到整个网络结构了,所以Hit-Detector搜索网络的过程其实就是NAS学习结构化参数a的过程。
最后,本文为了防止搜索时间过长,搜索出的网络算力过大,对目标函数做了进一步优化,优化方法与proxylessnas的做法相似,给目标函数添加一个和算力有关的正则项(proxylessnas的正则项与latency有关),如(6)式:


在其中,lamata被用作平衡网络精度与计算能力的重要参数。因此,在公式C(a)中代表了backbone计算能力的统计。换句话说,在公式(6)中体现了Hit-Detector作为目标函数的核心内容。
实验结果:
由Table 2可知,在低参数规模及低计算资源消耗的情况下,该算法可实现较高的平均精度(mAP)。

根据表3的数据显示,在同一测试分辨率条件下,Hit-Detector仍然能够获得较高的mAP值。

其他:
本文对多种模型简化方式进行实验验证。例如,在不同操作的影响分析基础上引入列稀疏正则化方法,在子搜索空间筛选的重要性基础上探讨三元架构搜索的重要性,并向单阶段检测器的扩展进行了相关研究。具体细节在此从略。
在本文中若发现不足之处还望各位专家多多指教
码字不易实属原创转载请注明出处
欢迎关注我的个人公众号专注于NAS领域的小众号旨在追踪学术圈最新的NAS进展每周分享一篇最新论文由于公众号初创阶段恳请大家多加关照也希望大家能多多支持

