目标检测Faster-RCNN论文简读

前言

来了来了,接下来读到的这篇是计算机视觉领域非常重要的论文,之后有许多重要的视觉论文都有应用其中的思想。

Faster RCNN其实就是用RPN替换了SS算法,如果没有看过Fast RCNN建议先了解
Fast RCNN传送门

Faster R-CNN

摘要

In this work, we introduce a Region Proposal Network (RPN) that shares full-image convolutional features with the detection network, thus enabling nearly cost-free region proposals. An RPN is a fully convolutional network that simultaneously predicts object bounds and objectness scores at each position. The RPN is trained end-to-end to generate high-quality region proposals, which are used by Fast R-CNN for detection.

RPN是与检测网络共享全图的卷积特征,以此是无成本的。

简介

目前区域提议的方法都很慢,如SS和Edge Boxes。

提出了一个解决方案PRN,这个网络共享卷积层,达到减少工作量和计算时间

提出了锚框

相关工作

研究目前的方法

目标提议

  1. 基于超像素分组方法
  2. 基于滑动窗口方法

用于目标检测的深度网络

R-CNN、OverFeat和MultiBox

更快的R-CNN

简单分为两个模块,一是负责生成候选区域,二是对这些候选区进行检测。

对于这两个模块,开发了利用共享特征对两个模块进行联合训练的算法

区域提议网络

简称RPN,将任意尺寸的图像作为输入,输出一组矩阵目标提议,并每个提议都带有置信度分数。

为了生成区域建议,将在最后一个共享卷积层输出的卷积特征图上滑动一个小型网络。

每个滑动窗口被映射到一个低维特征(ZF为256-d,VGG为512-d)。这些特征送入两个并行的全连接层,分类和边界框。

锚点

就是在每个滑动窗口基础上,生成多个不同大小比例的框

平移不变性:如果目标平移了,提议也随之平移。而且是在共享的特征上平移,在锚框生成数k=9和VGG-16的情况下,输出层的参数是(512 * (4 + 2) * 9)。

损失函数

正标签分给两类锚框:

  1. 与真实边界框有最高交并比(IOU)重叠的锚点
  2. 一个与目标交并比重叠大于0.7的任何真实框
    非正锚框与所有的真实框交并比均低于0.3,则为负标签

L ( { p i } , { t i } ) = 1 N c l s ∑ i L c l s ( p i , p i ∗ ) + λ 1 N r e g ∑ i p i ∗ L r e g ( t i , t i ∗ ) L(\{p_i\},\{t_i\}) = {1\over N_{cls}}{\sum_i}{L_{cls}(p_i,p^*i)} + \lambda {1\over N{reg}} \sum_i {p^*i L{reg}(t_i,t^*_i)} L({pi},{ti})=Ncls1i∑Lcls(pi,pi∗)+λNreg1i∑pi∗Lreg(ti,ti∗)

下面是对于RPN损失函数的解释:
i i i 是一个mini-batch中锚框的索引
p i p_i pi 是第i个anchor预测为对象的概率
p i ∗ p^*i pi∗ 是正样本为1,负样本为0
t i t_i ti是一个向量,预测第i个anchor的边界框回归参数
t i ∗ t^*i ti∗是第i个anchor对应的真实框
L c l s L
{cls} Lcls用 s m o o t h L i smooth
{L_i} smoothLi

通过 N c l s N_{cls} Ncls、 N r e g N_{reg} Nreg和 λ \lambda λ归一化
λ \lambda λ默认为10
N c l s N_{cls} Ncls是一个最小批次中的所有样本数量为256
N r e g N_{reg} Nreg是anchor位置的个数(不是anchor个数)约为2400

对于边界框回归,有
t x = ( x − x a ) / w a , t y = ( y − y a ) / h a , t w = log ⁡ ( w / w a ) , t h = log ⁡ ( h / h a ) , t x ∗ = ( x ∗ − x a ) / w a , t y ∗ = ( y ∗ − y a ) / h a , t w ∗ = log ⁡ ( w ∗ / w a ) , t h ∗ = log ⁡ ( h ∗ / h a ) t_x=(x-x_a)/w_a, t_y=(y-y_a)/h_a,\\ t_w=\log(w/w_a),t_h=\log(h/h_a),\\ t^*_x=(x^*-x_a)/w_a,t^*_y=(y^*-y_a)/h_a,\\ t^*_w=\log(w^*/w_a),t^*_h=\log(h^*/h_a) tx=(x−xa)/wa,ty=(y−ya)/ha,tw=log(w/wa),th=log(h/ha),tx∗=(x∗−xa)/wa,ty∗=(y∗−ya)/ha,tw∗=log(w∗/wa),th∗=log(h∗/ha)

变量 x x x, x a x_a xa和 x ∗ x^* x∗为别是预测框、锚框和真实框,( y y y、 w w w、 h h h同理)

训练RPN

该RPN采用反向传播与随机下降(SGD)实现端对端训练。

"以图像为中心"的采样策略。

每个小批量样本均来自单张图像,其中包含大量正负样本锚点。容易偏向负样本。(如一张图片只有两三个目标,其他非目标就会很多,这就是负样本)。所以论文改为随机采样256个锚点,平衡正负样本的数量。

通过均值为0、标准差为0.01的正态分布中随机抽取权重来初始化。用于提取特征的卷积层(如 VGG-16 的前几层)并没有随机初始化,而是加载了在 ImageNet 数据集上已经训练好的权重。

ZF Net:这是一个较浅的网络,参数量较小,所以作者更新所有层的参数。

VGG-16:这是一个很深的网络,参数量巨大。为了节省显存(Conserve memory),作者只更新了从 conv3_1 层开始往后的层。

前 60,000 次迭代:学习率为 0.001(大步走,快速接近最优解)。

后 20,000 次迭代:学习率降为 0.0001(小步走,精细调整,防止震荡)。

总迭代次数:80,000 次(mini-batches)。

​​交替训练 (Alternating training)​​

​​理解:​​ 这是一种迭代式训练方法。先训练一个模块,用其输出训练另一个模块,然后用更新后的另一个模块重新初始化第一个模块并再次训练,如此交替进行,使两个模块逐渐适应彼此并收敛到共享特征。

​​翻译:​​

​​在这个解决方案中,我们首先训练 RPN,然后使用它生成的候选区域去训练 Fast R-CNN。​​

​​接着,用经过 Fast R-CNN 调优后的网络(主要指共享的卷积层权重)来初始化 RPN 网络(即替换掉 RPN 原有的初始化权重)。​​

​​然后重复这个过程(即用更新后的共享层再次训练 RPN,再用新的 RPN 候选区域训练 Fast R-CNN)。​​

​​这个方案被用于本文的所有实验中。​​ (作者最终选择的方法)

相关推荐
Raink老师6 小时前
【AI面试临阵磨枪-48】GraphRAG、多模态 RAG、自适应 RAG 原理
人工智能·ai 面试题
波动几何6 小时前
模式驱动的学术选题方法论——四种AI模式处理能力的系统建构与论证
人工智能
飞哥数智坊6 小时前
我为我的龙虾斩分身:OpenClaw 多智能体实操
人工智能·agent
七牛开发者6 小时前
HTML is the new Markdown:来自 Claude Code 团队的实践
前端·人工智能·语言模型·html
飞哥数智坊6 小时前
在二线城市做AI社群,我的五一节后到底有多疯狂?
人工智能
视***间6 小时前
智启边缘,魔盒藏锋——视程空间Pandora系列魔盒,解锁边缘计算普惠新范式
人工智能·区块链·边缘计算·ai算力·视程空间
蛐蛐蛐7 小时前
昇腾910B4上安装新版本CANN的正确流程
人工智能·python·昇腾
沪漂阿龙7 小时前
AI大模型面试题:线性回归是什么?最小二乘法、平方误差、正规方程、Ridge、Lasso 一文讲透
人工智能·机器学习·线性回归·最小二乘法
Lyon198505287 小时前
《文字定律》让AI体验,汉字逻辑与字母逻辑的差异——ChatGPT
人工智能·ai·chatgpt·ai写作
2601_957780848 小时前
Claude 4.6 对阵 GPT-5.4:2026 开发者大模型 API 选型深度解析
人工智能·python·gpt·ai·claude