计算机视觉——目标检测(R-CNN、Fast R-CNN、Faster R-CNN )

前言、相关知识

1.闭集和开集

  • 开集:识别训练集不存在的样本类别。
  • 闭集:识别训练集已知的样本类别。

2.多模态信息融合

文本和图像,文本的语义信息映射成词向量,形成词典,嵌入到n维空间。
图片内容信息提取特征,形成n维向量,嵌入到n维空间。
文本和图像的特征距离要尽量近一点,这样文本信息和图像内容信息特征相似。可以根据一种模态输入获得另一模态类型的输出。

3. 计算机视觉任务

  • 分类问题
  • 语义分割
  • 物体检测
  • 示例分割
    Alt

一、目标检测基础知识

1. 目的:输入彩色RGB图像,输出检测的物体。
2. 过程:分类+定位
3. 最新的目标检测技术:文本 + 图像,制定类别检测
4. 现有方法分类

1. 一步法(SSD、YOLO):仅使用一个卷积神经网络CNN直接预测不同目标和位置
2. 两步法(R-CNN、Fast R-CNN、Faster R-CNN)
step1:先生成候选框(利用Region Proposal Network(RPN))
step2:根据候选框分类+精调

二、目标检测——R-CNN(regional with cnn feature)

![R-CNN论文](https://img-blog.csdnimg.cn/direct/587d375e082d4b0aa1605822a0031212.png #pic_center=50%x50%)
R-CNN算法步骤
R-CNN过程

  • 用selective search划分出候选区域(1k-2k),区域之间可能会有重合。
    候选区域生成
  • 对每一个候选区域,使用深度网络提取特征
    提取特征
  • 每一个特征送入SVM分类器,判断是否属于该类别(ps:非极大值抑制剔除就是将重合区域最大的区域删除)
    分类过程
    ps:非最大值抑制剔除IOU
    IOU
  • 使用回归器(最小二乘)精细调整候选框位置
    修正框
  • R-CNN框架:划分区域——ss算法,特征提取——CNN网络,分类器——SVM支持向量机、回归期——最小二乘法。
    在这里插入图片描述)
  • R-CNN缺点:速度慢、空间占用多

三、目标检测—— Fast R-CNN( fast regional with cnn feature)

Fast R-CNN是R-CNN作者在原有基础上的改善,对于推理速度,准确率,训练时间都远远超于R-CNN。
Alt
Fast R-CNN算法步骤

  • 一张图像生成多个候选区域(1K~2K)使用selective search 方法。
  • 通过深度卷积神经网络,将图像输入之后得到相应的图像,将SS算法生成的候选框投影到特征图上获得相应的特征矩阵。
    ps:此处和R-CNN的区别,R-CNN将候选框输入到卷积神经网络得到特征,Fast R-CNN直接将整幅图像给卷积神经网络,在根据特征网络进行计算特征,避免了计算重复的区域。
  • 将特征矩阵根据ROI pooling 缩放到7*7大小的特征图,然后通过一系列全连接层得到结果。
    Alt
    每一个区域的有很多像素,对于像素上的特征数据进行最大池化或者平均池化就会得到比较规整的图像。
  • Fast R- Cnn分类器介绍
    假如有n个类别,如果没有满足这n个类别,那么他就是背景,所以一共有n+1个类别的概率,我们根据每个类别的概率,概率最大的类别就是最终预测的类别。
    Alt
  • Fast R- Cnn回归器介绍
    Fast R- Cnn分类器是根据缩放来实现的。
    Alt%)
  • Fast R- Cnn损失函数介绍
    Fast R- Cnn论文中提出了一种新的损失函数SmoothL1Loss损失函数,改善了欧氏距离L1 loss和L2 loss损失函数。主要改善的地方在于其他两个损失函数对于离群点的梯度变化过于敏感或者是不够精细,SmoothL1Loss损失函数能够:
  • 当预测值与真实值误差过大时,梯度值不至于过大;
  • 当预测值与真实值误差很小时,梯度值足够小。
    想详细了解差异可看这篇文章:目标检测三种损失函数

四、目标检测—— Faster R-CNN( faster regional with cnn feature)

Fast R-CNN是R-CNN作者在原有基础上的改善,骨干网络使用VGG16,对于推理速度,准确率,训练时间成倍提高。

Faster R-CNN最好能够自己执行代码运行一下,需要重点掌握。
Faster R-CNN 算法步骤

  • 将图像输入网络得到特征图
  • 使用RPN结构生成候选框,将生成的候选框投影到特征图上得到对应的特征矩阵。
  • 将每一个特征矩阵通过ROI pooling层,缩放到7*7的大小,接着通过特征图展平通过一系列全连接层得到预测结果。
    主要特点是:RPN+Fast R-CNN
    在这里插入图片描述
    RPN Faster R-CNN计算总结
    在这里插入图片描述
  • 先网络获得特征图
  • 在特征图上使用3x3卷积获得目标得分,调整锚点框位置,确定候选框
  • 删除重叠和边缘候选框
  • 将最终获得的候选框投影到特征图上
  • 通过ROI pooling变成7x7的图像
    PS:ROI pooling:感兴趣区域池化(Region of interest pooling)(也称为RoI pooling)是使用卷积神经网络在目标检测任务中广泛使用的操作。例如,在单个图像中检测多个汽车和行人。其目的是对非均匀尺寸的输入执行最大池化以获得固定尺寸的特征图(例如7×7)。
  • 最后进行分类(class)和目标优化(loc:定位损失,能够是的预测框更加接近目标框。)
    在这里插入图片描述
    VGG16输入图像至少是600分辨率,如果不够600分辨率,会进行图像预处理
    (600/16,800/16,512)的特征输入RPN。
    RPN网络

RPN使用3x3卷积的目的:通过3x3的卷积层获得目标得分和边界回归偏移,判断特征映射图中的是不是我们候选框的目标。
根据目标得分判断是不是我们需要的目标,调整我们的锚点框(3x3卷积层反向画在原图片上的框),如果该锚点框里面是目标,那么它就升级为候选框,否则的话就不画。
每个位置(滑动窗口)在原图上都对应33=9anchor。
Alt
在候选框筛选过程中,去掉边缘anchor和IOU重叠,就会删除掉很多现有的候选框,以1000x600x3为例,最终剩下2k候选框。
在这里插入图片描述
参数回归器和分类器用的是卷积,不是全连接层,原因是:1
1的就卷积就相当于全连接层。
最后,还是需要提醒大家看原文和源码~深入理解原理。

参考文献:陈万军(西安理工大学)——《目标检测》课件

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

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

相关文章

C++四种类型转换

本章草稿代码Gitee仓库:type_cast 文章目录 0.前言1. static_cast2. reinterpret_cast3. const_cast4. dynamic_cast 0.前言 C语言的类型转换有2种: 隐式类型转换显式类型转换 这里的类型转换并不是很规范,有时候会有潜在风险,…

VMware安装Ubuntu 18.04.2

下载Ubuntu映像 下载地址:http://old-releases.ubuntu.com/releases/18.04/ 下载名称: ubuntu-18.04.2-desktop-amd64.iso 清华镜像站:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/ 阿里云镜像站:https://mirrors.ali…

2024年最新阿里云优惠券获得方法整理

随着云计算技术的日益普及,阿里云作为国内领先的云服务提供商,受到了越来越多企业和个人的青睐。为了吸引广大用户,阿里云经常推出各种优惠活动,其中就包括阿里云优惠券,可以帮助用户降低成本,享受更优惠的…

【计算机网络】1.5 分组交换网中的时延、丢包和吞吐量

A.分组交换网中的时延 当分组从一个节点沿着路径到后一节点时,该分组在沿途的各个节点经受了几种不同类型的时延。 时延的类型 处理时延 - d n o d a l d_{nodal} dnodal​ 处理时延包括以下部分—— a. 检查分组首部 b. 决定分组导向 排队时延 - d p r o c d_{…

【超万字超详细Linux常用命令大全】

前言: 💞💞大家好,书生♡,今天主要和大家分享一下LIinux的基础命令,带有各种命令的作用,语法,参数和详细案例,希望对大家有所帮助。 💞💞前路漫漫…

【MySQL性能优化】- 一文了解MVCC机制

MySQL理解MVCC 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🏆 博客首页 怒放吧德德 To记录领地 🌝分享学习心得,欢迎指正&#xff…

C# ListView 控件使用

1.基本设置 listView1.Columns.Add("序号", 60); //向 listView1控件中添加1列 同时设置列名称和宽度listView1.Columns.Add("温度", 100); //下同listView1.Columns.Add("偏移", 100);listView1.Columns.Add("分割", 50);listView1…

QT----计算器

目录 1 搭建标准界面2、 逻辑编写2.1 初始化 github链接:基于qt的计算器 更多内容可以点击这里查看个人博客:个人博客 1 搭建标准界面 按照下图搭设界面 修改样式让这计算器看起来更像一点,同时对按钮分组进行样式编辑,添加字符…

导入fetch_california_housing 加州房价数据集报错解决(HTTPError: HTTP Error 403: Forbidden)

报错 HTTPError Traceback (most recent call last) Cell In[3], line 52 from sklearn.datasets import fetch_california_housing3 from sklearn.model_selection import train_test_split ----> 5 X, Y fetch_california_housing(retu…

IDEA编写各种WordCount运行

目录 一、编写WordCount(Spark_scala)提交到spark高可用集群 1.项目结构 2.导入依赖 3.编写scala版的WordCount 4.maven打包 5.运行jar包 ​6.查询hdfs的输出结果 二、本地编写WordCount(Spark_scala)读取本地文件 1.项目结构 2.编写scala版的WordCount 3.编辑Edit …

根据服务器系统选择对应的MySQL版本

1. 根据服务器系统选择对应的MySQL版本 MySQL有多个版本,选择对应的版本,重点信息是Linux的GLIBC版本号,Linux的版本、系统位数。 1.1 查看Linux的GLIBC版本号 通常libc.so会支持多个版本,即向前兼容,查看该文件中…

Hubspot 2023年推荐使用的11个AI视频生成器

视频是任何营销活动不可或缺的一部分;然而,如果你不懂编辑或时间紧迫,它们可能会很乏味,很难创建。一只手从电脑里伸出来,拳头碰到另一只手;代表AI视频生成器。 幸运的是,你可以利用许多人工智能…

kibana新增查看更新删除es中的数据

登录kibana,打开开发工具 写入数据 PUT test20240311/person/1 {"name": "张三","mobile":"13011111111" } 查询数据 GET /test20240311/person/_search {"query": {"term": {"mobile": {…

算法笔记之蓝桥杯pat系统备考(2)

算法笔记之蓝桥杯&pat系统备考(1) 文章目录 五、数学问题5.2最大公约数和最小公倍数5.2.1最大公约数5.2.2最小公倍数 5.3分数的四则运算5.3.1分数的表示与化简5.3.2分数的四则运算5.3.3分数的输出 5.4素数(质数)5.4.1[素数的…

java数据结构与算法刷题-----LeetCode47. 全排列 II

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 暴力回溯2. 分区法回溯 此题为46题的衍生题,在46题…

QTextToSpeech的使用——Qt

前言 之前随便看了几眼QTextToSpeech的帮助就封装使用了,达到了效果就没再管了,最近需要在上面加功能(变换语速),就写了个小Demo后,发现不对劲了。 出现的问题 场景 写了个队列添加到语音播放子线程中&a…

一条 SQL 更新语句如何执行的

Server 层 存储引擎层 总流程 查询语句 连接器 查询缓存 分析器 优化器 执行器 更新语句 redo log(节省的是随机写磁盘的 IO 消耗(转成顺序写&#x…

Qt+FFmpeg+opengl从零制作视频播放器-3.解封装

解封装:如下图所示,就是将FLV、MKV、MP4等文件解封装为视频H.264或H.265压缩数据,音频MP3或AAC的压缩数据,下图为常用的基本操作。 ffmpeg使用解封装的基本流程如下: 在使用FFmpeg API之前,需要先注册API&a…

精简版 Obsidian 图床配置 PicGo+ gitee

精简版 Obsidian 图床配置 PicGo gitee 图床的作用 图床(Image Hosting Service)是一种在线服务,用于存储和托管用户上传的图片文件。用户可以将图片上传到图床服务器,并获得一个可访问的图片链接,然后可以在网页、博…

为什么要用scrapy爬虫库?而不是纯python进行爬虫?

为什么要用scrapy爬虫库?而不是纯python进行爬虫? Scrapy的优点Scrapy节省的工作使用纯Python编写爬虫的不足 Scrapy是一个使用Python编写的开源和协作的web爬虫框架,它被设计用于爬取网页数据并从中提取结构化数据。Scrapy的强大之处在于其广…