目标检测(Object Detection):Fast R-CNN,YOLO v3

news2024/9/27 21:28:25

目录

目标检测(Object Detection)

R-CNN

SPPNet

Fast R-CNN

YOLO v1

YOLO v2

YOLO v3


目标检测(Object Detection)

任务是计算机视觉中非常重要的基础问题,也是解决图像分割、目标跟踪、图像描述等问题的基础。目标检测是检测输入图像是否存在给定类别的物体,如果存在,输出物体在图像中的位置信息(矩形框的坐标值表示,Xmin、Ymin、Xmax、Ymax)。

早期,传统目标检测算法还没有使用深度学习,一般分为三个阶段:区域选取、特征提取、特征分类。

  • 区域选取:采用滑动窗口(Sliding Windows)算法,选取图像中可能出现物体的位置,这种算法会存在大量冗余框,并且计算复杂度高。

  • 特征提取:通过手工设计的特征提取器(如SIFT和HOG等)进行特征提取。

  • 特征分类:使用分类器(如SVM)对上一步提取的特征进行分类。

传统算法HOG+SVM的作用如下:

图片

2014年的R-CNN(Regions with CNN features)使用深度学习实现目标检测,从此拉开了深度学习做目标检测的序幕。目标检测大致可以分为一阶段(One Stage)模型和二阶段(Two Stage)模型。目标检测的一阶段模型是指没有独立地提取候选区域(Region Proposal),直接输入图像得到图中存在的物体类别和相应的位置信息。典型的一阶段模型有SSD(Single Shot multibox-Detector)、YOLO(You Only Look Once)系列模型等。二阶段模型是有独立地候选区域选取,要先对输入图像筛选出可能存在物体的候选区域,然后判断候选区域中是否存在目标,如果存在输出目标类别和位置信息。经典的二阶段模型有R-CNN、SPPNet、Fast R-CNN、Faster R-CNN

下图总结了目标检测中一些经典模型的发展历程:

图片

一般来说,一阶段模型在计算效率上有优势,两阶段在检测精度上有优势。对于一阶段和二阶段模型在速度上和精度上的差异,一般有以下原因:

1. 多数一阶段模型是利用预设的锚框(Anchor Box)来捕捉图像可能存在物体的区域,图像中包含物体的框远少于总共的锚框,因而在训练分类器时正负样本数目极不平衡,这会导致分类器训练的效果不好。

2. 二阶段模型在会修正候选框的位置,带来更高的定位精度,同时也增加了模型复杂度。

接下来,简单介绍二阶段模型的发展过程。

R-CNN

首先使用无监督的选择性搜索(Selective Search, SS)方法将输入图像中颜色、纹理相近的区域合并,产生2000个候选区域;

然后截取这些候选区域相应的图像,裁剪缩放至固定的尺寸,依次送入CNN特征提取网络提取特征;

特征送入每一类的SVM分类器,判断是否属于此类;

使用线性分类器修正框位置和大小,最后对检测结果进行非极大值抑制(Non-Maximum Suppression,NMS)。

图片

SPPNet

在RCNN中,要对候选区域裁剪缩放至固定的尺寸,会破坏截取图像的长宽比,损失一些信息。针对以上问题,SPPNet 提出了空间金字塔池化(Spatial Pyramid Pooling)层,该层置于 CNN的末端,输入不需要缩放至指定的大小。下图第一行是 R-CNN,第二行是 SPPNet,对比可以发现它们的区别。

图片

SPPNet 的思路是对于任意大小的 feature map 首先分成 16、4、1 个块,然后在每个块上最大池化,池化后的特征拼接得到一个固定维度的输出。

图片

Fast R-CNN

Fast R-CNN 的思路与 SPPNet 一致,区别在于 Fast R-CNN 使用感兴趣区域池化( Region-of-Interest Pooling )而非空间金字塔池化。Fast R-CNN 相比 R-CNN 使用全连接网络代替之前的 SVM 分类器和线性回归器进行物体分类和检测框的修正。Fast R-CNN 有两个输出,一个是通过 softmax 层进行类别预测,另一个输出物体的检测框。

图片

Faster R-CNN

Faster R-CNN 在 Fast R-CNN 的基础上,将其最耗时的候选区域提取用一个区域候选网络(Region Proposal Network,RPN)进行替代。在 faster R-CNN 中,一幅输入图像先由 RPN 提取候选区域,再取出各个候选区域对应的特征图,送入 Fast R-CNN (独立于 RPN 的后半部分)进行物体分类和位置回归。

图片

Region-CNN (区域卷积神经网络) 系列将目标检测问题归结为分类问题,即先寻找目标可能存在的区域(Bounding box),然后对这些Box分类,从而确定目标。YoLo 则将目标检测问题转换为一个回归问题(Regreesion problem),直接预测出 boudning box 和相关的类别信息。YoLo 是一个可以端到端训练的单个网络(single network),它不需要单独的搜索 Region Proposals,也不需要单独的 Classifier,因此其检测速度特别快,YoLo 可以达到 45 FPS,而 Fast YoLo 可以达到 155FPS。YoLo 对背景的识别效果较好,且有一定的迁移性,但是 YoLo 最大的问题是对小目标的检测不准确。

YOLO v1

1. 将输入图像(

图片

)划分为

图片

个网格,如果一个物体的中心落在某个网格,则这个网格负责这个物体的检测。

2. 每个网格预测 B 个 Bounding Box 的位置,这个 Box 的置信度得分,以及 Box 中是否存物体的概率。

  • Bounding Box 包含五个参数(中心 x 坐标,中心 y 坐标,宽度,高度,置信度)

  • 置信度得分表示该网格包含一个对象的可能性:Pr(containing an object) x IoU(pred, truth); 其中Pr=概率。

  • 如果网格包含一个对象,则它将预测该对象属于每个类别的概率

3. 将输入图像划分为

图片

个网格,每个网格预测B 个Bounding Box以及置信度,则最终的预测编码为

图片

图片

YOLO v2

YOLO v2 在 YOLO v1 的基础上做出了改进,大体可以分为网络结构的改善、先验框的设计及训练技巧。

1. 网络结构的改善,提出了一个全新的网络结构,称之为 DarkNet。

图片

  • BN层:在卷积层后面添加了批归一化(BN)层。

  • 用连续 3×3 卷积替代了 v1 版本中的 7×7 卷积,这样既减少了计算量,又增加了网络深度。此外,DarkNet 去掉了全连接层与 Dropout 层。

  • Passthrough 层:DarkNet 还进行了深浅层特征的融合。

2. 先验框的设计,YOLO v2 首先使用了聚类的算法来确定先验框的尺度。

3. 训练技巧,YOLO v2 采取了多种尺度的图片作为训练的输入。模型在训练过程中,每隔 10 个批次就改变输入图片的大小。

YOLO v3

YOLO v3 在 YOLO v2 的基础上做出了一些改动。

1. YOLO v3 是使用了 Logistic 函数代 Softmax函数。原因在于,Softmax函数输出的多个类别预测之间会相互抑制,只能预测出一个类别,而Logistic分类器相互独立,可以实现多类别的预测。

2. YOLO v3 采用了更深的网络作为特征提取器(DarkNet-53),包含53个卷积层。为了避免深层网络带来的梯度消失问题,DarkNet-53借鉴了ResNet的残差思想,在基础网络中大量使用了残差连接。

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

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

相关文章

“梯媒广告商”分众传媒,能否凭借AI更“香”?

“你没事儿吧?你没事儿吧?没事儿就吃溜溜梅”“婚纱照,想去哪拍,就去哪拍,铂爵旅拍”“0糖0脂0卡,我喝元气森林”……相信不少人都被这些魔性、好记的广告词洗脑过,而这些脍炙人口的经典广告语背…

ssm+vue农家乐信息平台源码和论文

ssmvue农家乐信息平台源码和论文066 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 1、研究现状 国外,农家乐都被作为潜在的发展农村经济,增加农民收入的重要手段,让农户广…

从开源到商业化:成功的转型策略

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

研磨设计模式day09原型模式

目录 场景 代码实现 有何问题 解决方案 代码改造 模式讲解 原型与new 原型实例与克隆出来的实例 浅度克隆和深度克隆 原型模式的优缺点 思考 何时选用? 相关模式 场景 代码实现 定义订单接口 package com.zsp.bike.day08原型模式;/*** 订单的接口*…

大数据时代的软件开发实践:利用云计算和AI赋能创新

文章目录 云计算的赋能弹性资源管理远程协作与分布式开发持续集成和持续交付成本效益 人工智能的赋能数据驱动的决策自动化智能预测和优化自适应系统 创新的实践方法数据驱动的创新智能化产品开放式创新迭代和反馈 🎈个人主页:程序员 小侯 🎐…

开源的安全性:挑战与机会

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

Spring和mybatis整合

一、Spring整合MyBatis 1. 导入pom依赖 1.1 添加spring相关依赖(5.0.2.RELEASE) spring-core spring-beans spring-context spring-orm spring-tx spring-aspects spring-web 1.2 添加mybatis相关依赖 mybatis核心:mybatis(3.4.5) Mybatis分页:pagehel…

基于Python的小区监控图像拼接系统设计与实现【源码+论文+演示视频+包运行成功】

博主介绍:✌csdn特邀作者、博客专家、java领域优质创作者、博客之星,擅长Java、微信小程序、Python、Android等技术,专注于Java、Python等技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 …

华为云渲染实践

// 编者按:云计算与网络基础设施发展为云端渲染提供了更好的发展机会,华为云随之长期在自研图形渲染引擎、工业领域渲染和AI加速渲染三大方向进行云渲染方面的探索与研究。本次LiveVideoStackCon 2023上海站邀请了来自华为云的陈普,为大家分…

研磨设计模式day11代理模式

目录 场景 代码实现 ​编辑 解析 定义 代理模式调用示意图 代理模式的特点 本质 ​编辑何时选用 场景 我有一个订单类,包含订单数、用户名和商品名,有一个订单接口包含了对订单类的getter和setter 现在有一个需求,a创建的订单只…

位运算(包括OR,AND,XOR,NOR,NAND,XNOR,以及0xFF等常见应用)

目录 ​编辑 1、按位与操作 2、按位或操作 3、取反运算 4、异或运算 不同为1,相同为0 ​编辑 5、左移运算 6、右移运算 常见用途: C语言位运算讲解: 位运算(包括OR,AND,XOR,NOR,NAND,XNOR,以及&0xFF等常…

React 项目中引入msal验证以及部分报错处理

功能实现 如何在React 项目中引入msal身份验证, 微软在官网有提供文档支持,文档包含示例和具体使用的教程,地址如下: https://learn.microsoft.com/zh-cn/azure/active-directory/develop/tutorial-v2-nodejs-webapp-msal 照着文…

ppt转pdf免费的工具哪个好用?ppt在线转pdf的方法分享

在工作和学习中,将PPT文件转换为PDF格式具有重要意义。PDF文件的大小较小,适用于各种平台和设备,保持了原始文件的内容和格式,具有广泛的可读性和兼容性。那么小编就来为大家详细地说一说“ppt转pdf免费的工具哪个好用?ppt在线转…

Pycharm链接远程mysql报错

Pycharm链接远程mysql配置及相应报错如下: 解决方法: 去服务器确认Mysql版本号: 我的Mysql为5.7.43,此时Pycharm mysql驱动为8.0版本,不匹配,所以需要根据实际的版本选择对应的驱动;选择对应的版…

TinyVue - 华为云 OpenTiny 出品的企业级前端 UI 组件库,免费开源,同时支持 Vue2 / Vue3,自带 TinyPro 中后台管理系统

华为最新发布的前端 UI 组件库,支持 PC 和移动端,自带了 admin 后台系统,完成度很高,web 项目开发又多一个选择。 关于 OpenTiny 和 TinyVue 在上个月结束的华为开发者大会2023上,官方正式进行发布了 OpenTiny&#…

uniapp使用sqlite 数据库

uniapp使用sqlite 数据库 傻瓜式使用方式,按步骤,即可使用。 1.开启sqlite 在项目中manifest.json该文件中配置 2.封装数据库的调用方法 const sqlName "zmyalh" //定义的数据库名称 const sqlPath "_doc/zmyalh.db" //定义数…

【腾讯云 TDSQL-C Serverless 产品测评】- 云数据库之旅

“腾讯云 TDSQL-C 产品测评活动”是由腾讯云联合 CSDN 推出的针对数据库产品测评及产品体验活动,本次活动主要面向 TDSQL-C Serverless版。 本次参与活动可以涵盖不同技术层面的用户,可以针对TDSQL-C产品的自动弹性能力、自动启停能力、兼容性、安全、并…

EasyExcel自定义字段对象转换器支持转换实体和集合实体

文章目录 1. 实现ObjectConverter2. 使用3. 测试3.2 导出excel3.1 导入excel 1. 实现ObjectConverter package com.tophant.cloud.common.excel.converters;import cn.hutool.json.JSONUtil; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.enums.…

CSS中如何实现多列布局?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 多列布局(Multi-column Layout)⭐ column-count⭐ column-width⭐ column-gap⭐ column-rule⭐ column-span⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧…

多线程与高并发——并发编程(2)

文章目录 二、并发编程的三大特性1 原子性1.1 什么是原子性1.2 怎么保证原子性1.2.1 synchronized1.2.2 CAS1.2.3 Lock 锁1.2.4 ThreadLocal 2 可见性2.1 什么是可见性2.2 解决可见性的方式2.2.1 volatile2.2.2 synchronized2.2.3 Lock2.2.4 final 3 有序性3.1 什么是有序性3.2…