Acquisition of Localization Confidence for Accurate Object Detection

Intro

目标检测领域的问题有很多,本文的作者捕捉到了这样一个问题,就是nms算法根据类别置信度为准则去删掉与他iou大于一定阈值的算法是否合理?事实是,分类置信度没法评估回归框是否回归的准确,这就造成了一种情况,分类置信度高的不一定回归的准,那么回归的准的又因为与之iou更高而被剔除了。为什么回归的准的反而类别置信度可能不高,而类别置信度高的可能回归的不准呢?本文一一给出了解答,并提出了IOUNet作为解决方案。

先验知识

NMS算法

参见该博客:https://www.cnblogs.com/king-lps/p/9031568.html

NMS是一个比较基础的东西,貌似面试的时候也经常要写NMS。

回归方式

一般有两种回归方式

  1. 直接回归坐标,端到端
  2. 根据预定于的Anchor去回归偏移量

此外,回归的的具体值也有很多不同的做法。

  1. 回归x、y、w、h,也就是回归中心点的坐标和框的宽高。
  2. 回归x1、y1、x2、y2,也就是直接回归左上角的点和右下角的点。
  3. 回归dl、dr、du、db,根据anchor去回归anchor中心到各个边的offset。
    4.回归Ox、Oy、w、h,回归距离anchor的中心offset和宽高。

其中,一般会对回归的值进行缩放,使得回归的结果更容易学习。

比如x1/w,y1/h,x2/w,y2/h等等

对于宽高一般回归logw和logh。

一般认为通过学习平移缩放这样的线性变换能够使得回归出来的框更加接近真实结果。具体解释见:

https://www.jianshu.com/p/2c0995908cc3

问题

Misaligned classification and localization accuracy

由上面的直观的图我们可以看出,类别置信度其实是不能作为先决条件来排除回归框的,因为类别置信度高的框不一定标的是准的。

显然这么一两张图还是没办法说明这个问题,所以只有下面这张图才能很清楚的说明类别置信度是否能作为回归框的标准。

横轴是iou,纵轴是cls score,从图中可以看出,iou其实与cls score并不是一个线性关系,有很多点其实并没有分布在中间,这说明,尽管cls score的值有很多点是比较大的但是其iou并不是很大的,如图有很多cls score接近1的点的iou却只有0.6-0.8,所以,cls score其实并不能衡量框的准确。此外,cls score和iou的相关系数只有0.217,而使用本文的方法相关系数和达到0.617。

因而,作者认为可以直接设计一种结构来让网络学习到iou的值,即给定一张图,通过RPN得到ROI,然后将ROI输入网络,输出IOU的值,然后用得到的IOU去引导NMS,而非使用cls score去引导。

Non-monotinic bounding box regression

简单来说就是,回归的效果不一定越学学好。

通过这张图可以看出,通过简单的回归方法学习出来的结果,随着迭代次数的增加,其AP并不一定是增加的,而是先上升再下降的,所以,这种回归方式也有弊端。

而本文提出的Optimization Based 回归方式就能很好的改善这个问题。

Roi Pooling

通常二阶段网络都需要这么一个结构,将proposal的坐标映射成feature map的区域,然后对区域进行pooling,得到size固定的输出feature map。

通常情况下有上图中的Roi Pooling和Roi Align两种方式。本文所描述的都是avg pooling过程。

前者先对隐射到feature map的坐标进行量化,然后所有点取均值,这很显然带来了量化误差。

后者为了解决量化误差,提出了Roi Align,坐标映射完之后,使用双线性插值,得到最终的点,然后对插值后的点求平均。但是结果永远是对4个点进行平均,没法表达Roi的尺度。

本文提出了PrRoi Pooling的方案,后面会详细讨论。

解决

PrRoIPooling

第一步将坐标连续化,一张图每个点的坐标都是离散化的,而我们第一步就是将坐标连续化:
\[
f(x,y) = \sum_{i,j}IC(x,y,i,j) \times w_{i,j}
\]
这里IC是插值
\[
IC(x,y,i,j) = max(0,1-|x-i|)\times max(0,1-|y-i|)
\]
所以一张图上任意连续点都有值了。

然后就是Prpool的公式:
\[
PrPool(bin,F) = \frac{\int_{y_1}^{y_2}\int_{x_1}^{x_2}f(x,y)dxdy}{(x_2 - x_1)(y_2 - y_1)}
\]
可以看到就是对区域内所有点求均值。

IoU-Net

网络结构如图所示:

整个画黑框的部分就是IoUNet的主体,输入的图片通过RPN得到region proposal,然后使用本文提出的PrRoIPoolin池化到一个feature map,然后网络去预测iou。

这一部分的训练其实是单独的,也就是说,学习iou的训练并不是和学习cls score、bbox reg一起的,而是作者通过随机去通过gt构建偏移的框,去训练学习iou。

然后训练完成之后这一部分应该就不动了,然后再去单独训练cls 和 reg。

上面的工作都完成之后,网络就能输入一张图片,得到iou、cls score和reg的四个坐标了。

Bounding box refinement as an optimization procedure

上面说啦,回归的效果不一定越学越好,于是就要针对回归方式进行改进。

IoUNet是直接优化Iou(Box_det,Box_gt)的,使用梯度提升来最大化IoU。

算法流程如下:

第三行算的是IoU关于bj的四个梯度,然后在第6行里,之所以要scale一下grad,是因为想要不同axis的学习率不一样,比如对于x方向,这个方向的梯度就乘以w,对于y方向,这个方向的梯度就乘以h。这跟直接优化x/w和y/h是一样的。

直接利用了IoU来优化refine部分,这部分训练是端到端的。

IoU guided NMS

最后呢,网络输出的框还是要经过去重,前面说了传统nms的缺点,所以学了IoU自然要自用IoU来执行NMS,称之为IoU guided NMS。

算法流程如图:

也是比较容易理解的一部分吧。

流程梳理

经过修改,整个网络运行的过程就变成了:

  1. 单独训练IoU Net,使得网络输入一张ROI图就能得到其与gt的IoU。
  2. 单独训练RPN。
  3. 训练分类和回归网络,使用本文提出的优化方法对bbox位置进行优化。
  4. 使用iou guided nms对预测的框进行去重,保留最终结果并输出。

[论文理解] Acquisition of Localization Confidence for Accurate Object Detection的更多相关文章

  1. Acquistion Location Confidence for accurate object detection

    Acquistion Location Confidence for accurate object detection 本论文主要是解决一下两个问题: 1.分类得分高的预测框与IOU不匹配,(我猜应 ...

  2. 论文笔记:Rich feature hierarchies for accurate object detection and semantic segmentation

    在上计算机视觉这门课的时候,老师曾经留过一个作业:识别一张 A4 纸上的手写数字.按照传统的做法,这种手写体或者验证码识别的项目,都是按照定位+分割+识别的套路.但凡上网搜一下,就能找到一堆识别的教程 ...

  3. 目标检测论文解读1——Rich feature hierarchies for accurate object detection and semantic segmentation

    背景 在2012 Imagenet LSVRC比赛中,Alexnet以15.3%的top-5 错误率轻松拔得头筹(第二名top-5错误率为26.2%).由此,ConvNet的潜力受到广泛认可,一炮而红 ...

  4. [论文理解] An Analysis of Scale Invariance in Object Detection – SNIP

    An Analysis of Scale Invariance in Object Detection – SNIP 简介 小目标问题一直是目标检测领域一个比较难解决的问题,因为小目标提供的信息比较少 ...

  5. 深度学习论文翻译解析(八):Rich feature hierarchies for accurate object detection and semantic segmentation

    论文标题:Rich feature hierarchies for accurate object detection and semantic segmentation 标题翻译:丰富的特征层次结构 ...

  6. [论文理解]Region-Based Convolutional Networks for Accurate Object Detection and Segmentation

    Region-Based Convolutional Networks for Accurate Object Detection and Segmentation 概括 这是一篇2016年的目标检测 ...

  7. 目标检测--Rich feature hierarchies for accurate object detection and semantic segmentation(CVPR 2014)

    Rich feature hierarchies for accurate object detection and semantic segmentation 作者: Ross Girshick J ...

  8. 2 - Rich feature hierarchies for accurate object detection and semantic segmentation(阅读翻译)

    Rich feature hierarchies for accurate object detection and semantic segmentation Ross Girshick Jeff ...

  9. 目标检测系列 --- RCNN: Rich feature hierarchies for accurate object detection and semantic segmentation Tech report

    目标检测系列 --- RCNN: Rich feature hierarchies for accurate object detection and semantic segmentation Te ...

随机推荐

  1. C#字符串和16进制字符串之间的转换

    将字符串编码成 16进制 字符串表示: using System;using System.Collections.Generic;using System.Linq;using System.Tex ...

  2. AxMath_V2.5.0.0安装和激活

    目录 1. 相关推荐 2. 按 3. AxMath 功能与特色 4. 软件介绍 4.1. 编辑与排版 4.2. 科学计算功能 4.3. 输出与发布 4.4. 运行环境 4.5. 破解说明 5. 安装步 ...

  3. 关于SYSLINUX的一些重要描述摘录

    以下资源都来自官方文档,原文摘录 The SYSLINUX suite contains the following boot loaders ("derivatives"), f ...

  4. MySQL数据库 、数据表、数据的增删改查简版

    数据库操作 # 增 CREATE(DATABASE | SCHEMA)[IF NOT EXISTS] db_name [[DEFAULT] CHARACTER SET[=]charset_name] ...

  5. 前端入门Js笔记

    T 001 ____________--信息页面展示 需求分析: 有一个页面,在页面上有很多文字信息,且格式不一. 技术分析: html: 文字标签: 字体标签: 标题标签: 其他标签: 排版标签: ...

  6. K8S搭建过程随笔_证书CFSSL

    安装CFSSL mkdir -p /opt/k8s/cert && cd /opt/k8swget https://pkg.cfssl.org/R1.2/cfssl_linux-amd ...

  7. TensorFlow可以在终端和通过终端打开的PyCharm中运行,不能在直接打开的PyCharm中运行

    然后看运行窗口的出错信息,点击最右边的view,发现缺少个文件,如代码所示 Traceback (most recent call last): File "/usr/local/lib/p ...

  8. Ubuntu18.04安装 NVIDIA驱动

    Ubuntu18.04安装 NVIDIA驱动 参考自博客:https://blog.csdn.net/jsjason1/article/details/88086904 我确定这篇文章是否很有必要,我 ...

  9. zencart设置默认货币三种方法

    zencart设置默认货币为USD 方法一:mysql UPDATE configuration SET configuration_value = 'USD' WHERE configuration ...

  10. JavaScript对象原型

    一.MDN上的解释(有点抽象) 基于原型的语言? JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模 ...