Faster RCNN

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

Faster RCNN的最大贡献是去掉了Selective Search来进行Region Proposal的生成,转而使用RPN(Region Proposal Network)来生成区域候选框。

Faster RCNN的整个流程

这里写图片描述
其中,Region Proposal Network用来生成一系列的候选建议框。该层有两部分,第一部分是一个共享的卷积层,第二部分是用来打分的。分成两个支路,其中一路用来做二分类,表示该框是前景还是背景。另外一个之路用来进行bounding box的回归操作。

训练的时候,每次从RPN网络中的一个像素点对应到原图像中的一个框,如果该框的IoU>0.7,则标记为1,表示是物体。如果IoU<0.3,则标记为0,表示该区域是一个背景。如果介于0.3~0.7之间,则舍弃掉。如果是背景,则回归损失为0。如果是前景,则回归损失为 smoothL1 s m o o t h L 1 损失。最后训练的时候,是直接将RPN的损失和Object detector的损失直接相加即可。

1. RPN

这里写图片描述
RPN的具体过程为:
1). 在最后一个Conv层得到的feature map后面,使用一个 3×3 3 × 3 的卷积层,得到一个 H×W×N H × W × N 的特征向量。如果最后的feature map的维度是256维,则最后经过一层卷积之后得到的仍然是1个256维的feature map。每个feature map最后会得到 H×W H × W 256 256 维的特征。每个 256 256 维的特征最后进行一个分叉,一个进入到分类器产生 2k 2 k 个分数输出,文中 K=9 K = 9 ,表示取 3 3 个不同的大小,3个不同的长宽比。即每一个像素点最后会输出18个分类的分数和36个回归的分数。最后文中还限制了fg和bg的个数,保证总数不超过256个,前景不超过128个。当前景不足128个的时候,用背景补充。
2). 取标签的2种方式

  • IoU大于0.7为物体,IoU小于0.3为背景,0.3~0.7不管
  • 如果一个ground truth没有被任何的anchor box取到,这时就在所有的anchor box当中,取与该ground truth的IoU最大的anchor box为前景。此操作是为了防止某些极端情况下有的ground truth一个都没有被取到的情况。

3). 以上面的过程不断进行训练之后,在测试阶段,先通过feature map不断地在原图上取bounding box。这样的话,就会得到 H×W×9 H × W × 9 个bounding box。然后先利用RPN,对所有的bounding box得到他们是否是object的分数。从大到小排列后,运用非最大抑制(NMX),每张图片得到分数最大的300个框,然后将这些框送到分类器去进行分类。

2. Faster RCNN的训练和测试

Faster RCNN由两部分组成,一部分是Fast RCNN,另一部分是RPN。RPN的训练过程是没有用到非最大抑制的。但是在送到到Fast RCNN的那一部分进行训练的时候,并不是一个feature map取9个框的。而是将所有的框选出来之后,运用非最大抑制的方法,先挑选出300个框。然后将这300个框送入到Fast RCNN的那一部分进行训练。测试的时候,使用的也是一样的流程。即先通过RPN选出一些候选框,然后将这些候选框送到分类网络去进行具体分类。而且这中间,RPN和Fast RCNN是一起进行训练的。

### Faster R-CNN 算法介绍 Faster R-CNN 是一种基于深度学习的目标检测算法,由 Ross Girshick 提出,是对 Fast R-CNN 的重要改进[^2]。该算法的核心创新在于引入了区域生成网络 (Region Proposal Network, RPN),从而实现了端到端的训练和推理过程。 #### 区域生成网络 (RPN) RPN 是 Faster R-CNN 中的关键组件之一,其作用是从输入图像中生成高质量的候选区域 (region proposals)[^2]。相比之前的 Fast R-CNN 和传统的方法(如 Selective Search),RPN 显著减少了候选区域生成的时间开销,并将其无缝集成到了整个目标检测框架之中。通过共享卷积特征图,RPN 能够高效地完成候选框的预测任务。 #### 主要组成部分 Faster R-CNN 可分为以下几个主要模块: 1. **卷积层**: 使用预训练好的 CNN 模型(如 VGG-16 或 ResNet)提取图像的特征表示。 2. **RPN**: 利用上述特征图生成候选区域。 3. **RoI Pooling 层**: 将不同大小的候选区域映射为固定尺寸的特征向量。 4. **全连接层与分类器**: 对每个候选区域进行类别预测并调整边界框的位置参数。 这些部分共同协作,在 GPU 上达到了约 5 fps 的检测速度,同时保持较高的准确性。 ### 实现方式 以下是 Faster R-CNN 的基本实现流程: ```python import torch from torchvision.models.detection import faster_rcnn def create_faster_rcnn_model(num_classes): model = faster_rcnn.fasterrcnn_resnet50_fpn(pretrained=True) in_features = model.roi_heads.box_predictor.cls_score.in_features model.roi_heads.box_predictor = faster_rcnn.FastRCNNPredictor(in_features, num_classes) return model # 创建模型实例 num_classes = 91 # COCO 数据集中的类别数加背景类 model = create_faster_rcnn_model(num_classes) # 定义优化器和其他超参... optimizer = torch.optim.SGD(model.parameters(), lr=0.005, momentum=0.9, weight_decay=0.0005) ``` 此代码片段展示了如何利用 PyTorch 构建一个 Faster R-CNN 检测模型,并对其进行自定义修改以适应特定数据集的需求。 ### 应用场景 由于其出色的性能表现,Faster R-CNN 广泛应用于多种实际领域,包括但不限于自动驾驶汽车中的障碍物识别、医学影像分析中的病灶定位以及无人机监控下的物体追踪等任务[^3]。例如,在交通管理方面,它可以快速准确地标记车辆行人信息;而在安防行业,则可用于视频流内的异常行为监测。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值