Fast Rcnn

news/2024/11/15 7:38:06/文章来源:https://www.cnblogs.com/cork/p/18398733

物体检测Faster Rcnn系列

目标检测概论

之前我们在机器学习了解过各种分类和回归算法

image-20240716195716989

目标检测需要检测物体的位置,那么把目标检测看成回归任务?好像不太合适,因为一张图像可能有多个目标

那么看做分类问题呢

image-20240716195922909

看成分类问题,用的是滑动窗口

image-20240716200032259

把图片划分为几个区域,然后一个个预测是不是dog ,但是速度太慢了。 看成分类不太行,看成回归也不行,哪有没有一种更好的方法。

之前有一种做法是Select Search算法,先筛选出一些可能是物体的候选框

image-20240718175847785

先看几种经典的目标检测算法

经典目标检测算法

image-20240718180408807

R-CNN这个算法比较老了,就不做过多的介绍了。 既做分类也做回归,SVMs典型的分离器,Bbox reg 典型的回归。

首先Select Search找到输入图像的候选框 (2K个左右)分别进行卷积

image-20240718180927629

这个过程就慢了,首先选候选框,然后用卷积提取特征,再把提取到的特征输入,svm和回归模型进行预测。14年的一个算法

image-20240718181243113

R-CNN的问题,候选框没有共享卷积网络。卷积网络对输入图像大小没有限制,但是全连接层限制了神经网络,因为全连接层要保持一致,由于Select Search生成的框大小不一样 ,所以就用了不同的卷积网络。那么怎么样能共享卷积,共享卷积就要最终连接的全连接层上左边的权重是一致的,但是输入图像大小又不一样

而且一个检测分类一个回归,训练太慢了,检测一张图片47s

用SPP-net进行改进,输入图像大小不一样,最终得到的特征图大小也不一样

在普通的CNN机构中,输入图像的尺寸往往是固定的(比如224*224像素),通过裁剪或者放缩使输入大小一样,输出则是一个固定维数的向量。SPP Net在普通的CNN结构中加入了ROI池化层(ROI Pooling),使得网络的输入图像可以是任意尺寸的,输出则不变,同样是一个固定维数的向量。

image-20240718183614644

通过金宇塔层,对特征图中每一个候选区进行划分,得到固定大小的特征向量。

image-20240718184255404

对于任意大小的特征图(如B×C×H×W),Spatial Pyramid Pooling首先分别将特征图划分为若干数量的子块,然后对这些子块计算最大池化,将计算结果进行拼接即可得到固定大小的输出。

上图采用了三个分支,分别将特征图划分1×1、2×2、4×4大小的子块,然后对每个子块进行最大池化,即将不同大小的子块都转化为一个值,将池化之后的结果进行拼接即可得到一个大小固定为21维的输出。如此一来,无论输入特征图的尺寸发生如何变化,Spatial Pyramid Pooling均可将其转化为固定大小的尺寸进行输出。

经过第一代R-CNN,作者又提出第二代算法,fast R-CNN

image-20240718184856413

之前是先找候选框,现在是先卷积得到特征图,然后在找特征图对应的候选框,特征图上一块区域对应原始图像的区域(感受野)。但是需要ROl,

image-20240718185909802

可以看出fast rcnn主要时间都花费在候选框上(Region proposal),而且Select Search只能在cpu上运行

如何解决这个问题

faster R-CNN

image-20240718190232010

R-CNN(第一代),Fast R-CNN(第二代) , Faster R-CNN(第三代),第三代的主要改变就是增加了RPN层

RPN对特征图产生的候选框进行二分类,是不是一个物体,是物体后进行微调(bouding-box)产生的候选框和它最近的GT(Ground Truth)

image-20240719100650013

接下来做的才是20分类,之前的2分类只是判断是不是物体,后面的分类才是判断具体是什么

image-20240719100856585

Faster R-CNN已经可以做到1秒5张图片,效果展示

image-20240719101144858

论文整体概述

论文地址

image-20240720141358530

全卷积,一秒5帧

为了同时检测大目标和小目标,一种比较常见的方式就是图像金字塔,把图像resize成不同的大小,虽然这样可以找到大物体和小物体,但是由于输入图像变多,速度会非常的慢

image-20240902141835616

还有一种做法是对filter size做多种变换

image-20240902142144181

image-20240902144926702

2k表示,对于k个候选框,每个框是前景和背景的概率,k=9的话,就是18个结果;4k是每个框预测的x,y,w,h

image-20240902150226487

还有一步过滤的操作

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

W外链平台短链稳定不,有广告吗?

关于W外链平台的短链稳定性及是否有广告情况如下: 短链稳定性: 技术保障方面:W外链平台具备一定的技术优势来保障短链的稳定性。它拥有短网址生成核心技术,能通过算法压缩等方式生成短链并存储对应关系确保跳转;采用了高可用架构、缓存策略、安全防护等技术手段。所以…

springboot启动报错:警告Could not open windows registry node Software\JavaSoft\Prefs at root 0x80000002.

意思是无法在根目录0x80000002打开/创建prefs根节点Software\JavaSoft\Prefs且不会影响正常程序运行 解决:WIN+R regedit HKEY_LOCAL_MACHINE\Software\JavaSoft 新建项:Prefs 重新启动java项目,搞定

高智能化 智能传感器让数据采集和计算变得简单 实现自动检测和自动计算

高智能化 智能传感器让数据采集和计算变得简单 实现自动检测和自动计算智能传感器是一种具有自动检测、自动识别和自动计算功能的传感器。它将传感器相关数据(如传感器型号、量程、K值、B值、编号等)写入电子标签,并将电子标签嵌入到传感器内部。在读取传感器数据的同时,智能…

记录一个opencv的imread方法无法读取成功的问题,【设计到visual studio和静态库(lib)匹配的问题】

一、为什么会遇到这个问题 公司需要对多图进行拼接,经过多番查找发现了OpenStitching这个库。可以实现多图拼接。在python段尝试了之后感觉效果不错,所以使用Visual Studio进行C++开发。 在读取图片的时候发现imread方法无论怎么样都无法读取到图片。 解决办法 我一开始以为是…

外卖霸王餐系统如何加入运营

加入运营外卖霸王餐系统可以从以下几个方面着手: 1. **系统搭建与选择**: - **自行开发**: - **需求分析**:明确系统的功能需求,比如要支持用户注册与登录、活动展示与报名、订单管理、评价系统、返现功能等。同时确定目标用户群体,是面向学生、上班族还是其他特定人群,…

LVGL有关Linux的移植(8.2)

LVGL的移植 下载的源码总共有三个部分: LVGL源码 + LVGL Linux平台总源码框架 + LVGL驱动源码 LVGL源码下载 进入LVGL的GitHup选择要下载的版本,以下以8.2的版本为例GitHup提供多种下载方式,我们以压缩包的形式下载下载arm Linux开发板fb0的源码主框架 LVGL 配置为使用标准 …

GBJ3510-ASEMI新能源专用整流桥GBJ3510

GBJ3510-ASEMI新能源专用整流桥GBJ3510编辑:ll GBJ3510-ASEMI新能源专用整流桥GBJ3510 型号:GBJ3510 品牌:ASEMI 封装:GBJ-4 批号:2024+ 分类:整流桥 特性:整流扁桥、整流桥 平均正向整流电流(Id):35A 最大反向击穿电压(VRM):1000V 恢复时间:>2000ns 结温:-55℃…

自增主键去哪了?---一次开发过程中的思考

前情提要: 最近新接了一个需求,需要去创建两张表,其中有一张表需要根据业务id和业务类型建立唯一索引,对数据唯一性进行约束。 因为涉及到业务嘛,表结构就进行缩略了 表结构示例如下:CREATE TABLE `example_table` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT C…

linux操作MySQL

查看mysql是否正确安装 sudo rpm -qa | grep mysql查看mysql服务单元文件所在位置 一般情况下,mysql的服务单元文件所在路径: /usr/lib/systemd/system说明: 这个目录下面,如果放置的是mysqld.service文件,那么启动MySQL的时候需要使用的是mysqld; 如果放置的是mysql.ser…

Oracle隐式转换

收到数据库服务器cpu告警,当时在吃饭,来不及登录查看。(数据库80%的问题都是SQL引起的) 后续通过会话快照信息进行分析。 select sample_time,sql_id,count(*) from dba_hist_active_sess_historywhere sample_time>to_date(20240904 17:58:00,yyyymmdd hh24:mi:ss)and …

通过DashScope API调用将多种模态转换为向量

​ 本文介绍如何通过模型服务灵积DashScope进行多模态向量生成,并入库至向量检索服务DashVector中进行向量检索。本文介绍如何通过模型服务灵积DashScope进行 多模态向量生成 ,并入库至向量检索服务DashVector中进行向量检索。 模型服务灵积DashScope,通过灵活、易用的模型A…

跨境电商需要用到的电商API接入详解(淘宝京东拼多多1688API接口)

随着电子商务的快速发展,跨境电商已经成为越来越多企业的选择。在跨境电商的业务流程中,电商API发挥着至关重要的作用。本文将详细介绍跨境电商需要用到的电商API,包括商品信息、商品类目信息、店铺信息、交易明细信息、商品管理、评价信息、店铺用户信息等。**一、商品信息…