R-CNN:Faster R-CNN 模型学习笔记

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: R-CNN 系列模型是目标检测里的经典模型,同时也是 Caffe 的经典模型,所以为了学习 Caffe 和目标检测算法的知识,通过观看论文、网上的资料以及试着用自己的数据训练一个 Faster R-CNN 后,对于 Faster R-CNN 有了初步的了解,在此把论文内容和自己的理解整理并写下来。

R-CNN 系列模型是目标检测里的经典模型,同时也是 Caffe 的经典模型,所以为了学习 Caffe 和目标检测算法的知识,通过观看论文、网上的资料以及试着用自己的数据训练一个 Faster R-CNN 后,对于 Faster R-CNN 有了初步的了解,在此把论文内容和自己的理解整理并写下来。


一、R-CNN 的历史

R-CNN 是一个经典的目标检测模型,发展到现在已经成为了一个系列,从一开始的 R-CNN 模型,到 Fast R-CNN 模型,一直到 Faster R-CNN 模型,代表了目标检测的前沿水平。
R-CNN 模型出现较早,一开始使用了 Selective Search 算法来生成区域建议候选框,在当时是一个创新,但是现在看起来,无论是从速度还是准确率上看,都不算是很好的。在随后推出的 Fast R-CNN 中,参考了 SPPnet 的特点,大幅提高了模型的训练速度和检测速度。而在 Faster R-CNN 中,采用共享的卷积网组成 RPN(Region Proposal Network),使用 RPN 可以直接预测出建议候选框,平均每张图片 300 个,大部分计算在 GPU 中完成,且卷积网络和 Fast R-CNN 共享,大幅提升了目标检测的速度。

二、区域建议网络 —— Region Proposal Network

在 Faster R-CNN 中引入了一个新的网络 —— 区域建议网络(Region Proposal Network,RPN), RPN 是一个全卷积网络,可以在每个位置同时预测物体边界和 objectness scores 。RPN 通过端到端的训练来生成高质量的区域建议,然后被 Fast R-CNN 用来做检测。通过一种简单的交替优化方法, RPN 和 Fast R-CNN 可以共享卷积特征。在 VGG-16 模型上,能够达到 5 FPS 的帧率(使用GPU),在 PASCAL VOC 2007 和 2012 上分别取得了 73.2% 和 70.4% 的 mAP 。

(一)Region Proposal Network

为了生成区域建议,在最后的共享卷积层所输出的特征映射(feature map) 上滑动一个小网络。这个网络被全连接到输入卷积特征映射的一个 $n\times n$(在论文中 $n = 3$) 的空间窗口上,每个滑动窗口被映射到一个更低维向量(在 ZF 上为 256 维,在 VGG 上为 512 维)。这个向量被喂进两个同级的全连接层 —— a box-regression layer ( $reg$ ) and a box-classification layer ( $cls$ ) .注意输入图片的有效感受野很大(ZF 上为 171 像素,VGG 上为 228 像素)。Figure 3 在其中一个位置上说明了一个迷你网络。要注意的是,因为这个迷你网络以滑动窗口的方式运作,全连接层在所有空间位置上共享。这种结果由一个后接两个同级的 $1 \times 1$ 的卷积层的 $n\times n$ 的卷积层自然地实现。ReLUs 应用在 $n\times n$ 的卷积层的输出。
这里写图片描述

(二)具有平移不变性(Translation-Invariant)的 Anchors

在每个滑动窗口的位置,同时预测 $k$ 个区域建议,所以 $reg$ 层有 $4k$ 个输出代表了 $k$ 个 boxes 的坐标。$cls$ 层输出 $2k$ 个得分(scores)来估计每个建议选框的为 目标/非目标 的概率。$k$ 个建议选框被 $k$ 个对应的 boxes 参数化,这些 boxes 就称为 anchors 。每一个 anchor 都在上述滑动窗口的中心,对应着一种尺度和一种宽高比(aspect ratio),在每个滑动位置上都有 3 个尺度和 3 个宽高比的 anchors,总共就有 9 个。

(三)给 anchors 分配正负标签

在训练 RPN 时,给每个 anchor 分配一个二元标签(是否为目标)。
给两种 anchor 分配正标签:

  1. ground-truth box 重叠有最高的 IoU(Intersection-over-Union) 的 anchor。
  2. 与任何一个 ground-truth box 重叠都有高于 0.7 的 IoU 的 anchor。

一个 ground-truth box 可能会分配正标签给多个 anchor。

  1. 给与所有的 ground-truth boxes 的 IoU 都小于 0.3 的 anchor 分配负标签。

即不为正也不为负的 anchor 对于训练没有贡献。

(四)学习区域建议时的损失函数

根据上面的定义,我们根据 Fast R-CNN 的多任务损失(multi-task loss)来最小化目标函数。对于一张图片,其损失函数(loss function)定义如下:

$$ L({\lbrace p_i \rbrace},{\lbrace t_i \rbrace})=\frac{1}{N_{cls}}\sum_{i}{L_{cls}(p_i,p^*_i)}+\lambda\frac{1}{N_{reg}}\sum_{i}{p^{*}_{i}L_{reg}(t_i,t^*_i)} $$

在这里,$i$ 是一个 mini-batch 上一个 anchor 的索引,$p_i$ 是第 $i$ 个 anchor 为目标的预测可能性。如果 anchor 为正 ,ground-truth 标签 $p_i^*$ 为 1,否则为 0。$t_i$ 是一个代表预测的 bounding box 的 4 个参数化坐标向量, $t_i^*$ 是一个代表与正 anchor 对应的 ground-truth box 的4个参数化坐标向量。分类损失 $L_{cls}$ 是有两个分类(目标或非目标)的对数损失。至于回归损失,使用 $L_{reg}(t_i,t_i^*)=R(t_i-t^*_i)$ ,其中 $R$ 是鲁棒损失函数(robust loss function)。$p_i^*L_{reg}$ 这一项表示了回归损失只有在正 anchor ($p_i^*=1$)有作用。
对于回归损失,采用下列的4个坐标参数化:

$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),$

$x,y,w$ 和 $h$ 分别代表 box 中心坐标,宽和高。$x,x_a$ 和 $x^*$ 分别代表预测的 box,anchor box 和 ground-truth box($y,w,h$ 也一样)

三、4步训练Faster R-CNN

  1. 像上述训练 RPN。这个网络使用一个 ImageNet 的预先训练模型初始化并为区域建议任务进行端到端的微调(fine-tune)
  2. 通过 Fast R-CNN 使用第一步的 RPN 生成的建议框来训练一个单独的检测网络。这个检测网络也是由 ImageNet 的预先训练模型初始化的。在这一步,两个网络没有共享卷积层
  3. 使用检测网络来初始化 RPN 训练,但是固定共享卷积层,且只微调在 RPN 独有的层。现在,两个网络共享卷积层。
  4. 最后让共享卷积层保持固定,微调 Fast R-CNN 的全连接层。这样,两个网络共享相同的卷积层,形成了一个统一的网络。

参考:
R.Girshick,J.Donahue,T.Darrell,J.Malik. Rich feature hierarchies for accurate object detection and semantic segmentation Tech report
R.Shaoqing,H.Kaiming,R.Girshick,Jian Sun. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
[深度学习——Caffe之经典模型详解与实战,乐毅,王斌 编著]

目录
相关文章
|
1月前
|
机器学习/深度学习 编解码 算法
【深度学习】经典的深度学习模型-01 开山之作:CNN卷积神经网络LeNet-5
【深度学习】经典的深度学习模型-01 开山之作:CNN卷积神经网络LeNet-5
41 0
|
2月前
|
机器学习/深度学习
ACM MM24:复旦提出首个基于扩散模型的视频非限制性对抗攻击框架,主流CNN和ViT架构都防不住它
【9月更文挑战第23天】复旦大学研究团队提出了ReToMe-VA,一种基于扩散模型的视频非限制性对抗攻击框架,通过时间步长对抗性潜在优化(TALO)与递归令牌合并(ReToMe)策略,实现了高转移性且难以察觉的对抗性视频生成。TALO优化去噪步骤扰动,提升空间难以察觉性及计算效率;ReToMe则确保时间一致性,增强帧间交互。实验表明,ReToMe-VA在攻击转移性上超越现有方法,但面临计算成本高、实时应用受限及隐私安全等挑战。[论文链接](http://arxiv.org/abs/2408.05479)
75 3
|
3月前
|
机器学习/深度学习
CNN模型验证和CNN模型保存
【8月更文挑战第10天】CNN模型验证和CNN模型保存。
66 27
|
3月前
|
机器学习/深度学习
加载CNN保存模型
【8月更文挑战第10天】加载CNN保存模型。
46 12
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 秒懂 AI - 深度学习五大模型:RNN、CNN、Transformer、BERT、GPT 简介
**RNN**,1986年提出,用于序列数据,如语言模型和语音识别,但原始模型有梯度消失问题。**LSTM**和**GRU**通过门控解决了此问题。 **CNN**,1989年引入,擅长图像处理,卷积层和池化层提取特征,经典应用包括图像分类和物体检测,如LeNet-5。 **Transformer**,2017年由Google推出,自注意力机制实现并行计算,优化了NLP效率,如机器翻译。 **BERT**,2018年Google的双向预训练模型,通过掩码语言模型改进上下文理解,适用于问答和文本分类。
160 9
|
4月前
|
机器学习/深度学习 PyTorch 算法框架/工具
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
|
4月前
|
机器学习/深度学习 数据采集 算法
Python基于卷积神经网络CNN模型和VGG16模型进行图片识别项目实战
Python基于卷积神经网络CNN模型和VGG16模型进行图片识别项目实战
105 0
|
1月前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第7天】本文将深入探讨卷积神经网络(CNN)的基本原理,以及它如何在图像识别领域中大放异彩。我们将从CNN的核心组件出发,逐步解析其工作原理,并通过一个实际的代码示例,展示如何利用Python和深度学习框架实现一个简单的图像分类模型。文章旨在为初学者提供一个清晰的入门路径,同时为有经验的开发者提供一些深入理解的视角。
|
15天前
|
机器学习/深度学习 计算机视觉 网络架构
为什么卷积现在不火了:CNN研究热度降温的深层原因分析
纵观近年的顶会论文和研究热点,我们不得不承认一个现实:CNN相关的研究论文正在减少,曾经的"主角"似乎正逐渐淡出研究者的视野。
50 11
为什么卷积现在不火了:CNN研究热度降温的深层原因分析
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新

相关实验场景

更多
下一篇
无影云桌面