深度学习-目标检测(四)-Faster R-CNN

news2024/11/24 13:59:40

目录

一.模型框架

二:步骤详细

1.conv layers

2.RPN

3.anchors

4.cls layer分类

5.reg layer回归

 6.Proprosal

7.Rol pooling

8.Classification

三.训练

1.训练RPN网络

2.全连接层部分训练:

 都看到这里了,点个赞把!!!!!


 

在Faster R-CNN中加入一个提取边缘的神经网络,也就说找候选框的工作也交给神经网络来做了。这样,目标检测的四个基本步骤(候选区域生成,特征提取,分类,位置精修)终于被统一到一个深度网络框架之内。

一.模型框架

如图:

1.conv layers:用于提取特征,通过conv+relu+pooling层来提取图像的feature maps (特征图)

2.RPN(Region Proposal Network)区域候选网络:替换了之前哪些的Selective Searvh,用于生成候选框。它里面做了一个二分类任务,一类是判断anchor是属于positive(识别的东西),另一类是判断是否是negative(不是目标的背景);还有一个bounding box regression:修正anchors得到较为准确的proposals,简单来说就是让候选框准确点。RPN是判断这张图片里面有没有目标,具体目标是什么这里还没判断,以及修正anchor的边框

3.Rol Pooling(兴趣域池化):简单来是就是收集RPN中选出来的候选框的坐标,一般收集左上角和右下角。并且将这些坐标对于1中提取的特征图中的特征,生成proposals feature maps送人全连接层

4.Classification and Regression:利用3中送入的数据计算出整个图片中的类别,同时再做一次bounding box regression获得检测框最终的精准位置

二:步骤详细

1.conv layers

如上图所示,共有13个conv层,13个relu层,4个pooling层

conv:kernel_size=3,padding=1,stride=1。核卷积操作类似,使用3*3的卷积核,一层零,步长为1

pooling:kernel_size=2,padding=0,stride=2。池化操作

经过conv层时数据变化为:

height=(h-k+2*p)/s+1=h-3+3,数据大小没变

width=(w-k+2*p)/s+1,数据大小没变

经过pooling时,因为步长为2,所以数据的宽高变为了之前的一办,有四个pooling,所以数据变为之前的1/16

2.RPN

图中所示,分为两个操作

1.softmax分类anchors获得positive和negative分类

2.计算对于每个anchors的bounding box regression(边框)偏移量,以获取比较精确的proposal

两步操作后在proposal结合,proposal层复杂将positive anchors和对应的bounding box regression偏移量获取修正后的proposals。同时剔除没有框住物体的和超出图片边界的proposals。

3.anchors

 经过conv leyer处理后的feature map(特征图)的大小为原来的1/16,同时在这些feature map中,经过conv操作后因为设置的是kernel_size=3的映射,所以对于每一个像素点,设置了9个预测anchor。这9个anchor的大小按照三种长宽比ratio[1:1,1:2,2:1]设置,具体大小根据输入图像的原始目标大小灵活设置。

设置anchor是为了覆盖图像上各个位置各种大小的目标,那么原图上anchor的数量就是(M/16) x (N/16) x 9。这么多anchor,第一肯定不准确,第二肯定不能要这么多,所以后续还会淘汰一大批以及修正anchor位置

4.cls layer分类

在拿到conv layers的feature map后,先经过一个3x3卷积(卷积核个数为256)红色框是一个anchor,所以通过这个卷积层后feature map的通道数也是256,k是anchor个数(文中默认是9)

 (M/16)x(N/16)x256的特征通过1x1卷积得到(M/16)x(N/16)x2k的输出,因为这里是二分类判断positive和negative,所以该feature map上每个点的每个anchor对应2个值,表示目标和背景的概率(为什么有2个,是因为这里是用的softmax,这两个值加起来等于1;也可以用sigmoid,就只需要1个值了)

 Reshape层是技术细节问题,对feature map进行维度变换,使得有一个单独的维度为2,方便在该维度上进行softmax操作,之后再Reshape恢复原状。

5.reg layer回归

 (M/16)x(N/16)x256的特征通过1x1卷积得到(M/16)x(N/16)x4k的输出,因为这里是生成每个anchor的坐标偏移量(用于修正anchor),[tx,ty,tw,th]共4个所以是4k。注意,这里输出的是坐标偏移量,不是坐标本身,要得到修正后的anchor还要用原坐标和这个偏移量运算一下才行。

偏移量计算公式

 其中[xa,ya,wa,ha]是anchor的中心点坐标和宽高,[tx.ty,tw,th]是这个回归层预测的偏移量,通过这个公式计算出修正后的anchor坐标[x,y,w,h]。计算如下:

 [px,py,pw,ph]表示原始anchor的坐标
[dx,dy,dw,dh]表示RPN网络预测的坐标偏移
[gx,gy,gw,gh]表示修正后的anchor坐标。

 

 6.Proprosal

分类和偏移量计算完后,将数据输入到Proposal,输入的有三个

cls层生成的数据

reg层生成的数据

im_info=[宽,高,scale_factor]

接收数据后会进行:

1.利用reg层的偏移量对所有原始的anchor进行修改

2.利用cls层的scores,按positive socres排序,取前面分数大的

3.将太大的positive anchor收拢到边框处,将太小的剔除

4.对剩余的positive anchors进行非极大抑制(NMS)

5.输出每个positive anchors的左上角和右下角坐标

7.Rol pooling

RoI Pooling层则负责收集proposal(上一个操作输出的坐标数据),并计算出proposal feature maps(从conv layers后的feature map中扣出对应位置),输入有两个:

1.conv layers 剔除的原始特征图feature map

2.RPN网络生成的Proposals

因为全连接层的每次输入数据大小都需要是固定的,所有需要一个操作来讲这些数据的大小统一一下,,而Rol Pooling就是讲图片固定大小的

8.Classification

具体分类,这里的分类是讲前面准备好的positive anchors识别具体分类,这里就可以分辨出是背景还是具体物体了。

1.通过全连接层的softmax对所有的proposals进行具体分类

2.再次对proposals进行bounding box regression处理,获得更好的边框

三.训练

Faster RCNN由于是two-stage检测器,训练要分为两个部分进行,一个是训练RPN网络,一个是训练后面的分类网络。

1.先使用ImageNet的预训练权重初始化RPN网络的共享conv层(RPN特有层可随机初始化),然后训练RPN网络。训练完后,共享conv层和RPN特有层的权重都更新了。

2.根据训练好的RPN网络拿到proposals(和测试过程一样)

3.再次使用ImageNet的预训练权重初始化Faster RCNN网络的贡献conv层(Faster RCNN特有层随机初始化),然后训练Faster RCNN网络。训练完后,共享conv层和Faster RCNN特有层的权重都更新了

4.使用第三步训练好的共享conv层和第一步训练好的RPN特有层来初始化RPN网络,第二次训练RPN网络。但这次要把共享conv层的权重固定,训练过程中保持不变,只训练RPN特有层的权重

5.根据训练好的RPN网络拿到proposals(和测试过程一样)

6.依然使用第三步训练好的共享conv层和第三步训练好的Faster RCNN特有层来初始化Faster RCNN网络,第二次训练Faster RCNN网络。同样,固定conv层,只fine tune特有部分

1.训练RPN网络

因为使用的是softmax,所以使用交叉熵损失来训练anchors是物体还是背景

对于边框部分训练,使用smooth L1 loss训练

smooth L1 loss:

2.全连接层部分训练:

和RPN一样,都是使用softmax分类和训练边框

 都看到这里了,点个赞把!!!!!

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

adb有线连接正常,adb connect失败

adb connect失败 1. 确认两个设备在同一个局域网 2. 确认此网络是否有adb连接的权限(有的公司网络不允许adb) 3. 确认防火墙设置 如果前面3步都确认没问题,Ping ip也能成功,那么有可能就是端口的问题: step1: 先用有线连接设备&#xff0…

DBeaver连接数据库报连接错误:Public Key Retrieval is not allowed

问题描述 使用DBeaver软件连接mysql数据库的时候,有如下提示信息: 解决办法 点击驱动属性->找到allowPublicKeyRetrieval这项,把值设置为TRUE,再点击连接测试 可以成功连接到mysql数据库,问题解决~

面试题 Spring bean 循环依赖解决方案以及三级缓存讲解

文章目录 Spring bean 循环依赖1.1 什么是循环依赖1.2 Spring循环依赖几种情况 什么是三级缓存到底是什么东西,三级缓存做了什么?三级缓存源码讲解 Spring bean 循环依赖 1.1 什么是循环依赖 当面试官问到你给我讲一下什么是循环依赖吧,该如…

简单数据库sqlite

目录 数据库 简介 1、分类: 大型 中型 小型 2、名词: 3、嵌入式数据库: 4、sqlite3的安装: LTS long term support 5.1、sqlite3的使用: 0、启动sqlite3 1、系统维护命令:> .help 5.2、标准SQL…

盘点4款高效率的PDF在线编辑工具

PDF格式的文件在分享和传输这方面确实要比七个格式的文件要方便一些,但正因为如此,导致有的时候编辑起来不是很方便。这个时候专业的PDF编辑工具就变得很重要,尤其是在线编辑工具,不用下载就可以直接使用。所以我便要跟大家分享几…

探索GPU算力在大模型和高性能计算中的无限潜能

在当今科技领域,大模型和高性能计算正以惊人的速度发展。大模型如语言模型、图像识别模型等,规模越来越大,精度越来越高,能够处理复杂的任务和生成逼真的结果。高性能计算则凭借强大的计算能力,推动着科学研究、工程设…

黑马点评18——多级缓存-OpenResty

文章目录 安装OpenRestyOpenResty快速入门OpenResty获取请求参数封装Http请求向Tomcat发送http请求根据商品id对tomcat集群负载均衡Redis缓存预热查询Redis缓存Nginx本地缓存 安装OpenResty 安装参考博客 OpenResty快速入门 nginx是没有业务能力的,我们是把请求转发…

月考成绩发布,老师该用什么工具?

九月已过半,我们即将迎来第一次月考。对于老师们来说,这不仅是对学生学习成果的一次检验,也是老师忙碌工作的开始。考试结束后,老师们需要投入大量的时间和精力来统计和发布成绩。那么,在这个信息化时代,老…

新手老师都在用的月考成绩发布方式

新学期马上一个月了,学生们即将迎来第一次月考。月考是孩子们学习成果的一次大考,也是老师们忙得团团转的时候。在日常的教学工作中,老师们常常被繁琐的成绩发布工作所困扰。为简化这一流程,易查分提供了一个高效且便捷的解决方案…

无人机复合材料

无人机复合材料是无人机制造中不可或缺的重要材料,它们以其独特的性能优势在无人机设计中发挥着关键作用。 一、无人机复合材料概述 无人机复合材料是由两种或两种以上不同性能、形态的材料,通过复合工艺组合而成的新型材料。这些材料在继承原有材料主要…

【C++二分查找】911. 在线选举

本文涉及的基础知识点 C二分查找 LeetCode911. 在线选举 给你两个整数数组 persons 和 times 。在选举中,第 i 张票是在时刻为 times[i] 时投给候选人 persons[i] 的。 对于发生在时刻 t 的每个查询,需要找出在 t 时刻在选举中领先的候选人的编号。 在…

Linux 环境下Mysql没有开放公网端口连接创建数据库

一、情况描述: 服务器切换迁移,需要重新部署服务,由于该服务器上不能装docker,只能用apt命令安装 openjdk(乌班图系统)故只能用最原始的方法部署服务。 已知服务器IP地址,且服务器上面已经安装了…

一键解读Hive数仓工具!

在数字化时代,数据仓库已成为企业的核心资产,它不仅仅是一个存储大量数据的场所,更是企业洞察过去、把握现在、预见未来的重要工具。随着大数据技术的发展和应用,数据仓库的重要性愈发凸显,它能够帮助企业从海量的数据…

论文阅读:3D Gaussian Splatting for Real-Time Radiance Field Rendering

论文地址:https://arxiv.org/abs/2308.04079 代码地址:graphdeco-inria/gaussian-splatting: Original reference implementation of "3D Gaussian Splatting for Real-Time Radiance Field Rendering" (github.com) 概要 提出一个实时且能够…

React18快速入门

https://www.bilibili.com/video/BV1pF411m7wV 需要先安装并配置React相关的工具和插件 下载安装Node.js,这里以MacOS Node.js v22.6.0为例 终端命令行检查是否安装成功 node -v npm -vNode.js快速入门 npm设置镜像源 #设置为阿里镜像源 npm config set regist…

精准控图工具 Concept Sliders:超好用的 控制 Lora 适配器

Concept Sliders 你有没有遇到这样的情况?你花费大量时间制作提示和寻找种子,以使用文本到图像模型生成所需的图像。但是,你还需要对生成图像中的属性强度(如眼睛大小或照明)进行更细致、更精细的控制。修改提示会破坏…

141. 环形链表、142. 环形链表 II

题目 思路 链表无环情况:有空结点 链表有环:有些结点会重复 所以 用集合(哈希表)来记录遍历的结点 结点不存在,则将结点加到集合中,当遍历到的结点存在集合中,即为链表环开始的结点&#xff0c…

遥控器握杆的几种常见方式!!!

1. 双手持握法 站姿操作:站立时,两脚分开,比肩略宽,以保持身体稳定。双手持握遥控器的两侧,保持放松状态。 细节技巧: 轻轻地用无名指和小指托起遥控器,掌心和遥控器之间留有一定的空隙。 遥…

华为网络多生成树协议

多生成树协议 一个或多个vlan可以映射到同一个生成树中; MSTP将一个网络划分为多个域,每个域有多个生成树,域间利用CIST 公共与内部生成树commonand internal spanning tree 保证拓扑结构无环路; 实例即多个vlan的集合&#xf…

facebook投放版位选择技巧

卖家若想通过Facebook广告推广业务,首先需要了解Facebook广告的版位和展示位置。 Facebook广告版位包括动态消息、桌面右边栏、移动应用受众网络、Instagram版位和视频插播广告。动态消息版位分为桌面版和移动版,支持多种广告目标,如主页赞、…