Faster R-CNN详解

news2024/11/28 22:54:29

Faster R-CNN

Faster R-CNN是作者Ross Girshick继Fast R-CNN后的又一力作。使用VGG16作为网络的backbone,推理速度在GPU上达到5fps(包括候选区域的生成),准确率也有进一步的提升。在2015年的ILSVRC以及COCO竞赛中获得多个项目的第一名。

在这里插入图片描述

Faster R-CNN算法流程

1.将图像输入网络得到相应的特征图;
2.使用RPN结构生成候选框,将RPN生成的候选框投影到特征图上获得相应的特征矩阵;
3.将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果。

在这里插入图片描述

第一步第三步和Fast R-CNN一样,区别是第二步,使用RPN生成候选框。

RPN结构

请添加图片描述

我们在特征图上生成一个滑动窗口,每滑动一次生成一个一维向量,然后通过两个全连接层分别生成目标概率和边界框回归参数。2k指的是针对我们的k个anchor boxes为前景和背景的概率,并不对其进行分类。4k指的是针对我们的k个anchor boxer生成的边界框回归参数。256-d指的是backbone的深度,ZF网络为256,VGG的话为512。

请添加图片描述

对于特征图上的每个3x3的滑动窗口,计算出滑动窗口中心点对应原始图像上的中心点,并计算出k个原图特征图。Faster R-CNN中给出了三种anchor的尺度和比例,分别是{1282,2562,5122},{1:1,1:2,2:1}。所以我们每个滑动窗口在原图中都会有9种anchor。

请添加图片描述

RPN生成的候选框有上万个,对于RPN生成的候选框之间存在大量重叠,基于候选框的cls得分,采用非极大值抑制,IoU设为0.7,这样每张图片大约只剩2k个候选框。训练RPN我们从上万的候选框中采样其中256个anchor,这256个anchor是由正负样本组成的,他们的比例大约是1:1,正样本不足采用负样本补齐。对于正样本,我们把与ground-truth box相交的IOU超过0.7的称为正样本。极少数情况下,如果正样本不足,会取ground-truth box相交的IOU超过最大的anchor为正样本。对于负样本,我们把与ground-truth box相交的IOU低于0.3的称为正样本。

RPN损失函数

在这里插入图片描述

pi表示第i个anchor预测为真实标签的概率;
pi*当为正样本时为1,当为负样本时为0;

ti表示预测第i个anchor的边界框回归参数;
ti*表示第i个anchor对应的GT Box;

Ncls表示一个mini-batch中的所有样本数量256;
Nreg表示anchor位置的个数(不是anchor个数)约2400。
取λ为10,240与256差不了多少,所以pytorch官方实现统一用Ncls
损失函数由两部分,先看分类损失,使用softmax Cross Entropy:

在这里插入图片描述

使用Binary Cross Entropy:

在这里插入图片描述

对于边界回归损失:

在这里插入图片描述

Faster R-CNN训练

原论文中采用分别训练RPN以及Fast R-CNN的方法:
(1)利用ImageNet预训练分类模型初始化前置卷积网络层参数,并开始单独训练RPN网络参数;
(2)固定RPN网络独有的卷积层以及全连接层参数,再利用ImageNet预训练分类模型初始化前置卷积网络参数,并利用RPN网络生成的目标建议框去训练Fast RCNN网络参数;
(3)固定利用Fast RCNN训练好的前置卷积网络层参数,去微调RPN网络独有的卷积层以及全连接层参数;
(4)同样保持固定前置卷积网络层参数,去微调Fast RCNN网络的全连接层参数。最后RPN网络与Fast RCNN网络共享前置卷积网络层参数,构成一个统一网络。

而我们现在直接采用RPN Loss+ Fast R-CNN Loss的联合训练方法。

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

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

相关文章

Easyrecovery2022硬盘磁盘U盘免费数据恢复软件

EasyRcovery的软件支持因各种原因损坏或误删的文件,文档,照片,视频,音频,电子邮件等等类型的数据它都可以恢复。同时,这款软件不仅仅支持u盘的数据恢复,移动硬盘,磁盘,sd…

【POJ No. 3067】 公路交叉数 Japan

【POJ No. 3067】 公路交叉数 Japan 北大 OJ 题目地址 【题意】 东海岸有N 个城市,西海岸有M 个城市(N ≤1000,M ≤1000),将建成K 条高速公路。每个海岸的城市从北到南编号为1, 2, ……每条高速公路都是直线&#xf…

计算机网络---TCP流量控制和拥塞控制

(一) TCP 流量控制 TCP提供流量控制服务来消除发送方(发送速率太快)使接收方缓存区溢出的可能性,因此 流量控制是一个速度匹配服务(让发送方慢一点,要让接收方来得及接收,实现匹配发…

Qt编写物联网管理平台(支持win/linux/mac/嵌入式linux/modbus等)

一、前言 这个物联网综合管理平台前后迭代了五年,一点一滴慢慢积累起来,从最开始的只有modbus串口协议解析以及简单的表格显示数据,慢慢的逐渐增加了tcp_rtu支持,用户管理模块,地图监控模块,而后为了拓展性…

消息队列 RabbitMQ入门:Linux(Docker)中安装和卸载RabbitMQ服务

文章目录前言一、Linux中安装RabbitMQ下载Erlang下载RabbitMQ进入Linux进行安装启动RabbitMQ二、RabbitMQ Web管理页面安装RabbitMQ Web管理页面访问管理页面三、使用Docker安装RabbitMQ安装Docker安装启动RabbitMQ访问管理页面四、Linux卸载RabbitMQ相关卸载RabbitMQ卸载Erlan…

第41讲:MySQL内置的QL性能分析工具

文章目录1.SQL性能分析的概念2.分析数据库中SQL的执行频率3.数据库中的慢查询日志3.1.开启慢查询日志功能3.2.模拟慢SQL查询观察日志内容4.Profile查看SQL每个阶段的耗时4.1.开启Profile操作4.2.随便执行一些查询语句4.3.查询执行SQL的耗时4.4.查询某一条SQL每个阶段的耗时4.5.…

【ASM】字节码操作 工具类与常用类 InstructionAdapter 介绍

文章目录 1.概述1.1 为什么会有 InstructionAdapter类?2. InstructionAdapter2.1 class info2.2 fields2.3 构造方法2.4 methods3.示例3.1预期目标4.总结1.概述 在上一节:【ASM】字节码操作 工具类与常用类 AnalyzerAdapter 工作原理 我们学习了AnalyzerAdapter类的工作原理…

【OpenCV 例程 300篇】246. 特征检测之ORB算法

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程 300篇】246. 特征检测之ORB算法 特征检测与匹配是计算机视觉的基本任务,包括检测、描述和匹配三个相互关联的步骤。广泛应用于目标检测、图像检索、视频跟踪和三维重建等诸多领域。 6.9.1 ORB 算…

【Hack The Box】linux练习-- SneakyMailer

HTB 学习笔记 【Hack The Box】linux练习-- SneakyMailer 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月23日🌴 &…

函数调用在嵌入式架构设计中的应用

函数调用很好理解,即使刚学没多久的朋友也知道函数调用是怎么实现的,即调用一个已经封装好的函数,实现某个特定的功能。 把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口,然后在其他地方调用即…

SpringCloud - Config分布式配置中心

文章目录一.概述1. 分布式系统面临的配置问题2. 什么是配置中心3. 配置中心怎么用4. 配置中心能做什么二.Config服务端配置与测试1. 搭建1.1 在github上创建一个springcloud_config的新仓库1.2 获得新仓库的地址:1.3 本地硬盘目录上新建git仓库并clone1.4 创建文件1…

设置一个不能被继承的类

小屋杂谈,记录日常 方法1: 如果想让这个类不能被继承,可以把这个类的构造函数设置成私有,这样子类去继承他构造就会报错,这样的话这个类就是不能被继承的,如果需要用这个类的对象的话,在基类里…

机器学习中的交叉熵

文章目录一、背景二、概率论基础知识三、熵≈信息熵(应用领域不同)、相对熵KL散度、交叉熵、softmax、sigmoid、交叉熵损失图像分割如何理解CrossEntropyLoss()参考资料一、背景 学习机器学习过程中,总是会遇到交叉熵这个名词。通过交叉熵损…

SpringBoot整合knife4j

1.1 Swagger 前后端分离开发:前端和后端分开进行开发,2个项目,一个是前端项目,一个是后端项目 目前基本上很多小项目都是前后端分离,除了后台管理系统 前后端分离开发,前端(app、小程序、智能硬件等)怎么…

栈(C语言实现)

文章目录:1.栈的概念2.栈的结构3.接口实现3.1初始化栈3.2判断栈是否为空3.3压栈(入栈)3.4出栈3.5查看栈顶元素3.6统计栈内元素个数3.7销毁栈1.栈的概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操…

Credly 数字证书

Credly 数字证书 Credly 简介 通过 Credly 颁发的徽章是对学习成果、经验或能力的数字表述。Credly 数字证书包括常见的组织徽章,如:AWS, Adobe, Autodesk, Certiport, Microsoft, CISCO, IBM 等等,以一种简单和安全的方式在线分享和验证&a…

基于改进人工蜂群算法的K均值聚类算法(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

基于SEIRD和元胞自动机(CA)模型的传染病发展趋势预测

目录前言一、模型假设二、符号说明三、SEIRD模型1. 模型求解四、元胞自动机(CA)模型1. 模型求解2. 城市居民减少外出对疫情发展的影响3. 城市间人口流动对疫情发展的影响五 基于防疫政策的修正模型2 “全民戴口罩”“早发现,早隔离”“全民打疫苗”总结前…

Jsonp跨域的坑,关于jsonp你真的了解吗

先来介绍Jsonp跨域 Jsonp全称是Json with Padding,和Json没有关系 Json是一种数据交换格式,而Jsonp是一种依靠开发人员聪明才智创造出的一种费官方跨域数据交换协议。json是描述信息的格式,jsonp是信息传输的协议 在页面上直接发送一个跨域的…

树莓派之树莓派系统安装

树莓派系统安装 概述 树莓派(是为学习计算机编程教育而设计),只有信用卡大小的微型电脑,其系统基于Linux。随着Windows 10 IoT的发布,我们也将可以用上运行Windows的树莓派。2014年刚知道有树莓派的时候好奇买了一块,型号&#x…