当前位置: 首页 > news >正文

Faster R-CNN

Faster R-CNN的组成

在这里插入图片描述

Faster R-CNN主要由两部分组成:Backbone、区域建议网络(RPN)和Fast R-CNN
近似:Faster RCNN = RPN + Fast R-CNN)

1、Backbone(神经网络模型进行特征提取)

  • pre-train(预训练)
  • fine-tuning(微调)
  • re-train

输入的是固定大小的图片,经过卷积层提取特征图(feature maps)

2、RPN:Region Proposal Net(生成区域建议 )

代替selective searchs生成区域建议

1、输入feature map(特征图),然后经过区域建议网络(RPN)生成区域建议(region proposals)
2、然后通过softmax判断锚框(anchors)属于前景(foreground)或者背景(background)
3、再利用边界框(bounding box)回归修正锚框(positive anchors)获得精确的候选区域(proposals)

3、Fast RCNN: ROI + {Classification; Regression}(感兴趣池化)

1、该层输入的是特征图(feature maps)和候选区域(proposals)
2、综合这些信息后提取具有候选区域的特征图(proposal feature maps)

4、分类

将感兴趣池化(Roi pooling)生成的具有候选区域的特征图(proposal feature
maps)分别传入softmax分类和边界盒回归(bounding box regression)获得检测物体类别和检测框最终的精确位置。

1、Backbone

(1)作用:特征提取(一次)

  • 不用给每个ROI(感兴趣区域)都提取特征
  • 通过RPN(区域建议网络)将提取的特征来生成区域建议

(2)结构:ZF / Resnet / VGG16(13 conv + 13 Relu + 4 Pooling)

  • 把网络结构当积木来用的思维
  • 比如想要算快一些,网络换成mobile net, shuffle net都是可以的

(3)输出 :Batchsize x Channel x H/16 x W / 16 (VGG16举例)

  • faster rcnn将尺寸为1000 x 800大小的feature map归一化到600 x 800的尺寸,则其输出的特征图大小为1 x 256 x 38 x 50

(4)整体网络结构:Backbone获取特征图信息,然后用RPN网络筛选候选框和ROIPooling输出相同尺寸的特征图,整个faster rcnn如下图
在这里插入图片描述

2、 区域建议网络(RPN)

2.1 RPN结构解释

在这里插入图片描述

3×3卷积:用于语义转换,可以增加网络网络复杂度,增加区域建议网络(RPN)的你和能力
1x1卷积:用于通道转换,原则上可以转换成任意通道的特征图
feature map经过3×3卷积后,分成了两条线:

第一条线:通过softmax分类锚框(anchors)获得前景(positive)和背景(negative),要检测的目标是前景(positive)。由于是2分类(有无物体两种分类),所以它的维度是2k score(2个分数)。

2k score,因为RPN是提候选框,还不用判断类别,所以只要求区分是不是物体就行,2个分数:前景(物体)的分数,和背景的分数;

第二条线:计算对于锚框(anchors)的边界盒回归(bounding box regression)偏移量,以获得精确的proposal。它的维度是4k coordinates(4个坐标)

4个坐标:是指针对原图坐标的偏移,首先一定要记住是原图;

最后的Proposal层则负责综合积极的锚框(positive anchors)和对应边界盒回归(bounding box regression)偏移量获取最终的区域建议(proposals),同时剔除太小和超出边界的建议(proposals)。
在这里插入图片描述

RPN网络的输入是前面CNN output的feature maps。我们在feature map上做一个大小为3x3的滑窗操作, 得到一个channel是256维的特征图,尺寸与input的特征图相同,维度是256HW。
对这个256维的向量,我们分别做两次1x1卷积操作,一个得到2k score, 一个得到4k coordinates。
这个2k score只区分是不是目标,输出候选区域属于前景(物体)和背景的分数,这里注意,这里的分类只区分是否包含目标,至于所包含目标的类别,是Faster-RCNN最后的分类网络干的事情。4k coordinates指的是对原图坐标的偏移。

论文预先设定好生成9个anchors。我们前面说到对于feature map, 我们有一个3*3的滑窗操作。对于每次滑窗所划到的3x3的区域,就以该区域中心点为坐标,生成9个anchor。anchor它的本质是,将相同尺寸的输入,得到不同尺寸的输出。它们的中心相同,但是有不同的长宽比和尺度。这9个anchor, 中心坐标一样,但是大小各不相同,如下图:
在这里插入图片描述

RPN的目标:

  • 生成region proposal(区域建议)
  • 因为流程是:先RPN找出区域建议的物体,然后在做更加精细的类别划分和Bbox回归,这种方式被称为Two-Stage
  • 因此有人认为两阶段检测比一阶段检测更准

3、 Fast R-CNN

Fast R-CNN = ROI + {Classification; Regression}

4、RPN损失函数+Fast R-CNN损失

上文提到的k就是anchors的数量,所以2k个分数就是9个anchors的共18个分数,36(4×9)个坐标。对于每个anchor, 计算anchor与ground-truth bounding boxes的IoU,大于0.7则判定为有目标,小于0.3则判定为背景,介于0.3-0.7,则设为0,不参与训练,RPN损失函数:
在这里插入图片描述

损失函数有两部分:分类损失和回归损失
分类损失:
在这里插入图片描述

回归损失:
在这里插入图片描述

对应着RPN的两条路线,即是否包含目标和bbox的坐标与anchor坐标的回归误差。
注意回归误差这一项中 ,L与p相称,也就是说,如果anchor不包含目标,那么box输出位置是不算误差的,对于Lreg,只计算 Lcls,判定为有目标的anchor。
Lcls就是交叉熵,Lreg是分类的损失;
计算每个anchor分配的四个坐标和ground truth的坐标的偏移量,用的是L1范数。看一下pytorch的官方实现:

 self.rpn_loss_cls = F.cross_entropy(rpn_cls_score, rpn_label)self.rpn_loss_box = _smooth_l1_loss(rpn_bbox_pred, rpn_bbox_targets, rpn_bbox\inside_weights,rpn_bbox_outside_weights, sigma=3, dim=[1,2,3])

http://www.mrgr.cn/news/60392.html

相关文章:

  • YOLO11 目标检测 | 自动标注 | 预标注 | 标签格式转换 | 手动校正标签
  • 【Spring】IocDI
  • SQL Server 当前日期及其未来三天的日期
  • [mysql]聚合函数GROUP BY和HAVING的使用和sql查询语句的底层执行逻辑
  • 异步通信介绍
  • Cursor零基础小白教程系列 - Cursor的AI辅助功能初体验
  • 2024第二届新能源汽车热管理论坛
  • 尚硅谷 | Nginx | 学习笔记
  • 开始实施!《商业银行业务档案管理规范》(DA/T 98-2023)
  • 【AI大模型】使用谷歌 Gemini API 构建自己的 ChatGPT(二)
  • Hugging Face | 个人使用笔记
  • Node-RED的面板的认识及操作
  • Linux第二讲:Linux权限理解
  • 海南华志亿星电子商务有限公司助力品牌销量飙升
  • 基于 ThinkPHP+Mysql 灵活用工_灵活用工系统_灵活用工平台
  • 通信原理概论复习笔记(2):模拟调制与数字调制
  • Spring Boot实用小技巧8 - 第530篇
  • 北京本盛数字科技有限公司-持续深耕AI智能化健康管理领域
  • nginx------HTTP模块配置详解
  • [论文笔记] 大模型评测:lm-evaluation-harnessPublic(eval-big-refactor)
  • 在 Gitee 或 GitCode 上克隆 Dify 项目源码并启动 Docker 环境
  • C++二级 求每个单词的长度的3种解决办法(包括find、substr)
  • 盛元广通食检中心实验室信息化LIMS系统
  • 大语言模型推理源码解读(基于llama3模型:来源github)
  • 做梦都想拥有的陪伴对象,AI居然免费帮我实现了...文中附送体验地址!
  • autMan奥特曼机器人-内置容器安装依赖报错:externally-managed-environment