【深度学习与计算机视觉】13、深度学习中的目标检测视频笔记

2023-10-27

一、目标检测是什么

在这里插入图片描述
最小外接矩形,也就是最后要回归的目标,也要打上一个标签,且希望和实际情况越接近越好。
在这里插入图片描述

实例分割要显示每一个像素属于谁,更加复杂。

在这里插入图片描述
在这里插入图片描述
YOLO之前的模型都是两个步骤:

  • 提取一些可能有目标的区域
  • 识别区域中的是什么类别

二、RCNN

在这里插入图片描述
输入一张图像 → \to 利用特定方法生成大约2k个框,这些框包括所有可能成为候选框的区域(形状都不同,只是保证其是个矩形) → \to 将框进行统一尺度 → \to 进行一些数据增强 → \to CNN 特征提取(从某一层出来的特征保留) → \to 送入SVM 进行分类,送入回归进行b-box的回归。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先对分类模型进行预训练,之后将SS生成的所有的一块一块的区域对模型微调,21、201(包含1个背景)是用到不同数据集,里边类别的多少就不同。

预训练后需要修改的:

  • 目标函数 loss
  • softmax的1000个输出,改成N+1个输出(检测的类别数)
  • 正样本(N类):所有类别中,框和GT的IoU>=0.5的看成正样本
  • 负样本(1类)):背景/没有框完整的,IoU<0.5
    在这里插入图片描述
    在这里插入图片描述
    底层的特征是越通用的,越往上是越专用的,如果数据量小的话就只训练下面绿色的就可以,如果数据集较大的话,就训练下面两个模块即可。
    在这里插入图片描述
    在M’的基础上,第七层是全连接层,将这个4096维的特征拿出来送入SVM中,使用的SVM是二分类器,正样本是某一类,负样本是除该类以外的所有类(包括背景)。

SVM训练完之后,可能会出现负样本概率也大于0.5,将这些收集起来,重新训练一下。
在这里插入图片描述
在fine-tuning之后的模型的第五层上训练回归模型,回归的目标是把SS滑出来的框和真实框(G)做一个回归,每一类单独回归,也就是SS 回归得到的猫的框(P)和猫的真实框做回归,每一类训练一个回归模型。

P 的要求:SS 选出来的框和 GT 框的 IoU >0.6,

输入的是第五层输出的特征,而不是坐标,输出是SS和GT的差值。

目标函数是最大化,定义了一个回归的模型,就是P和G平方差最小。
在这里插入图片描述
在这里插入图片描述
评价有两重精度:

  • 某个类的平均精度:AP,PR 曲线下的面积,即 P 对 R 的积分。
  • 所有类的平均精度求和/类别数,即所有类的平均精度的平均值。
    在这里插入图片描述
    AP: 单个类别的效果
    当把上面的第一条线当做阈值,上面的都当做飞机,下面的都不当做飞机,则此时准确率很高,召回率不高,当把第二条线当做阈值时,准确率降低,召回率变高。这就是 PR 曲线。PR 曲线下的面积就是综合考虑 P 和 R 得到的结果。

mAP: 所有类别的效果的均值

在这里插入图片描述

三、SPPnet

在这里插入图片描述
在这里插入图片描述
RCNN:先对框中内容进行裁剪或拉伸,再进行卷积
SPPnet:先对整幅图像进行卷积,再进行SPP 操作

在这里插入图片描述
对输入进行4x4/2x2/1x1的最大池化,即所有的小区域都可以被划分成相同大小的像素级联,方便全连接层。

为什么可以先卷积,后 SS:因为卷积后特征的相对位置不变,即可以先卷积,然后在找到对应的框,提取特征图特征。

在这里插入图片描述
fine-tuning过程也有差别:预训练 → \to SPP 处理 → \to 使用 SPP 特征来微调全连接层,不能微调卷积层,其他的过程和 RCNN 一样。
在这里插入图片描述
SPP :特征提取时间很大的变短了,但仍然是分类和回归分别训练,但不能微调卷积层参数(感受野太大,效率太低等)。
在这里插入图片描述

四、Fast R-CNN

在这里插入图片描述
R-CNN 和 SPP 都是训练两个头,而 Fast R-CNN 实现了多任务损失,取消了 SPP 模块,使得所有层的参数都可以fine-tuning。

在这里插入图片描述

首先:全图做卷积,提取region proposal
其次:把第五层的卷积输出,和 region proposal 送入RoI pooling层
再次:把分类和回归头使用一个损失函数进行训练
在这里插入图片描述
RoI pooling:RoI pooling 是取了一个较细尺度的划分,来进行最大池化,再传入全连接层。
在这里插入图片描述
反向传播的不同:
在这里插入图片描述
红色的框是区域建议的框,绿色的框是人工标注的 GT ,回归问题就是将红色的框映射为绿色的框。
在这里插入图片描述
exp永远为正,用于保证训练完之后的值不会变成负的。
在这里插入图片描述
多任务损失:分类+回归损失
分类损失:u是类别,p是概率分布,分类正确时,pu=1,-logpu接近于0,pu分类错误时,pu=0.2,-logpu会较大,即分到u上的概率要尽可能的大。
回归损失:当物体类别为背景时,就不存在回归问题了,故要先应用指示函数
smooth_L1:当x非常大的情况,相当于是离群点,会使得这批数据回归出现问题,故让离群点的影响小一点,即x较大时,让输出为 |x|-0.5,而不用平方。
在这里插入图片描述
batch:图片数量为2,每个图片中的 RoI 为64,此时 batch size 为128。
物体和背景的平衡:物体占1/4,背景占3/4。希望两者数据量平均点,样本量偏的太厉害会有问题,因为正向样本较少。
在这里插入图片描述
全连接层数据量大,故其采用了 SVD,将其分解为两个矩阵,也就是将全连接模型进行压缩,然后在重现出来,总的权重数量减少,加速运算。
在这里插入图片描述
Fast RCNN的速度和性能都很好:
在这里插入图片描述
在这里插入图片描述
Fast R-CNN 的局限:

在这里插入图片描述

五、Faster R-CNN

在这里插入图片描述
RPN:量少质优

在这里插入图片描述
输入的图像经过卷积获得第五层卷积特征 → \to 3x3的卷积核 → \to 得到256维的卷积层 → \to 对256维的特征图分别进行两个不同的 1x1的卷积过程 → \to 一路进行分类,得到 2k 个得分(是物体/不是物体,k一般为9,也就是18,1x1x256x18),另一路进行回归,得到4k个参数(r/c/w/h) → \to 将两者结合起来

候选框来源:

尺度:表示原始图像上的物体
纵横比:1:1,1:2,2:1

在候选框基础上,再做分类和回归。
在这里插入图片描述

损失函数:
在这里插入图片描述
训练:

  • 先训练 RPN ,输出候选区域
  • 将候选区域给到 Fast R-CNN 里边去,初始化仍然是 Imagenet 的参数
  • 将第二步训练好的权重,作为第三层卷积层的初始化,固定住卷积层的参数,微调RPN自己的参数,也就是 RPN 此时给出的建议可能会比之前的那个更好点。
  • 固定卷积层,微调剩余层。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    R-CNN 系列总结:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    RoI-wise:基于RoI层所衍生的一些东西

CNN 的全卷积化趋势,因为全连接层参数太多。

CNN 一开始是用于分类的,所以对分类的性能是挺好的,即便是目标物体位置改变,卷积之后输入全连接层,也对分类结果影响不大。

但对于定位网络,全连接层是将整个图像的特征进行列向量话,肯定会对位置产生一定的影响,所以不希望回归网络最后是全连接网络。

在这里插入图片描述

六、R-FCN

在这里插入图片描述
R-CNN:一旦有个框,就要卷积一遍
SPPnet:先卷积,再找框,框又要单独的一个个过子网络,再做全连接
R-FCN:全卷积网络

在这里插入图片描述
变换敏感性:

  • 引入位置敏感分值图,score map(核心)
  • 分值图上做的一个位置敏感池化处理(纵向的若干层,变成横向位置上的差异)

在这里插入图片描述
主干网络:resnet-101

卷积之后,一个分支输入RPN,另一个分支就是位置敏感分值图,黄色是找A类的特征,绿色的是找B类的特征,等等等,无论物体在哪个问题,只要哪个层是用来判断该物体的层,就能够检测出来那个物体,纵向的综合起来,然后投票,就能得到其是哪一类。

在这里插入图片描述
每一个片都代表C个物体的类+1个背景的类,每个类别都有k^2个score map,之后叠加起来,最后才用上 RoI。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、YOLO v1

YOLO v1 最多能识别九千个类别

在这里插入图片描述
之前的工作似乎都是做两件事,一件是分类,一件是定位,YOLO 是把所有的问题都当做回归问题来解决。

每一个图化成7x7的块,判断哪个块属于哪一类。

resize:让网络能够找到较小的物体

网络结构:
在这里插入图片描述
输入 → \to GoogLeNet(简化成20层) → \to 卷积和全连接层(fully connection) → \to reshape → \to 输出最终结果,三维数据块7x7x30(前两维是划分的块,第三维是)

在这里插入图片描述
输入的维度:上采样的图片
输出的维度:7x7x30
B:2(两个b-box)
5:位置(四个值)和置信度
C:20个目标类别
在这里插入图片描述

在这里插入图片描述
两个b-box,一个宽的,一个窄的。

公式:confidence=Pr(object)*IoU

Pr:是一个目标的概率
IoU:GT的框和预测的b-box的IoU

在这里插入图片描述
30个值:

前10个:两个框,每个框预测5个值(定位和置信度),全都是归一化的
后20个:针对每个类别的概率(Pr(class|object)),已知是目标的情况下,是哪一个类别的概率。

测试阶段:

在这里插入图片描述
在这里插入图片描述
蓝色框:首先判断定位定的准不准,平方在括号外边,都是坐标的协调系数,没有改两者的协调系数。

红色框:1——指示函数,是目标是1,不是目标是0,之后置信度相减
在这里插入图片描述
黄色的框置信度肯定很高,绿色的框和黄色框重合度较大,所以将重合度大于一定阈值的剔除。

判断类别:

98个box:7x7x2
C:b-box里边是否还有目标的置信度,做一个阈值处理,之后做NMS
NMS:不考虑具体是什么类别,先考虑重合且分数没有他高的框去掉。

在这里插入图片描述
在这里插入图片描述
优点:
一共只有98个候选框,故检测物体的速度快;
不是目标而判断成目标的情况较少;
能学到更加抽象的特征。

缺点:
精度低;
定位较差;
小物体检测不好,因为一个栅格只预测2个物体,再经过NMS,可能就只能预测一个物体。

八、YOLO v2

在 YOLO v1上做了7个改变:

  • BN
  • 高精度分类器,v1中使用的预训练好的模型是基于256x256训练得来的,v2中使用高精度图像来预训练,能够更好的发现小目标
  • 添加了 anchor ,v1用了两个,多了anchor能够使得召回率明显提升
  • 使用 k-means 方法来训练了 b-box,找到更合适的b-box的宽高比,有5类是比较明显的,故选择了5个b-box,这些b-box各自是不同的尺寸,瘦高型的较多。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将 Imagenet 和 coco 结合起来了,一共9000个分类。

九、YOLO v3

在这里插入图片描述

  • 损失函数改变,sofrmax只能输出最大的,Logistic loss 可以多分类,有得分。
  • V3使用了3个anchor,分层级的变成了9个
    在这里插入图片描述
    scale1预测大尺度目标,scale2预测中间尺度目标,scale3预测小尺度的目标。
    在这里插入图片描述
    在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【深度学习与计算机视觉】13、深度学习中的目标检测视频笔记 的相关文章

  • idea使用sonarlint插件

    JDH 邹老板 一 插件安装 由于是内网环境 根据自己安装的idea版本 去官网下载离线插件包进行离线安装 我的idea是IntelliJ IDEA 2020 2 3 安装包如下 二 sonarlint服务器配置 插件安装完成之后 在设置里
  • YaRN: Efficient Context Window Extension of Large Language Models

    本文是LLM系列文章 针对 YaRN Efficient Context Window Extension of Large Language Models 的翻译 YaRN 大型语言模型的有效上下文窗口扩展 摘要 1 引言 2 背景和相关
  • zookeeper版本选择与配置参数调优

    一 zookeeper 发布策略 Apache ZooKeeper 社区一次支持两个发布分支 stable和current ZooKeeper的稳定版本是 3 7 x 当前版本是 3 8 x 一旦发布新的次要版本 稳定版本预计将很快退役 大
  • 使用开散列实现对字典的查找插入删除(C++实现)

    一 需求分析 问题描述 实现对字典的查找 基本要求 在分块查找 AVL树 哈希查找 B树或者B 树查找中选择一种你认为最高效的动态查找方法对字典 单词 词性加释义 在内存中的动态查找结构或者在外存的字典文件的构造 查找 插入 删除 逻辑操作
  • JVM常见命令之JPS

    1 JPS Java Virtual Machine Process Status JDK1 5提供的显示当前所有进程pid的命令 2 jps q 只输出pid 3 jps l 输出应用程序main class 的完整package名或者应
  • Spring底层组件xxxAware家族

    搞懂xxxAware家族对理解Spring源码和提高代码能力也有帮助 Spring中常见xxxAware接口列举如下 ApplicationContextAware BeanNameAware EmbeddedValueResolverAw

随机推荐

  • 实时数仓实践以及架构

    前言 数据智能 Data Intelligence 有一个必须且基础的环节 就是数据仓库的建设 同时 数据仓库也是公司数据发展到一定规模后必然会提供的一种基础服务 从智能商业的角度来讲 数据的结果代表了用户的反馈 获取结果的及时性就显得尤为
  • IDEA在Debug模式下 对象转JSON

    如果文章对你有帮助欢迎 关注 点赞 收藏 一键三连 一起努力 IDEA在debug模式下面是不能直接复制被调试的Object为Json字符串的 但是在工作中经常会用到json入参 这里用两种方式实现这个操作 方便进行其他操作和工作交流 一
  • eds能谱图分析实例_EDS那些事儿

    什么是EDS 我们通常所说的EDS全称为能量色散X射线谱仪 简称能谱仪 可同时记录所有X射线谱 用以测量X射线强度与X射线能量的函数关系 是一种不损坏试样的快速微区成分分析方法 通过测量材料被激发的特征X射线能量进行元素的定性分析 测量特征
  • fake-useragent,python爬虫伪装请求头

    在编写爬虫进行网页数据的时候 大多数情况下 需要在请求是增加请求头 下面介绍一个python下非常好用的伪装请求头的库 fake useragent 具体使用说明如下 安装fake useragent库 pip install fake u
  • 复杂美区块链溯源系统架构

    从功能架构上 复杂美将区块链存证溯源系统按照功能划分为区块链核心层 接口层 运维管理层 溯源平台层和用户端层 1 区块链基础层 面向整个存证溯源平台提供基础信息服务 主要是为上层架构组件提供基础设施 保证上层服务可靠运行 源数据从IOT设备
  • 数据结构-链式存储

    数据结构 一 数据结构的定义 一组用来保存一种或者多种特定关系的数据集合 二 数据与数据之间的关系 lt 1 gt 数据的逻辑结构 数据元素与元素之间的关系 集合 关系平等 线性结构 元素之间一对一的关系 表 队列 栈 树形结构 元素之间一
  • 模式分类识别

    模式分类识别 DBN深度置信网络数据多特征分类预测 Matlab完整程序 目录 模式分类识别 DBN深度置信网络数据多特征分类预测 Matlab完整程序 分类结果 基本介绍 程序设计 参考资料 分类结果
  • Host文件

    linux中 etc目录 配置文件 etc目录包含了系统特有的配置文件 所谓配置文件 就是用于控制程序运行的本地文件 它绝大多情况下都说 只读 的私有文件 而且是可编辑的 这里的可编辑是指能直接看懂的 所以那些二进制可执行文件是不能作为配置
  • springboot多数据源---2事务

    一 多数据源事务控制 在多数据源下 由于涉及到数据库的多个读写 一旦发生异常就可能会导致数据不一致的情况 在这种情况希望使用事务 进行回退 但是Spring的声明式事务在一次请求线程中只能使用一个数据源进行控制 但是对于多源数据库 1 单一
  • 在webstorm 中直接运行ts文件

    原文链接 在webstorm 中直接运行ts文件 上一篇 ubuntu 使用 Apache Bench 进行并发测试 下一篇 使用js解数独难题 安装插件后重启IDE Run Configuration for TypeScript
  • Notice: Use of undefined constant submit - assumed 'submit'

    Notice Use of undefined constant submit assumed submit in D wamp www ECMS insert monitors php on line 66 Notice Undefine
  • vue期望值与实际值比较:折线图

    效果图 点击上方对应按钮 下方相应的数据图可隐藏 显示 代码 一 下载echarts包 终端运行 npm install echarts 二 components HelloWorld vue
  • Python3,一行代码解析地址信息,原来物流单的地址是这样拆分。

    1行代码解析地址信息 1 引言 2 代码示例 2 1 简介 2 2 安装 2 3 实战 2 3 1 提取省市区信息 2 3 2 提取街镇乡 村或居委会信息 2 3 3 自动补全省市信息 3 总结 1 引言 小屌丝 鱼哥 你说咱们发快递时填写
  • 页式存储,段式存储,段页式存储,引入快表等访存次数

    王道的说法 页式存储 2次 第一次 访问内存中的页表 利用逻辑地址中的页号查找到页帧号 与逻辑地址中的页内偏移拼接形成物理地址 第二次 得到物理地址后 再一次访问内存 存取指令或者数据 段式存储 2次 同上 段页式存储 3次 第一次 访问内
  • 【译】Rust 实现一个 DNS 客户端,我从中学到什么

    What I learned from making a DNS client in Rust 译文 Rust 实现一个 DNS 客户端 我从中学到什么 原文链接 https blog adamchalmers com making a d
  • 大津算法的matlab实现

    大津算法详解 一 算法功能 图像分割就是把图像分成若干个特定的 具有独特性质的区域并提出感兴趣目标的技术和过程 它是由图像处理到图像分析的关键步骤 大津算法也称最大类间差法 由大津于1979年提出 被认为是图像分割中阈值选取的最佳算法 计算
  • 用开卡工具重生SSD,SM2246XT一步一步开卡成功教程

    故障现象 不能进系统 用U盘从PE进入 过程很慢 卡住 进不了PE 直接拆下硬盘 用硬盘盒连接电脑 能识别 发现C盘还已经标红 D盘正常 还不错 文件都在 直接拷贝出来 接下来就是对他直接格式化 这里出现了问题 无论是用PE的还是windo
  • 前端知识题整理第二期

    1 js中的闭包指什么 有权访问另一个函数作用域中的变量的函数 创建闭包的常见方式 就是一个函数内部创建另一个函数 2 v if和v show的区别是什么 v if是动态的向DOM树内添加或删除DOM元素 v show本质是标签displa
  • STM32 硬件IIC 控制OLED I2C卡死问题

    更新通知 2023 09 06 STM32L151 固件库 使用I2C 太难了 又宕机了 建议不要在固件库版本上尝试硬件IIC 了 一般人真用不了 直接使用软件模拟的 或者不要使用固件库了 用HAL 库吧 据说HAL 库没这么多问题 不死心
  • 【深度学习与计算机视觉】13、深度学习中的目标检测视频笔记

    文章目录 一 目标检测是什么 二 RCNN 三 SPPnet 四 Fast R CNN 五 Faster R CNN 六 R FCN 七 YOLO v1 八 YOLO v2 九 YOLO v3 一 目标检测是什么 最小外接矩形 也就是最后要