第十六周:RCNN论文阅读

摘要

这篇博客介绍了CRNN:Rich feature hierarchies for accurate object detection and semantic segmentation这篇文章,CRNN是一种双阶段目标检测算法。RCNN 通过选择性搜索方法生成候选区域,再用CNN网络提取候选区域特征,用SVM分类器对候选区域进行分类,并用线性回归期对边界框进行调整,取得了比传统目标检测算法更高的性能,尤其在小物体检测和精细定位方面优势明显。另外,针对当时目标检测数据集不足的问题,文章利用了迁移学习的方法,先用相对丰富图像分类数据集来训练CNN,再用目标检测数据集对其进行微调。迁移学习的思想至今仍被广泛使用。

Abstract

This blog post introduces the article “CRNN: Rich feature hierarchies for accurate object detection and semantic segmentation,” which discusses the CRNN, a two-stage object detection algorithm. The RCNN generates candidate regions through selective search, then uses a CNN network to extract features from these regions. It classifies the candidate regions with an SVM classifier and adjusts the bounding boxes with a linear regression model, achieving higher performance than traditional object detection algorithms, especially in detecting small objects and precise localization. Additionally, to address the issue of insufficient object detection datasets at the time, the article employs transfer learning, training the CNN with a relatively abundant image classification dataset and then fine-tuning it with an object detection dataset. The concept of transfer learning is still widely used today.


文章简介

Title: Rich feature hierarchies for accurate object detection and semantic segmentation
Author: Girshick, R (Girshick, Ross) ; Donahue, J (Donahue, Jeff) ; Darrell, T (Darrell, Trevor) ; Malik, J (Malik, Jitendra)
WOS:https://arxiv.org/abs/1311.2524


研究背景与动机

在本文作者提出RCNN算法之前,目标检测方法主要基于手工特征,如尺度不变特征变换(SIFT)和方向梯度直方图(HOG)。但是,手工特征的设计依赖于人类的先验知识,对于复杂多变的物体形状和场景,很难提取到足够具有代表性的特征。而且这些方法在处理大规模数据集和复杂场景时,计算效率较低,准确性也难以满足实际需求。
SIFT和HOG是团块、方向的空间像素信息,这类似于灵长类大脑皮层区域的V1细胞(类似卷积神经网络的前几层)。但识别发生在下游的几个阶段,也就是说,对视觉识别来说有分层的、多阶段的过程来计算特征有着更大的潜力。
在规范的PASCAL VOC数据集上测量的目标检测性能已经达到瓶颈。性能最好的方法是复杂方法的集成,其通常将多个低级图像特征与高级上下文相结合。
随着2012年AlexNet的提出及其在图像分类上的突出表现,研究者们开始思考CNN 可以在多大程度上运用到目标检测领域。

RCNN算法流程

为了回答 CNN 可以在多大程度上运用到目标检测领域这一问题,必须先解决两个问题:

  1. 用深度神经网络来定位目标
  2. 用少量的标记数据来训练模型
    在这里插入图片描述
    RCNN先在原图上生成包含对象的候选框,本文是采用的selective search 算法来生成候选框。然后将不同大小的各个候选框通过仿射图像扭曲来进行缩放,得到固定大小的“warped region”。再将各“warped region”送入卷积网络中提取特征,将特征送入SVM对每个“warped region”进行分类。同时,CNN提取到的特征会送入用于微调边框的SVM,用于预测目标边框的调整参数,使定位更准确。
    对于第一个问题,RCNN先后用selective search算法得到可能包含对象的候选框,然后利用CNN学习所有候选区的特征,再将其送入SVM,得到边框的调整参数,实现目标的准确定位。
    对于第二个问题,本文是利用了迁移学习的思想。对于图像分类任务,已经有相对较多的数据集,所以先用ImageNet 预训练一个用于图像分类的CNN网络,文中用的是AlexNet。预训练后的CNN网络已经具有较好的提取图像特征的能力,然后用目标检测数据集PASCAL VOC来对CNN网络进行微调,使得CNN能够更有效的提取PASCAL VOC图像的特征。

模型训练

RCNN需要训练的模型有三个:CNN、SVM分类器、边界框回归SVM。
在这里插入图片描述
训练流程:
在这里插入图片描述

CNN微调

在预训练时,用的CNN是AlexNet,但输出的类别数与ImageNet中的不同,需要根据PASCAL VOC的类别数来更改输出层,改为N+1个神经元,其中N是PASCAL VOC中对象的类别数,还需要判断是否为背景,预训练的CNN网络结构描述如下:
在这里插入图片描述
CNN微调时的输入时PASCAL VOC数据集(经过SS算法生成候选框),其中包含了标注的边界框信息和类别信息。
目标检测的正样本(分类对象)比负样本(背景)少得多,为了增加正样本的数量以保证正负样本的相对平衡,训练时以32:96(mini- batch size=128)的要求来对正负样本采样,正样本只有一个,需要扩充正

### Faster R-CNN 源码下载 Faster R-CNN 的源码可以在多个 GitHub 仓库中找到,这些仓库提供了不同框架下的实现方式。以下是几个主要的开源项目链接: - 原始版本由论文作者提供,基于 Caffe 实现,可以从以下地址获取: ```plaintext https://github.com/rbgirshick/py-faster-rcnn [^3] ``` - 如果需要基于 PyTorch 的实现,可以参考以下两个仓库之一: ```plaintext https://github.com/yuhuayc/da-faster-rcnn [^2] 或者 https://github.com/krumo/Domain-Adaptive-Faster-RCNN-PyTorch ``` - 对于希望了解 VGG16 骨干网络如何被分割成 RCNN_base 和其他模块的情况,可查阅如下代码片段中的初始化函数 `_init_modules`,它展示了如何构建 Faster R-CNN 的核心组件[^4]。 ```python def _init_modules(self): self.RCNN_base = nn.Sequential(*list(vgg.features._modules.values())[:conv_layer_index]) self.RCNN_top = vgg.classifier self.RCNN_cls_score = nn.Linear(n_features, n_classes) self.RCNN_bbox_pred = nn.Linear(n_features, n_classes * 4) ``` 上述代码片段来自 PyTorch 版本的 Faster R-CNN 源码解析,其中 `self.RCNN_base` 定义了特征提取部分,而 `self.RCNN_top` 则负责后续处理逻辑。 对于更详细的说明以及具体的功能实现细节,建议访问官方文档或者阅读相关博客文章来深入理解其架构设计思路[^5]。 #### 注意事项 在下载和使用第三方库之前,请确认项目的许可协议是否允许您的用途,并遵循相应的版权规定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值