编译 | VincentLee

来源 | 晓飞的算法工程笔记

Introduction

目前,主流的目标检测算法使用多种形状的anchor box作为初始预测,然后对anchor box进行回归调整,anchor box的配置是检测算法中十分重要的超参数。一般而言,anchor box的配置都是简单地通过人为指定,比如Faster R-CNN经典的的9种形状,也可以像YOLO一样通过k-means对数据集进行分析,得出特定的配置。

为了人工设置超参数的环节,近年来很多关于超参数优化问题(HPO, hyper-parameter optimization)的研究,最有效的方法为贝叶斯优化(BO)和bandit-based策略。在分析了当前方法的优劣后,论文提出一种自适应的anchor box优化方法AABO,该方法基于贝叶斯优化和Sub-Sample方法,能够自动切高效地搜索到最优的anchor设置,榨干主流目标检测算法的潜力。

Relative Method

这里先对论文经常提及的3种超参数搜索方法进行简单的介绍,方便下面的理解。

Bayesian optimization

超参数的验证通常需要进行模型训练,会耗费大量的时间,所以贝叶斯优化的核心是使用替代模型(prior function)来代理目标模型,替代模型一般为概率分布模型。在得到替代模型后,使用采集函数(acquisition function)从候选集中选择一组合适的超参数进行测试,采集函数需要能够很好地平衡exploitation和exploration,测试则是使用目标模型进行正常的训练和验证,最后将当前结果加入观测数据中,用于训练替代模型,反复进行上述的操作。

贝叶斯优化的完整流程如上面所示,在每轮的迭代中基于替代模型和采集函数获取一组超参数,然后使用目标模型进行验证,最后将验证结果加入观测数据集并更新替代模型。

Hyperband

Bandit-based方法在限定资源的情况以高效的策略寻找最优超参数,资源可为时间、迭代次数等,而Hyperband是经典的bandit-based方法。Hyperband在Successive Halving算法的基础上进行了扩展,每次选取一批超参数进行多轮迭代,每轮迭代将资源均匀地分配给待验证的超参数组合,每轮结束时保留超参数组合进行下一轮。

Hyperband的完整流程如上面所示,为单超参数分组可分配的最大资源,包含两个循环,外循环负责控制每次验证的初始可分配的资源数以及验证的分组数,逐步增加和减少,分组由随机采样所得。内循环则进行Successive Halving算法,共进行次迭代,逐步增加每组的可分配资源,并且每次保留最优的分组。

BOHB

实际上,上面的两种经典超参数方法都有其各自的优缺点,贝叶斯优化虽然搜索高效,但是容易陷入局部最优解,而Hyperband虽然搜索比较全面,但效率不够高。所以,BOHB结合了贝叶斯优化和Hyperband进行超参数优化。

图1

BOHO的完整流程如上所示,可简单地认为将Hyperband的随机采样替换为贝叶斯优化进行采样,然后将Hyperband的超参数组合及其对应的输出加入到观测数据中,用于更新替代模型。需要注意的是,BOHO的替代模型是一个多维核密度估计(KDE)模型,类似于TPE(Tree Parzen Estimator)。如论文提到的,BOHO有一个比较严重的问题,对于难学习的样本,一般需要较长的训练周期,而由于BOHO使用HyperBand进行快速验证,所以不一定能完整地测出超参数的真实准确率,导致最终的结果有偏差。

Preliminary Analysis

Default Anchors Are Not Optimal

图2

随机采样100组不同的anchor设置,每组包含3种尺寸和3种长宽比,然后与Faster R-CNN的默认anchor配置进行性能对比。结果如上图所示,红线为默认设置的性能,可以看到,默认设置并不是最优的。

Anchors Influence More Than RPN Structure

图3

使用BOHB同时搜索RPN head结构以及anchor设置,RPN head的搜索空间如上图所示。

结果如上表所示,可以看到anchor设置搜索带来的性能提升在一定程度上要高于RPN head结构搜索。‍‍

Search Space Optimization for Anchors

论文通过分析目标bbox的分布特性,设计了紧密的搜索空间,主要基于以下两个特性。

Upper and Lower Limits of the Anchors

论文对COCO数据集目标的尺寸和长宽比进行统计,并且得到了ratio的上界和下界:

图4

统计结果如上图所示,其中蓝点为每个目标,黄线分别为上界和下界,中间的黑色长方形为BOHB搜索实验的搜索空间。可以看到,有一部分的搜索空间在上界和下界之外,是无效的搜索,所以约束搜索空间在上界和下界之间是有必要的。另外,图中有5个红色的框,是论文为RPN的每层设定的对应搜索空间,下面会提到。

Adaptive Feature-Map-Wised Search Space

图5

论文对FPN每层的输出进行了统计,结果如上图所示。可以看到,不同层包含不同数量和不同形状的输出,随着层数的增加,anchor的数量越少,长宽比范围也越小。

图6

基于上面的分析,论文设计了自适应FPN的搜索空间,图4中的5个红框与上下界之间的区域即为FPN每层对应的搜索空间。

具体搜索如上图所示,每层都有独立的搜索空间,层数越大,anchor的数量、尺寸范围和长宽比范围越小。实际上,与图4的黑矩形框搜索空间对比,这种自适应FPN搜索空间更大,而且每层较小的搜索空间有助于HPO算法的更集中地进行搜索。

Bayesian Anchor Optimization via Sub-sampling

图7

论文提出的搜索方法如图7所示,包含BO和子采样方法,分别用于选择潜在的设置以及为不同的设置分配不同的计算资源。整体思路和BOHB类似,将其中的Hyperband替换成了Sub-Sample方法。

Bayesian Optimization

论文在实现时,BO模块与与BOHB类似,使用TPE(Tree Parzen Estimator)作为核密度函数进行建模,TPE包含两个概率密度函数:和,分别表示结果好的概率和结果差的概率,其中为当前的观测数据,为当前观测数据的最优结果,采样时取最大的超参数组合。需要注意的是,由于Hyperband只保证最种输出的结果的准确性,其它结果由于在中途就停止了,资源不足,输出不一定准确,直接用这些结果来对进行训练会造成很大的误差,所以需要一个更好的方法来解决这个问题。

Sub-Sample Method

Sub-Sample也是bandit-based方法,在资源有限的情况,尽可能测试出优质的候选超参数组合。定义为候选超参数组合,Sub-Sample方法基于观测数据进行选择, 为当前观测点相对于上一个观测点的收益。

Sub-Sample方法如上所示,首先对所有超参数组合进行最小资源的测试,得到一批观测数据,然后每轮选取已使用资源最多超参数组合作为leader,若其它组合优于leader,则赋予其资源,否则赋予leader资源,判断当前组合是否优于leader组合有以下两个规则:

第一条规则根据观测次数进行判断,为非负单调阈值,用于控制每个超参数的最小观测次数,一般设为。第二条规则根据两个组合的近期收益进行判断,收益更高即为优。

Experiment

  COCO数据集上搜索到的最优anchor组合

  在不同的数据集上进行对比

 嵌入SOTA方法进行对比

  与其它方法的对比实验

Conclustion

论文提出超参数优化方法AABO,该方法核心基于贝叶斯优化和Sub-Sample方法,能够自适应的搜索最优的anchor设置。从实验结果来看,AABO能够仅通过anchor设置优化,为SOTA目标检测方法带来1.4%~2.4%的性能提升。

  • 参考内容

    BOHB -- https://nni.readthedocs.io/zh/latest/Tuner/BohbAdvisor.html

  • 论文:

    AABO: Adaptive Anchor Box Optimization for Object Detection via Bayesian Sub-sampling

  • 论文地址:

    https://arxiv.org/abs/2007.09336

更多精彩推荐
  • 首次在手机端不牺牲准确率实现BERT实时推理,比TensorFlow-Lite快近8倍,每帧只需45ms

  • Python让你成为AI 绘画大师,简直太惊艳了!(附代码))

  • 关于Python 3.9,那些你不知道的事

  • 腾讯回应 Wecom 是企业微信海外版;美国地方法院紧急叫停微信禁令;Vue 3 发布 | 极客头条

  • 曾是谷歌程序员,抛下百万年薪创业,4 年成就 7 亿用户,今身价百亿!

AABO:自适应最优化Anchor设置,性能榨取的最后一步 | ECCV 2020相关推荐

  1. PS出现“不能完成存储为命令,因为没有足够的内存RAM” 设置性能时“要求96和8之间的整数。已插入最接近的数值”

    我今天想使用一下PS来着,结果第一次就出现了"不能完成存储为命令,因为没有足够的内存RAM",可如下解决: 1.在菜单栏打开"编辑"-"首选项&quo ...

  2. 华擎服务器主板 稳定性,【华擎X570 Steel Legend主板使用总结】设置|性能_摘要频道_什么值得买...

    华擎X570 Steel Legend主板使用总结(设置|性能) 华擎主板的BIOS设置与华硕主板有较大的不同.华擎X570 Steel Legend主板BIOS中所有的超频选项都集中在"超 ...

  3. ubuntu:NVIDIA设置性能模式,以降低CPU使用、温度

    NVIDIA设置性能模式,以降低CPU使用.温度 ubuntu安装完NVIDIA显卡驱动后 终端输入 nvidia-settings 选择OpenGL Settings->Image Setti ...

  4. BODY background=自适应大小_C# 设置Excel数据自适应行高、列宽的2种情况

    Excel表格中,由于各种数据的复杂性,可能存在单元格中的数据字号大小.数据内容长度不一而出现列宽过宽.过窄或者行高过大.过小的问题.常见的解决方法是调整行高.列宽.在Microsoft Excel中 ...

  5. 目标检测 YOLOv5 anchor设置

    目标检测 YOLOv5 anchor设置 1 anchor的存储位置 1.1 yaml配置文件中例如 models/yolov5s.yaml # anchors anchors:- [10,13, 1 ...

  6. vue中自适应rem的设置及vant组件库px自动修改为相对大小的方法两则(postcss-pxtorem和postcss-px-to-viewport)

    一.vue中自适应rem的设置 新建文件src/libs/rem.js function setRem() {// 750px为设计稿视口宽度 字体大小默认18px;const screenWidth ...

  7. ps软件怎么测试性能,photoshop如何设置性能

    工作中我使用最多的文件格式是PSD,为保证图像的兼容性,Adobe对PSD文件的大小限定为最大2G.那么大家知道photoshop如何设置性能吗?下面是学习啦小编整理的photoshop如何设置性能的 ...

  8. 【微论坛系统v2.01】轻型论坛模块+可卸载式安装+采用layui自适应模板+可设置是否开启签到

    源码简介与安装说明: 微论坛系统是邳州天目网络科技有限公司开发的一款轻型论坛模块,可卸载式安装.管理方便.使用mvc架构极易二次开发.内置大量的钩子扩展容易 模板采用layui自适应模板,省去做wap ...

  9. 计算机调整最佳外观不起作用,Win7怎么设置性能选项视觉效果调整为最佳外观?...

    虽然Win10系统推出有一段时间了,整体的扁平化设计也是挺好看的,但还是有不少Win7系统的用户喜欢毛玻璃效果,一般情况下,配置越高的电脑,把特效开到最佳外观,能得到更好的视觉体验,但是普通配置的电脑 ...

最新文章

  1. No modifications are allowed to a locked ParameterMap
  2. Ubuntu修改终端@前面的用户名
  3. 排序算法(插入、快速、归并)java实现
  4. JS学习笔记(第五章)(String类型)
  5. error:“ACCESS_MASK”: 不明确的符号
  6. CCNA 02 OSI七层
  7. 智能家居物联网化将成为AWE大会最大看点
  8. 可见性、原子性和有序性问题
  9. php全选帖子删除,用PHP实现全选全删
  10. SparkStructured报错:Failed to send RPC xxx to /xxx:34744: ClosedChannelException Lost executor
  11. 什么是分布式数据库中间件
  12. Django 安装使用
  13. (转)关于最近疯狂流行的文件夹变成exe文件的病毒查杀办法
  14. 水晶报表for java_水晶报表(crystal reports)--java
  15. 配置urlrewrite不生效
  16. 使用git进行word版本管理
  17. ZigBee 集中式网络与分布式网络
  18. 苹果开发者账户续费 支付授权失败
  19. 基于Mathcad的LLC公式推导与化简(一)
  20. (转)11gR2新特性:Heavy swapping observed on system in last 5 mins

热门文章

  1. JNDI概述(转载)
  2. Linux0.00内核为什么要自己设置0x80号陷阱门来调用write_char过程?
  3. Mac中MacPorts安装和使用
  4. windows 切换 默认 jdk 版本
  5. java参数传递:值传递还是引用传递
  6. Linux上安装jdk8
  7. java lamdba表达式效率_java8新特性Lambda表达式为什么运行效率低
  8. English Spoken Math
  9. 链接2: excel中的截取文子串的功能------left,mid以及right函数使用
  10. 2018-3-27 专家系统