目标检测——RCNN系列学习(二)Faster RCNN

接着上一篇文章:目标检测——RCNN系列学习(一)-CSDN博客

主要内容包含:Faster RCNN

废话不多说。


Faster RCNN

[1506.01497] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks (arxiv.org)icon-default.png?t=N7T8https://arxiv.org/abs/1506.01497

1.Motivation

简要回顾一下之前的检测框架,RCNN和Fast RCNN都是基于Selective Search的,能否让网络自己去学习获取Region proposal的过程呢?

顺着这个思路,Kaiming等人提出了Region Proposal Networks(RPN模块),理解这个网络就成了学习Faster RCNN的关键,其余的操作其实和Fast RCNN是一模一样的。

2.Faster RCNN

(部分内容和图参考:一文读懂Faster RCNN - 知乎 (zhihu.com))

2.1 网络结构

初看:

CNN(特征提取)+ RPN(获取Region Proposal,实现定位)+ ROI Pooling(解决多尺度输入问题)+ Classifier(预测类别与BoundingBox的修正)

细节:

  • CNN

这里的CNN传统采用VGG16为backbone,有一个细节:

  1. 所有的conv层都是:kernel_size=3,pad=1,stride=1
  2. 所有的pooling层都是:kernel_size=2,pad=0,stride=2

这涉及到网络前向计算时,特征图的尺寸变换,按照上述形式,假设池化的次数为n,那么最终得到的feature map的尺寸就是原始图像尺寸的1/2^n,4个pooling层就是1/16。

按照上面的尺寸变换,可以保证最终feature map上的点在原始像素空间都有对应点。

此外,还需要注意的一个点,CNN网络的输入图像,全部reshape成了800*600,这是为了便于网络的训练,方便组织成batch。

  • RPN

RPN网络可以说是Faster RCNN的核心,我们下面着重来讲解。

RPN网络的作用从他的名字就可以看出来,为了给出参考的Region proposal。传统的获取候选框的方法如滑动窗口、在原始图像空间进行SS操作,计算量太大,复杂度高,因此RPN的核心想法就是在feature map上获取候选框,做法就是在feature map的每一个点上,设置了一系列的anchor,作为了初始的检测框,虽然这样的初始检测框很不准确,但是后续有两次回归校正的机会。

什么是anchor?

本质上就是一组矩形框,存储时,4个值 (x1,y1,x2,y2) 表示矩形框的左上和右下角点坐标,长宽比为大约为 width:height∈{1:1,1:2,2:1} 三种。

RPN在为feature map上的每个点设置anchor时,除了设置长宽比,还考虑了anchor的尺度(在feature map下的尺度,在原始像素空间的尺度要乘上池化下降的倍率)。

以下图为例:蓝红绿对应了三个尺度,每个颜色下对应了三种长宽比:

上面数据流中RPN的操作对应了作者论文中的图:

RPN的做法:

  1. 假设Conv Layers最后的conv5层num_output=256,对应生成256张特征图,所以相当于feature map中的每个点都是256-dimension
  2. 在conv5之后,做了rpn_conv/3x3卷积且num_output=256,相当于每个点又融合了周围3x3的空间信息,同时256-d不变(聚合信息)
  3. 在conv5 feature map中每个点上有k个anchor(默认k=9,3组长宽比*3组尺度)
  4. 每个anchor需要区分是否是背景框,对应着上面第一条数据流,其中的18其实就是9个anchor对应positive和negative的概率,9个二分类任务

  5. 每个anchor需要进行坐标的回归,进行平移和伸缩变换,因此每个anchor都有(x, y, w, h)对应4个偏移量,所以reg=4*9=36 个坐标,对应下面这条之路
  6. 补充一点,全部anchors拿去训练太多了,训练程序会在合适的anchors中随机选取128个postive anchors+128个negative anchors进行训练

最终,RPN在feature map上生成了一大堆的anchor框,映射回原始图像的尺度上,也就基本上覆盖了全图。

以上图的尺寸为例子,输入图像尺寸800*600,4个pooling层,则一共有(800/16)*(600/16)*9 = 17100个anchor框。

RPN最后用一个Proposal Layer来整合所有的信息,处理一些特殊的情况,如anchor太多、超出图像边界、某些框尺度太小等问题。

Proposal Layer

输入:anchor修正的坐标信息、anchor属于前景和背景的概率、图像信息(包含图像原始尺度和缩放大小[800,600,16])

  1. 生成anchors,利用anchor修正的坐标信息对所有的anchors做bbox regression回归(这里是anchor与region proposal的回归,而不是anchor坐标与像素空间下GT的坐标的回归)
  2. 按照输入的positive softmax scores由大到小排序anchors,提取前pre_nms_topN(e.g. 6000)个anchors,即提取修正位置后的positive anchors (选择最有可能是前景的框)
  3. 限定超出图像边界的positive anchors为图像边界,防止后续roi pooling时proposal超出图像边界
  4. 剔除尺寸非常小的positive anchors
  5. 对剩余的positive anchors进行NMS(nonmaximum suppression)

输出:proposal=[x1, y1, x2, y2],注意这里的输出坐标已经被映射回了原始图像尺度。

当proposal的框获取之后,我们的定位功能就已经实现了,接下来只需要进行进一步的坐标修正和图像识别。

RPN网络结构就介绍到这里,总结起来就是:
生成anchors -> softmax分类器提取positvie anchors -> bbox reg回归positive anchors -> Proposal Layer生成proposals

  • ROI pooling+Classifier

和Fast RCNN一样,不再多说。

2.2 网络训练

(1)待学习参数

整个Faster RCNN网络拆解来看,需要学习的网络参数包括以下四个部分:

CNN(特征提取)+ ROI Pooling(解决多尺度输入问题)+ Classifier(预测类别与BoundingBox的修正)+ RPN(获取Region Proposal,实现定位)

其中前面三个部分可以一起训练,最终的损失和RCNN很相似;而RPN网络单独训练。

(2)RPN部分损失函数:

公式中i表示anchors index,p_i 表示positive softmax probability,p_i^*代表对应的GT predict概率(即当第i个anchor与GT间IoU>0.7,认为是该anchor是positive,p_i^*=1;反之IoU<0.3时,认为是该anchor是negative,p_i^*=0;至于那些0.3<IoU<0.7的anchor则不参与训练);t代表predict bounding box,t^*代表对应positive anchor对应的GT box。可以看到,整个Loss分为2部分:

  1. cls loss,即rpn_cls_loss层计算的softmax loss,用于分类anchors为positive与negative的网络训练
  2. reg loss,即rpn_loss_bbox层计算的soomth L1 loss,用于bounding box regression网络训练。注意在该loss中乘了 p_i^* ,相当于只关心positive anchors的回归(其实在回归中也完全没必要去关心negative)
(3)四步交替迭代训练方式

Faster RCNN的训练方式可以是交替迭代的训练,也可以是端到端的训练方式,这里只是学习一下论文中提到的交替迭代的方式:

第一步:特征提取的CNN网络参数加载在ImageNet上预训练的模型参数,训练RPN网络,用于生成region proposal;

第二步:固定第一步训练好的RPN参数,拉通训练Fast RCNN网络,即CNN+ROI+两个分类器;

第三步:固定第二步学好的Fast RCNN参数,优化RPN参数;

第四步:固定第三步学好的RPN参数,优化Fast RCNN参数。

2.3 网络推理

训练好网络过后,我们来看一张图像中,目标是如何被检测出来的:

输入图片——resize到固定尺寸——经过CNN提出特征图feature map——RPN在该feature map上生成anchor对应的类别概率,判断anchor是否是待检测的物体,背景框舍去,同时,对于物体的框进行一系列操作,结合回归修正的坐标,输出在feature map上的region proposal——ROI pooling提取不同尺寸的region proposal的特征,映射成相同的尺度——两个fc层,一个输出识别的类别,一个输出框的进一步修正——最后输出最终的框的坐标,和框内物体的类别。

3.总结

Faster RCNN的核心就在于RPN网络,理解了这个网络,再加上Fast RCNN,就不难学习了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/524614.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker 部署 Epusdt - 独角数卡 dujiaoka 的 usdt 支付插件

部署 部署说明 部署之前必须注意的几点事项,该教程不一定适合所有用户: 本教程主要是使用 docker 部署,宝塔用户或宿主机直接安装的用户请直接参考官网教程.本教程是独立部署 epusdt,使用独立的mysql和redis,与dujiaoka项目分开. 在研究的过程中发现 epusdt 也需要用到 mys…

解决前端精度丢失问题:后端Long类型到前端的处理策略

在Web开发中&#xff0c;我们经常遇到前后端数据类型不匹配的问题&#xff0c;特别是当后端使用大数据类型如Long时&#xff0c;前端由于JavaScript的数字精度限制&#xff0c;可能导致精度丢失。本文将深入探讨这个问题&#xff0c;并提供两种有效的解决方法。 一、问题背景 …

matlab使用教程(36)—求解数值积分(1)

1计算弧线长度的积分 此示例说明了如何参数化曲线以及使用 integral 计算弧线长度。 将曲线视为带有参数的方程 创建此曲线的三维绘图。 t 0:0.1:3*pi; plot3(sin(2*t),cos(t),t) 弧线长度公式表明曲线的长度是参数化方程的导数范数的积分。 将被积函数定义为匿名函数。 f …

智慧园区革新之路:山海鲸可视化技术引领新变革

随着科技的飞速发展&#xff0c;智慧园区已成为城市现代化建设的重要组成部分。山海鲸可视化智慧园区解决方案&#xff0c;作为业界领先的数字化革新方案&#xff0c;正以其独特的技术优势和丰富的应用场景&#xff0c;引领着智慧园区建设的新潮流。 本文将带大家一起了解一下…

AI大模型下的策略模式与模板方法模式对比解析

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL应用》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 &#x1f680; 转载自热榜文章&#xff1a;设计模式深度解析&#xff1a;AI大模型下…

无参数绕过RCE

一.什么是无参数 顾名思义&#xff0c;就是只使用函数&#xff0c;且函数不能带有参数&#xff0c;这里有种种限制&#xff1a;比如我们选择的函数必须能接受其括号内函数的返回值&#xff1b;使用的函数规定必须参数为空或者为一个参数等 无参数题目特征 if(; preg_replace…

基于 S2-LP 实现 802.15.4g 帧格式的数据透传

1. 引言 S2-LP 硬件上支持 802.15.4g 的帧格式&#xff0c;但是现有的 SDK 包并没有基于该帧格式的示例工程&#xff0c;因此本篇文章将介绍如何实现基于 802.15.4g 帧格式的数据透传。 2. 802.15.4g 帧格式 在开始之前&#xff0c;需要对 802.15.4g 帧格式有一个初步的了解…

springCloud-LoadBalancer负载均衡微服务负载均衡器LoadBalancer

2020年前SpringCloud是采用Ribbon作为负载均衡实现&#xff0c;但是在2020后采用了LoadBalancer替代 LoadBalancer默认提供了两种负载均衡策略&#xff08;只能通过配置类来修改负载均衡策略&#xff09; 1.RandomLoadBalancer-随机分配策略 2.RoundRobinLoadBalancer-轮询分配…

基于SSM的周边乡村旅游小程序

系统实现 游客注册通过注册窗口&#xff0c;进行在线填写自己的账号、密码、姓名、年龄、手机、邮箱等&#xff0c;信息编辑完成后核对信息无误后进行选择注册&#xff0c;系统核对游客所输入的账号信息是否准确&#xff0c;核对信息准确无误后系统进入到操作界面。 游客登录通…

[图像处理] MFC载入图片并绘制ROI矩形

上一篇&#xff1a; [图像处理] MFC载入图片并进行二值化处理和灰度处理及其效果显示 文章目录 前言完整代码重要代码效果 前言 上一篇实现了MFC通过Picture控件载入图片。 这一篇实现ROI功能的第一部分&#xff0c;在Picture控件中&#xff0c;通过鼠标拖拽画出一个矩形。 完…

实时计算平台设计方案:913-基于100G光口的DSP+FPGA实时计算平台

基于100G光口的DSPFPGA实时计算平台 一、产品概述 基于以太网接口的实时数据智能计算一直应用于互联网、网络安全、大数据交换的场景。以DSPFPGA的方案&#xff0c;体现了基于硬件计算的独特性能&#xff0c;区别于X86GPU的计算方案&#xff0c;保留了高带宽特性&…

产品推荐 | 星嵌基于TI TMS320C6657+Xilinx XC7Z035/045 DSP+FPGA+ARM工业核心板

1、产品概述 广州星嵌电子科技有限公司研发的C6657ZYNQ7035/45工业核心板&#xff0c;是基于TI KeyStone 架构C6000 系列TMS320C6657 双核C66x定点/浮点DSP 以及 Xilinx ZYNQ-7000 系列XC7Z035/045 SoC 处理器设计的。 DSP处理器采用TMS320C6657&#xff0c;双核C66x定点/浮点…

FIN和RST的区别,几种TCP连接出现RST的情况

一、RST跟FIN的区别&#xff1a; 正常关闭连接的时候发的包是FIN&#xff0c;但是如果是异常关闭连接&#xff0c;则发送RST包 两者的区别在于&#xff1a; 1.RST不必等缓冲区的包都发出去&#xff0c;直接就丢弃缓存区的包发送RST包。而FIN需要先处理完缓存区的包才能发送F…

【小白学机器学习11】假设检验之2:Z检验(U检验,正态检验)

目录 1 什么是Z检验 1.1 Z检验的别名 Z-test /U-test / 正态检验 1.2 维基百科定义 1.2 百度百科定义 1.3 定义提炼关键点 1.4 Z检验量 : Z(X-θ)/s (X-u)/s 2 Z检验量的构造 2.1 Z检验量 : Z(X_-u)/s 2.2 Z检验变量的构造 2.4 Z检验量的核心参数 2.4.1 原始公式 …

使用单点登录(SSO)如何提高安全性和用户体验

什么是单点登录&#xff08;SSO&#xff09; 对于所有大量采用云应用程序的组织来说&#xff0c;有效的身份管理是一个巨大的挑战&#xff0c;如果每个 SaaS 应用程序的用户身份都是独立管理的&#xff0c;则用户必须记住多个密码&#xff0c;技术支持技术人员在混合环境中管理…

【ELK】搭建elk日志平台(使用docker-compose),并接入springboot项目

1、环境搭建 前提条件&#xff1a;请自行安装docker以及docker-compose环境 version: 3 services:elasticsearch:image: elasticsearch:7.14.0container_name: elasticsearchports:- "9200:9200"- "9300:9300"environment:# 以单一节点模式启动discovery…

ASP.NET Core 模型绑定

&#x1f340;介绍 在C#中&#xff0c;特别是在ASP.NET Core中&#xff0c;模型绑定是一个将HTTP请求中的数据映射到C#对象的过程。它使得开发者能够方便地从请求中提取数据&#xff0c;而无需手动解析请求体、查询字符串、路由数据等。ASP.NET Core提供了多种特性&#xff08…

uniapp极光推送、java服务端集成

一、准备工作 1、进入【服务中心】-【开发者平台】 2、【创建应用】&#xff0c;填写应用名称和图标&#xff08;填写项目名称&#xff0c;项目logo就行&#xff0c;也可填写其他的&#xff09; 3、选择【消息推送】服务&#xff0c;点击下一步 ​ ​ Demo测试 参照文档&…

数据备份的演变:数字时代的一个关键方面

微信关注获取更多内容 数据备份至关重要&#xff0c;涵盖了其过去、现在和未来&#xff0c;是数字时代任何企业运营的一个重要方面。 如今&#xff0c;公司运营的几乎每个方面&#xff0c;从客户信息到内部财务数据&#xff0c;都以数字方式存储。 有鉴于此&#xff0c;数据…

【Linux系列】“dev-node1“ 运行的操作系统分析

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…