[ 目标检测 ] 经典网络模型3——Faster R-CNN 详解与复现


Author :Horizon Max

编程技巧篇:各种操作小结

机器视觉篇:会变魔术 OpenCV

深度学习篇:简单入门 PyTorch

神经网络篇:经典网络模型

算法篇:再忙也别忘了 LeetCode


[ 目标检测 ] 经典网络模型3——Faster R-CNN 详解与复现

  • Real-Time Object Detection with RPN
  • Faster R-CNN 详解
    • Faster R-CNN 提出背景
      • 核心思想
    • Faster R-CNN 网络结构
      • Region Proposal Network
      • Sharing Features for RPN and Fast R-CNN
      • Faster R-CNN 结构框图
  • Faster R-CNN 复现

Real-Time Object Detection with RPN

目前先进的目标检测网络如 SPP-NetFast R-CNN 都采用区域建议算法 (region proposal algorithms) 假设目标位置 ;

这些网络都缩短了检测网络的运行时间,但 区域建议计算 依然是目标检测任务的 瓶颈 问题 ;

基于此,提出了一个 区域建议网络( Region Proposal Network,RPN ) ,实现与检测网络 共享 输入图像的 卷积特征

通过 共享卷积特征,将 RPNFast R-CNN 合并成一个单一的网络,并为神经网络加入 “注意力” 机制 ;

RPN 是一个全卷积网络,可以同时预测每个位置的 目标边框(object bounds) 和 目标得分(objectness scores) ;

RPN 通过端到端(end-to-end) 的训练,以生成高质量的 区域建议(region proposals) ;

ILSVRCCOCO 2015 比赛中,Faster R-CNNRPN 是夺得 第一名 的基础 ;


论文地址:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

参考链接:Faster R-CNN: Down the rabbit hole of modern object detection


Selected examples of object detection results

[ 目标检测 ] 经典网络模型3——Faster R-CNN 详解与复现_第1张图片


Faster R-CNN 详解

Faster R-CNN 提出背景

基于 选择性搜索(Selective Search) 的区域建议(region proposal) 算法成功的推动了目标检测的最新进展 ;

但与 高效的检测网络(efficient detection networks) 相比,选择性搜索 仍要慢一个数量级,成为目标检测实时计算的 瓶颈 问题 ;


核心思想

Faster R-CNN 利用提出的 深度卷积神经网络 计算建议框 (proposals),实现 区域建议网络 与 目标检测网络 共享卷积层

在测试阶段共享卷积,从而使得计算建议框的成本很小,从而解决了选择性搜索速度慢的缺陷 ;


Faster R-CNN 网络结构

Faster R-CNN 有两个模块组成:

  • 生成 建议框(proposes regions)的 深度全卷积网络(RPN);
  • 使用 建议框(proposes regions)的 检测器(Faster R-CNN);

RPN 模块使用了 注意力机制,实现其高效的检测 ;

[ 目标检测 ] 经典网络模型3——Faster R-CNN 详解与复现_第2张图片

Faster R-CNN 算法流程:

  • 利用 CNN网络 提取输入图像特征得到 特征图
  • 使用 RPN网络 生成 候选框 ,并将生成的候选框投影到特征图上得到对应的 特征矩阵
  • 利用 RoI Pooling 层得到 7×7 大小 特征图
  • 目标分类预测 与 边界框回归调整 ;

Region Proposal Network

(a)构建了图像金字塔和特征图,并在所有尺寸下运行分类器 ;
(b)在特征图上运行具有多尺寸(multiple scales/sizes)的过滤器金字塔 ;
(c)在回归函数中使用参考框(reference boxes)的金字塔 ;

[ 目标检测 ] 经典网络模型3——Faster R-CNN 详解与复现_第3张图片


RPN 的设计用于有效的预测具有广泛尺度和横纵比的区域建议框,避免了枚举多尺寸或宽高比的图像或过滤器 ;

RPN 将任意大小的图像作为输入,并输出一组 矩形目标建议框(rectangular object proposals),每一个建议框都有一个 对象得分(objectness score);

[ 目标检测 ] 经典网络模型3——Faster R-CNN 详解与复现_第4张图片

在最后的卷积特征图(conv feature map)上使用一个滑动窗口(sliding window) 用于生成区域 建议框

滑动窗口 以卷积特征图的 n×n 空间窗口(默认n=3)作为输入,每次滑动都映射得到一个 低维特征

最后将得到的低维特征 输入到 两个同级的全连接层中 —— 分类层(cls layer) 和 回归层(reg layer) ;

注 :

每个滑动窗口可以通过多个 Anchor boxes 生成多个区域建议框,假设每个位置的 Anchor 数量为 k,则 :

  • anchors 对于 W×H 大小的卷积特征图,可以得到 W×H×k 个 Anchor ;
  • reg layer 有 4k 个输出:每个建议框有4个参数 (x,y,h,w) ,这里的 x和y 对应着滑动窗口的中心 ;
  • cls layer 有 2k个输出:每个建议框有2个得分 (有目标 和 无目标) ;

[ 目标检测 ] 经典网络模型3——Faster R-CNN 详解与复现_第5张图片

RPN结构:主要由一个3×3卷积层(滑动窗口) 和 两个1×1卷积层(reg 和 cla) 组成(如上图所示);


[ 目标检测 ] 经典网络模型3——Faster R-CNN 详解与复现_第6张图片

以 一个滑动窗口 和 三个Anchor 为例

这里有有一个重要的特性:Anchor 和 Anchor所对应的建议框 都具有 平移不变性(translation invariant) ;

利用多尺寸(Multi-Scale) 的 Anchor 可以解决生成的建议框的尺寸问题,默认情况下,k=9,即一共有 9种 Anchor (经验所得);

  • scales 3 种尺寸 :128 × 128,256 × 256,512 × 512 ;
  • aspect ratios 3 种横纵比 :1:1,1:2,2:1 ;

在这里插入图片描述

利用训练的 bounding-box regressors 实现建议框的尺寸微调,其中每一个回归器(regressor) 负责一个尺寸和一个横纵比 ;


Sharing Features for RPN and Fast R-CNN

前面所说的 RPN 是一个训练用来 生成区域建议框 的网络,对于检测网络仍使用 Fast R-CNN

有三种方法用于共享特征训练网络:

  • 交替训练(Alternating training);
  • 近似联合训练(Approximate joint training);
  • 非近似联合训练(Non-approximate joint training);

Faster R-CNN 采用的是交替训练,先训练 RPN 然后利用生成的 建议框 训练 Fast R-CNN,再用 Fast R-CNN 调整后网络 初始化RPN ;


Faster R-CNN 结构框图

[ 目标检测 ] 经典网络模型3——Faster R-CNN 详解与复现_第7张图片

[ 目标检测 ] 经典网络模型3——Faster R-CNN 详解与复现_第8张图片


Faster R-CNN 复现

# Here is the code :

# 后 续 更 新 ~

输出结果:




你可能感兴趣的:(经典网络模型,人工智能,深度学习,目标检测,Faster,R-CNN,神经网络)