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


🤵 AuthorHorizon John

编程技巧篇各种操作小结

🎇 机器视觉篇会变魔术 OpenCV

💥 深度学习篇简单入门 PyTorch

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

💻 算法篇再忙也别忘了 LeetCode


🚀 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

在这里插入图片描述


🚀 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 模块使用了 注意力机制,实现其高效的检测 ;

在这里插入图片描述

Faster R-CNN 算法流程:

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

🚩 Region Proposal Network

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

在这里插入图片描述


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

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

在这里插入图片描述

在最后的卷积特征图(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个得分 (有目标 和 无目标) ;

在这里插入图片描述

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


在这里插入图片描述

以 一个滑动窗口 和 三个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 结构框图

在这里插入图片描述

在这里插入图片描述


🚀 Faster R-CNN 复现

# Here is the code :

# 后 续 更 新 ~

输出结果:




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Horizon John

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值