DenseBox检测算法的设计十分超前,如今很多Anchor-free方法有其影子,如果当时不是比Faster R-CNN晚了一点出现,可能目标检测领域很早就开始往Anchor-free的方向发展了



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

论文: DenseBox: Unifying Landmark Localization withEnd to End Object Detection

Introduction


  DenseBox是早期的Anchor-free目标检测算法,当时R-CNN系列在小物体的检测上有明显的瓶颈,所以作者提出DenseBox,在小物体的检测也有不错的表现。在DenseBox提出的早些时间,著名的Faster R-CNN出现了,其强大的性能主导了目标检测算法往anchor-based的方向发展。直到FPN的出现后,Anchor-free算法的性能才有了很大的提升,更多的工作开始涉及Anchor-free领域。目前很多Anchor-free目标检测研究都有DenseBox的影子,所以DenseBox的设计思路还是很超前的。

DenseBox for Detection


  DenseBox的整体设计如图1所示,单个卷积网络同时输出多个预测框及其类别置信度,输出的特征图大小为\(5\times \frac{m}{4}\times \frac{n}{4}\)。假设像素\(i\)位于\((x_i, y_i)\),其期望的5维向量为\(\hat{t}_i=\{\hat{s}, \hat{dx^t}=x_i - x_t, \hat{dy^t}=y_i - y_t, \hat{dx^b}=x_i - x_b, \hat{dy^b}=y_i - y_b \}\),第一个为分类置信度,后四个为像素位置到目标边界的距离,最后,将所有像素的输出转化为预测框,经过NMS处理后进行最后的输出。

Ground Truth Generation

  DenseBox在训练时没有将完整的图片作为输入,而是截取包含目标以及足够背景的较大区域进行训练。在训练时,将截取的图片resize大\(240\times 240\),保证人脸位于截取区域的中心以及高度大约50像素,输出\(5\times 60\times 60\)的特征图。正样本区域是目标中心点半径为\(r_c\)内的圆,\(r_c\)与目标的大小相关,论文设置为0.3。如果截取的区域包含多个人脸,仅保留中心点在截取区域中心0.8到1.25范围内的人脸,其它均认为是负样本。

Model Design

  DenseBox的网络结构如图3所示,包含16个卷积层,前12个卷积层由VGG19初始化,网络也添加了一些不同层之间的特征融合,可以综合不同感受域的特征。

Multi-Task Training

  网络同时进行分类和位置预测,网络由两个任务共同学习,分类任务的损失值直接通过L2损失计算:

  位置预测任务的损失值也通过L2损失计算:

  由于论文采用了截取图片的方式进行训练,就会面临样本制作的问题,而DenseBox在正负样本制作以及学习上面做了一些工作:

  • Ignoring Gray Zone,灰色区域是处于正负点之间的过渡区域,不参与损失值的计算。对于一个非正样本点,如果其半径为2的范围内存在正样本点,则归入灰色区域。
  • Hard Negative Mining,在训练过程中,根据公式1将样本排序,取top 1%作为hard-negative,能够帮助网络重点学习这些难样本。
  • Loss with Mask,根据像素点的类型定义特征图的掩膜\(M(\hat{t}_i)\),并结合公式1、公式2以及掩膜输出最终的损失值:

  除了上面的几点,为了更好地挖掘负样本的作用,论文也通过随机裁剪训练集以生成足够的随机负样本。在训练时,正样本图片和随机负样本图片以1:1比例输入网络。此外,为了增强网络的鲁棒性,进行了一些数据增强:

  • 随机抖动每个截取的图片
  • 左右翻转
  • 水平移动25像素内
  • 随机缩放[0.8, 1.25]

Landmark Localization

  基于上面的设计,DenseBox也可用于标记点定位,仅需要在原有的基础上添加一些层用于预测标记即可。论文还发现,可通过融合标记点分支和分类分支进一步调整检测结果,具体做法如图4所示,调整输出的损失函数跟分类损失一样采用L2函数。此时,完整的网络损失变为:

Experiments


  人脸关键点上的性能对比。

  车辆关键点检测任务上的性能对比。

Conclusion


  DenseBox检测算法的设计十分超前,如今很多Anchor-free方法有其影子,如果当时不是比Faster R-CNN晚了一点出现,可能目标检测领域很早就开始往Anchor-free的方向发展了。





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

DenseBox:思想超前的早期Anchor-free研究 | CVPR 2015的更多相关文章

  1. 洞察行业领先者的前沿思想——第五届TOP100全球软件案例研究峰会精彩谢幕

    (第五届TOP100summit开幕式现场) 12月09日-12日,由msup主办的第五届TOP100全球软件案例研究峰会(以下简称TOP100summit)在北京国家会议中心举行,作为互联网行业最有 ...

  2. 核心思想:评价早期SaaS创业公司时,投资人在关注什么?(是否有机会发展成一个平台,长期的护城河)

    编者按: 当聊到早期项目时,人们经常会问投资人一个问题:“在评价早期 SaaS 创业公司时,投资人会关注什么——指标还是其他方面?” Nakul Mandan 作为 Lightspeed 风投机构的合 ...

  3. Java编程思想——第17章 容器深入研究 读书笔记(三)

    七.队列 排队,先进先出. 除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: ad ...

  4. Java编程思想——第17章 容器深入研究(two)

    六.队列 排队,先进先出.除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: add ...

  5. Java编程思想——第17章 容器深入研究 读书笔记(四)

    九.散列与散列码 HashMap使用equals()判断当前的键是否与表中存在的键相同. 正确的equals()方法需满足一下条件: 1)自反性.x.equals(x) 是true; 2)对称性.x. ...

  6. Java编程思想——第17章 容器深入研究 读书笔记(二)

    五.List的功能方法 排除Collection已包含的方法外还增加了 boolean addAll(int index, Collection<? extends E> c);从索引位置 ...

  7. Java编程思想——第17章 容器深入研究 读书笔记(一)

    这一章将学习散列机制是如何工作的,以及在使用散列容器时怎么样编写hashCode()和equals()方法. 一.容器分类 先上两张图 来概况完整的容器分类 再细说都为什么会有那些特性. 二.填充容器 ...

  8. Java编程思想——第17章 容器深入研究(一)

    这一章将学习散列机制是如何工作的,以及在使用散列容器时怎么样编写hashCode()和equals()方法. 一.容器分类 先上两张图 来概况完整的容器分类 再细说都为什么会有那些特性. 二.Coll ...

  9. GoogLeNet 之 Inception v1 v2 v3 v4

    论文地址 Inception V1 :Going Deeper with Convolutions Inception-v2 :Batch Normalization: Accelerating De ...

  10. tensorflow学习笔记——GoogLeNet

    GoogLeNet是谷歌(Google)研究出来的深度网络结构,为什么不叫“GoogleNet”,而叫“GoogLeNet”,据说是为了向“LeNet”致敬,因此取名为“GoogLeNet”,所以我们 ...

随机推荐

  1. 【Unity3D】绘制物体表面三角形网格

    1 仅绘制三角形网格 ​ 1)创建游戏对象 ​ 创建一个空对象,重命名为 Grid,并在其下添加需要绘制网格的对象,如下: ​ 场景显示如下: ​ 2)添加脚本组件 ​ GridController. ...

  2. 使用@ControllerAdvice统一处理自定义异常

    最近工作中涉及到捕捉AOP方法中抛出的异常. 想针对某一种异常做一个统一的处理器并封装好异常信息以JSON格式交给前端进行提示. 主要实现的话有以下几步: 1.编写自定义异常类 package com ...

  3. VMware虚拟机Ubuntu系统连接网络过程

    网络和Internet设置--高级网络设置--更多网络适配器选项--WLAN. 右键选择属性--共享,勾选允许连接,选择VMnet8.(若勾选了其它,之后再想换回来,可以先取消勾选,点确定,再进入勾选 ...

  4. .NET Core 集成微信支付签名错误

    .NET Core 集成微信支付签名错误 The provided data is tagged with 'Universal' class value '16', but it should ha ...

  5. 名校AI课推荐 | MIT6.S191《深度学习导论》

    "连续开设5年,对新手友好.易于上手,参加课程的多数学生来自非计算机科学领域--" 推荐一门AI课程--MIT官方深度学习入门课程6.S191<深度学习导论(2022)> ...

  6. 【Azure Redis 缓存】Azure Redis 4.0 被扫描到漏洞,如何修补呢?

    问题描述 在安全级别要求高的公司中,任何系统都会进行安全扫描.比如Azure 云上的Redis服务,也在扫描的范围中,最后发现Redis 4.0存在以下漏洞: CVE-2019-10192:https ...

  7. 【Azure 应用服务】App Servie网站报403 ModSecurity Action错误

    问题描述 App Service 部署应用程序,然后通过App Gateway(WAF) 提供公网访问,但是一直遇见403报错,刷新页面,回退,重新Web页面能缓解403问题. 问题分析 通过浏览器F ...

  8. 【Azure 存储服务】关于对Azure Storage Account 的 Folder 权限管理和设定

    问题描述 在一个storage account下面有很多folder,需要对不同的folder设置不同的权限给到不同的用户来访问使用,怎么样设定比较合理? 问题解答 一:可以使用SAS共享访问签名进行 ...

  9. 多线程系列(十一) -浅析并发读写锁StampedLock

    一.摘要 在上一篇文章中,我们讲到了使用ReadWriteLock可以解决多线程同时读,但只有一个线程能写的问题. 如果继续深入的分析ReadWriteLock,从锁的角度分析,会发现它有一个潜在的问 ...

  10. ventoy集成微PE+优启通;vmware虚拟机如何进入PE系统,ventoy启动盘制作。

    Ventoy下载地址:Ventoyhttps://www.ventoy.net/cn/index.html 一.Ventoy介绍 Ventoy是一个制作可启动U盘的开源工具.有了Ventoy你就无需反 ...