目标检测-Yolo框架

这篇具有很好参考价值的文章主要介绍了目标检测-Yolo框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基本概念

目标检测

目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。

计算机视觉中关于图像识别有四大类任务:

(1)分类-Classification:解决“是什么?”的问题,即给定一张图片或一段视频判断里面包含什么类别的目标。

(2)定位-Location:解决“在哪里?”的问题,即定位出这个目标的的位置。

(3)检测-Detection:解决“在哪里?是什么?”的问题,即定位出这个目标的位置并且知道目标物是什么。

(4)分割-Segmentation:分为实例的分割(Instance-level)和场景分割(Scene-level),解决“每一个像素属于哪个目标物或场景”的问题。
目标检测-Yolo框架

目标检测算法分类

基于深度学习的目标检测算法主要分为两类:Two stage和One stage。

1)Tow Stage
先进行区域生成,该区域称之为region proposal(简称RP,一个有可能包含待检物体的预选框),再通过卷积神经网络进行样本分类。

任务流程:特征提取 --> 生成RP --> 分类/定位回归。

常见tow stage目标检测算法有:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN和R-FCN等。

2)One Stage
不用RP,直接在网络中提取特征来预测物体分类和位置。

任务流程:特征提取–> 分类/定位回归。

常见的one stage目标检测算法有:OverFeat、YOLOv1、YOLOv2、YOLOv3、SSD和RetinaNet等。

目标检测原理

数据表示

经过标记后的样本数据如图所示
目标检测-Yolo框架
预测输出可以表示为:
目标检测-Yolo框架
​其中, p c p_{c} pc为预测结果的置信概率, b x b_{x} bx b y b_{y} by b w b_{w} bw b h b_{h} bh为边框坐标, C 1 C_{1} C1 C 2 C_{2} C2 C 3 C_{3} C3为属于某个类别的概率,通过预测结果,实际结果,构建损失函数,损失函数包括了分类、回归俩部分组成

效果评估

使用IoU(Intersection over Union,交并比)来判断模型的好坏。所谓交并比,是指预测边框、实际边框交集和并集的比率,一般约定0.5为一个可以接收的值。
目标检测-Yolo框架

非极大值抑制(NMS)

NMS也即非极大值抑制。在最近几年常见的物体检测算法(包括rcnn、sppnet、fast-rcnn、faster-rcnn等)中,最终都会从一张图片中找出很多个可能是物体的矩形框,然后为每个矩形框为做类别分类概率:

所谓非极大值抑制:依靠分类器得到多个候选框,以及关于候选框中属于类别的概率值,根据分类器得到的类别分类概率做排序,具体算法流程如下:

(1)将所有框的得分排序,选中最高分及其对应的框
(2)遍历其余的框,如果和当前最高分框的重叠面积(IOU)大于一定阈值,我们就将框删除。(为什么要删除,是因为超过设定阈值,认为两个框的里面的物体属于同一个类别,比如都属于狗这个类别。我们只需要留下一个类别的可能性框图即可。)
(3)从未处理的框中继续选一个得分最高的,重复上述过程。

举例说明:(1)(2),这里设定交并比>=0.6就删除对比框图,留下最高分的框图;对于低于阈值的框图留下,然后在剩下的框图中排序,选出置信度值高的框图,然后重复交并比比较这个过程。
(1)选出Dog这个框图
目标检测-Yolo框架
目标检测-Yolo框架
目标检测-Yolo框架
(1)选出Bike这个框图
目标检测-Yolo框架
目标检测-Yolo框架

Yolov

Yolov1

基本思想

YOLO(You Only Look Once )是继RCNN,fast-RCNN和faster-RCNN之后,Ross Girshick针对DL目标检测速度问题提出的另一种框架,其核心思想是生成RoI+目标检测两阶段(two-stage)算法用一套网络的一阶段(one-stage)算法替代,直接在输出层回归bounding box的位置和所属类别。

之前的物体检测方法首先需要产生大量可能包含待检测物体的先验框, 然后用分类器判断每个先验框对应的边界框里是否包含待检测物体,以及物体所属类别的概率或者置信度,同时需要后处理修正边界框,最后基于一些准则过滤掉置信度不高和重叠度较高的边界框,进而得到检测结果。这种基于先产生候选区再检测的方法虽然有相对较高的检测准确率,但运行速度较慢。

YOLO创造性的将物体检测任务直接当作回归问题(regression problem)来处理,将候选区和检测两个阶段合二为一。只需一眼就能知道每张图像中有哪些物体以及物体的位置。下图展示了各物体检测系统的流程图。
目标检测-Yolo框架
实际上,YOLO并没有真正去掉候选区,而是采用了预定义候选区的方法,也就是将图片划分为77个网格,每个网格允许预测出2个边框,总共492个bounding box,可以理解为98个候选区域,它们很粗略地覆盖了图片的整个区域。YOLO以降低mAP为代价,大幅提升了时间效率。
目标检测-Yolo框架
每个网格单元预测这些框的2个边界框和置信度分数。这些置信度分数反映了该模型对框是否包含目标的可靠程度,以及它预测框的准确程度。置信度定义为:
目标检测-Yolo框架如果该单元格中不存在目标,则置信度分数应为零。否则,我们希望置信度分数等于预测框与真实值之间联合部分的交集(IOU)
每个边界框包含5个预测:x,y,w,h和置信度。( x , y ) (x,y)(x,y)坐标表示边界框相对于网格单元边界框的中心。宽度和高度是相对于整张图像预测的。最后,置信度预测表示预测框与实际边界框之间的IOU。
每个网格单元还预测C CC个条件类别概率Pr ⁡ ( Class i ∣ Object ) 。这些概率以包含目标的网格单元为条件。每个网格单元我们只预测的一组类别概率,而不管边界框的的数量B BB是多少。

网络结构

YOLOv1网络有24个卷积层,后面是2个全连接层。我们只使用1 × 1 1 \times 11×1降维层,后面是3 × 3 3 \times 33×3卷积层。如下图所示:
目标检测-Yolo框架
为了快速实现快速目标检测,YOLOV1还训练了快速版本。快速YOLO使用具有较少卷积层(9层而不是24层)的神经网络,在这些层中使用较少的滤波器。除了网络规模之外,YOLO和快速YOLO的所有训练和测试参数都是相同的。网络的最终输出是7730(1470)的预测张量。
目标检测-Yolo框架

  • 损失函数由坐标预测、是否包含目标物体置信度、类别预测构成
  • 其中 1 i o b j 1^{obj}_{i} 1iobj表示目标是否出现在网格单元i中,表示 1 i j o b j 1^{obj}_{ij} 1ijobj网格单元i中第j个边界框预测器“负责”该预测
  • 如果目标存在于该网格单元中(前面讨论的条件类别概率),则损失函数仅惩罚分类错误;
  • 如果预测器“负责”实际边界框(即该网格单元中具有最高IOU的预测器),则它也仅惩罚边界框坐标错误。
    (5)学习率。第一个迭代周期,慢慢地将学习率从 1 0 − 3 10^{-3} 103提高到 1 0 − 2 10^{-2} 102,然后继续以 1 0 − 2 10^{-2} 102的学习率训练75个迭代周期,用 1 0 − 3 10^{-3} 103的学习率训练30个迭代周期,最后用 1 0 − 4 10^{-4} 104的学习率训练30个迭代周期
    (6)避免过拟合策略。使用dropout和数据增强来避免过拟合。

优点与缺点

(1)优点

  • YOLO检测物体速度非常快,其增强版GPU中能跑45fps(frame per second),简化版155fps
  • YOLO在训练和测试时都能看到一整张图的信息(而不像其它算法看到局部图片信息),因此YOLO在检测物体是能很好利用上下文信息,从而不容易在背景上预测出错误的物体信息
  • YOLO可以学到物体泛化特征

(2)缺点

  • 精度低于其它state-of-the-art的物体检测系统
  • 容易产生定位错误
  • 对小物体检测效果不好,尤其是密集的小物体,因为一个栅格只能检测2个物体
  • 由于损失函数的问题,定位误差是影响检测效果的主要原因,尤其是大小物体处理上还有待加强
  • 每个cell只能预测一个类别,如果重叠无法解决
  • 小物体检测一般,长宽比可选的一般

YOLOV2

与YOLOV1区别

目标检测-Yolo框架

YOLOV2-Batch Normalization

目标检测-Yolo框架

YOLOV2更大的分辨率

目标检测-Yolo框架

YOLOV2网络结构

目标检测-Yolo框架

  • 模型不容易过拟合,因为全连接层容易过拟合
  • 训练速度提高,因为全连接层参数特别多,训练速度慢
  • 每次降采样输出的长和宽变为原来的1/2
  • 使用较小的卷积核做卷积时,一方面使得参数比较少,另一方面使得感受野较大,训练出的模型较好

YOLOV2聚类提取先验框

目标检测-Yolo框架
目标检测-Yolo框架

YOLOV2-Directed Location Prediction

目标检测-Yolo框架
目标检测-Yolo框架

  • V1版本是直接加个偏移量,很容易移出框外
  • V2版本经过seigema函数使其在框框中偏移

感受野

  • 概述来说就是特征图上的点能看到原始图像多大区域
  • 如图11的感受野为55

目标检测-Yolo框架

  • 如果堆叠3个33的卷积层,并且保持滑动窗口的步长为1,其感受野就是77的了,这跟使用一个7*7的卷积核是一样的,那为什么非要堆叠3个小卷积呢
  • 最后一层时感受野太大了,小目标可能丢失,需融合之前的特征

目标检测-Yolo框架
目标检测-Yolo框架

YOLOV3

  • v3版本最大的改进就是网络结构,使其更适合小目标检测
  • 特征做的更细致,融入多持续特征图的信息来预测不同规格的物体
  • 先验框更丰富了,3scale,每种3个规格,一共9个
  • softmax改进,预测多标签任务

多scale

  • 为了检测不同大小的物体,设置了3个scale
    目标检测-Yolo框架

scale变换经典方法

目标检测-Yolo框架

残差连接-为了更好的特征

目标检测-Yolo框架

上面是来自于resnet【1】的skip block的示意图。我们可以使用一个非线性变化函数来描述一个网络的输入输出,即输入为X,输出为F(x),F通常包括了卷积,激活等操作。
当我们强行将一个输入添加到函数的输出的时候,虽然我们仍然可以用G(x)来描述输入输出的关系,但是这个G(x)却可以明确的拆分为F(x)和X的线性叠加。
这就是skip connect的思想,将输出表述为输入和输入的一个非线性变换的线性叠加,没用新的公式,没有新的理论,只是换了一种新的表达。
目标检测-Yolo框架

核心网络架构

  • 没有池化和全连接,全部卷积
  • 下采样通过stride为2实现
  • 3种scale,更多先验框
  • 基本上当前经典算法全融合了
    目标检测-Yolo框架
    目标检测-Yolo框架

迁移学习

迁移学习(Transfer Learning)的基本思想是利用已解决问题的策略去解决待解决的问题(hhh有点绕~),也就是把现有的经验迁移过去。目前是作为机器学习下的一个分支,大多使用神经网络的方法,以训练模型为主了,通常就是那一套模型的参数去做另一套的初始值减少模型训练的复杂度。
但迁移学习提出的初衷不是为了模型训练,而是节省人工标注样本的时间,让模型可以通过已有的标记数据(source domain data)向未标记数据(target domain data)迁移,这样可以减低机器学习对 数据集样本量的需求

目标检测-Yolo框架文章来源地址https://www.toymoban.com/news/detail-464528.html

到了这里,关于目标检测-Yolo框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入了解目标检测技术--从基本概念到算法入门

    前言: Hello大家好,我是Dream。 众所周知,目标检测是计算机视觉领域中的重要任务之一,其目的是 识别图像或视频中包含的物体实例并将其定位 。实现目标检测可以帮助人们在 自动驾驶、机器人导航、安防监控 等领域中更好地理解和应用图像信息。接下来Dream将带大家一

    2024年02月03日
    浏览(36)
  • 目标检测YOLO实战应用案例100讲-【目标检测】目标追踪

    目录 前言 算法原理  1匈牙利算法(Hungarian Algorithm) 2卡尔曼滤波(Kalman Filter) 预测

    2024年02月21日
    浏览(55)
  • YOLO手部目标检测

    手部目标检测原文地址如下: 手部关键点检测2:YOLOv5实现手部检测(含训练代码和数据集)_yolov5 关键点检测-CSDN博客 手部检测数据集地址如下:  手部关键点检测1:手部关键点(手部姿势估计)数据集(含下载链接)_手关键点数据集-CSDN博客  

    2024年02月03日
    浏览(35)
  • YOLO目标检测——时间检测数据集下载分享

    时间数据集是表示一天中不同时间的图像集合,日出和日落被视为同一类别。数据集包含日出/日落、白天场景和夜间场景的图像,并已重新缩放为 224 x 224 x 3 像素,描绘了不同的地点和不同的天气条件,如晴朗的天空,阴天等。 数据集点击下载 :YOLO时间检测数据集+2700图片

    2024年02月10日
    浏览(46)
  • YOLO目标检测——天气检测数据集下载分享

    天气检测数据集可以用于训练天气预报模型,帮助预测未来的天气情况,包含了晴天、雨天、雾天、雪天 数据集点击下载 :YOLO天气检测数据集+2300图片+4类别.rar

    2024年02月11日
    浏览(35)
  • 目标检测网络YOLO进化之旅

    yolo系列网络在目标检测领域取得了巨大的成功, 尤其是在工程实践中, 以其出色的性能优势获得了广泛的应用落地。 YOLO的前3个版本是由同一个作者团队出品, 算是官方版本。 之后的版本都是各个研究团队自己改进的版本, 之间并无明显的继承关系。 其中v5和v8 版本由

    2024年04月22日
    浏览(26)
  • YOLO v5 实现目标检测

    本文用于学习记录 YOLO v5 实现目标检测 安装完成以后,按下开始键( win 键)出现 anaconda3 这个文件夹,说明 anaconda 已经安装好了 点击左下图中标红的图标,就可打开 anaconda 的终端如右下图: 输入 conda create -n pytorch1 python=3.9,在 base 环境中这条命令,就会创建一个新的虚拟

    2024年01月16日
    浏览(44)
  • 开集目标检测-标签提示目标检测大模型(吊打YOLO系列-自动化检测标注)

    大多数现有的对象检测模型都经过训练来识别一组有限的预先确定的类别。将新类添加到可识别对象列表中需要收集和标记新数据,并从头开始重新训练模型,这是一个耗时且昂贵的过程。该大模型的目标是开发一个强大的系统来检测由人类语言输入指定的任意对象,而无需

    2024年01月23日
    浏览(59)
  • YOLO目标检测——花蕊分类检测数据集下载分享

    花蕊分类检测数据集共同7300图片,103类别,分别放在103个文件夹中,可应用于:植物学研究、花卉市场和园艺业、智能农业、视觉搜索引擎、等等 数据集点击下载 :YOLO花蕊分类检测数据集+7300图片+102种类别.rar

    2024年02月11日
    浏览(33)
  • 目标检测YOLO实战应用案例100讲-森林野火预警的小目标检测

    目录 前言 传统目标检测算法  基于深度学习的目标检测算法  两阶段目标检测算法 

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包