[YOLO专题-2]:总体-YOLO目标检测的网络总体架构与核心概念
Posted 文火冰糖的硅基工坊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[YOLO专题-2]:总体-YOLO目标检测的网络总体架构与核心概念相关的知识,希望对你有一定的参考价值。
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122118894
目录
1.3 一步(one stage)与两步(Two stage)
1.4 分类(Classfic)与回归(Regression)
2.5 先验框(prior bounding box)与锚点(anchor)
2.7 交并比IoU(Intersection-over-Union)
3.3 预测物体与真实物体之间位置误差Loss或距离Distance?
4.2 回归问题的结构化输出(Structure)与非结构化输出
前言说明:
本文汇集了所有YOLO版本(V1~V5)中最核心的概念与思想,值得深入学习。
第1章 目标检测
1.1 什么是目标/物体(Object)
对于一张图片,目标是指除了背景之外的所有物体对象。
至于哪些是背景,哪些是目标,是通过训练样本的标注,人为指定的,即图像中存在的物体对象,但是能检测哪些物体会受到人为设定限制。
1.2 目标检测(Object detect)
目标检测,也叫目标提取,是一种基于目标几何和统计特征的图像分割。
它将目标的分割和识别合二为一,其准确性和实时性是整个系统的一项重要能力。
尤其是在复杂场景中,需要对多个目标进行实时处理时,目标自动提取和识别就显得特别重要。
目标检测中能检测出来的物体取决于当前任务(数据集)需要检测的物体有哪些。假设我们的目标检测模型定位是检测动物(牛、羊、猪、狗、猫五种结果),那么模型对任何一张图片输出结果不会输出鸭子、书籍等其它类型结果。
目标检测主要分为4个主要的子功能:
(1)目标分割:把目标从图片的背景中分离出来。
(2)目标定位:对目标的在整个图片中的位置进行坐标定位。
(3)目标分类:实际上是目标识别,识别目标属于哪一种类型的对象。
(4)目标统计:对图片中的目标的总数进行统计。
1.3 一步(one stage)与两步(Two stage)
为了完成目标的检测,有两大主流的方法:
一种称为Two stage,这是先出现的方法。
另一种方法称为one stage,这是后出现的方法。
(1)Two stage =》 Faster R-CNN, Mask R-CNN系列为代表。
Two stage分为两步实现 目标检测:
- 先通过各种大小的预选框选中图片中的区域 =》 分割、定位
- 然后通过图像分类的方法判断预选框选中图片中的区域是否属于某种分类的物体 =》 分类问题
(2)One stage =》YOLO系列为代表。
One stage分为一步实现目标检测:
区域的分割与目标的检测一步完成,用一步就可以同时获得图中所有目标的分割、定位与分类。
One stage不存在一个独立的对图像进行分类的阶段。
1.4 分类(Classfic)与回归(Regression)
(1)所谓分类问题:就是给定一组输入数据,输出单一、离散值的问题,就是分类问题。
因此,Two stage的方法实际上是分类问题,先进行分割,对分割的图像做图像分类,这就是分类问题。
(2)所谓回归问题:
回归,指研究一组随机变量(Y1 ,Y2 ,…,Yi)和另一组(X1,X2,…,Xk)变量之间关系的统计分析方法,又称多重回归分析。通常Y1,Y2,…,Yi是因变量(不一定是单一因变量),X1、X2,…,Xk是自变量。
回归分析是一种数学模型。当因变量和自变量为线性关系时,它是一种特殊的线性模型。
最简单的情形是一元线性回归,由大体上有线性关系的一个自变量和一个因变量组成;模型是Y=a+bX+ε(X是自变量,Y是因变量,ε是随机误差)
回归主要的种类有:线性回归、曲线回归、二元logistic回归、多元logistic回归。
YOLO是One Stage,它对物体的分割、定位、分类是一步完成的,即输入一张图片(X1, X2......Xn), 经过YOLO网络的映射,直接得到(Y1, Y2, ......Yn), 其中Y1, Y2,Y3, Y4表示物体的方框坐标, Y5表示物体的类型.........
第2章 输入与网格、方框
2.1 网格Grid或Cell(这是YOLO的算法的基础)
为了对图片中的物体进行定位,首先就要对物体进行分割,在一张图片中,物理的位置实际上是任意、不确定的,为了使得不确定性问题转换为确定性问题,YOLO采用了划分网格的方法:
(1)先把一张图片,划分为S * S个网格,如 7 * 7的网格(S=7),每个网格称为grid或Cell
(2)然后以某个网格的中心为中心,辐射出去B个框,框的数量,不同版本的算法,B的数量不同;框的形状可是正方形,也可是长方形;但框的尺寸是不确定的,是有网络预测的,在打标签时,则是有标签人员指定的。这样,整个图片被分割成:N = S * S * B个框。
(3)后续的目标检测和分类,就基于N个框进行的。N决定了一个图像中,所有检测到的最大的object的数量。
2.2 方框(坐标)
在目标检测中,是通过方框来标识物理的形状与位置的。
为什么需要通过方框而不是物理的轮廓来标识呢?原因如下?
(1)简化设计:不同问题的形状不一样,通过方框来标识问题的位置,提供了一个统一的方法,而不是通过物体自身的轮廓来标识。
(2)简化信息量:方框相对于物体的轮廓,只需要少量的信息就可以标识:比如通过对角的两个点的坐标就可以标志,或通过中心点的坐标 + 长度 + 宽度就可标识。
为什么不通过圆来标识?
(1)圆的计算比较麻烦
(2)有些问题需要长方形的,就需要通过椭圆来标识,椭圆更加复杂。
方框的标识:
- 中心点的位置坐标(x,y)
- 方框的宽度W
- 方框的高度H
2.3 真实的方框、位置(Ground truth)
ground truth的原意是指:地面实况。地面实况表示在地球表面所做的关于遥感研究的观测,通常用地面实况来检验通过传感器数据所做出的判读的准确性。
这里是指,物体真实所在的方框或人工标注的方框。
2.4 边界框(Bounding Box)
在预测过程中用到的所有框,我们都称为边界框Bounding Box,由于一张图片中,会划分出无数的不同位置,不同尺寸的边界框,因此边界框中不一定有物理存在。
2.5 先验框(prior bounding box)与锚点(anchor)
关于先验框,有的paper(如Faster RCNN)中称之为anchor(锚点),有的paper(如SSD)称之为prior bounding box(先验框),实际上是一个概念。
通常,为了覆盖更多可能的情况,在图中的同一个位置(网格),以某个网格为中心点,我们会预设几个不同尺度的先验框。如下图所示:
不同的算法或网络,先验框的个数,是预先设置好的,网络构架好之后,先验框的个数就确定下来了。但先验框的尺寸(长度和宽度)的初始值和最终值却不是固定的。
(1)验框的个数:有网络和算法决定
(2)验框的位置:有网格的位置决定
(3)初始值:可以是随机值,也可以是根据样本数据中的实际框的大小,进行聚类之后框的大小进行初始化,提升网络训练的速度。
(4)最终值:通过训练获得。
2.6 最终框(Final detectioin)
在去除掉不必要的框之后,剩下的就是最终物体检测框:
- 去掉交并不符合要求的框(交并比低于某个门限)
- 去除掉没有物体(置信度低于某个门限)
2.7 交并比IoU(Intersection-over-Union)
交并比是目标检测中经常使用的一个概念,是产生的候选框(candidate bound)与原标记框(ground truth bound)的交叠率,即它们的交集与并集的比值。最理想情况是完全重叠,即比值为1。
交并比越接近1,表示预测框与真实框越近。
交并比越接近0,表示预测框与真实框越远。
第3章 网络与训练
3.1 网络的基本架构
3.2 感受野与目标的大小的关系
(1)什么是感受野
(2)感受野与物体大小的关系
感受野越大,越方便检测较大尺寸的物体。
感受野越小,越方便检测较小尺寸的物体。
感受野与图像中物体的尺寸不一致时,就容易检测不到物体
- 感受野大,图像尺寸小
在高空中看城市,感受野很大,但就很难找到小目标。
- 感受野小,图像尺寸大
显微镜下,就很难看到人体的整体形态。
(3)动态或多感受野
能够同时对一张图上不同大小的目标进行检测,就需要设计出多个不同感受野大小的网络,且不同的感受野有不同的输出。
3.3 预测物体与真实物体之间位置误差Loss或距离Distance?
(1)方法1:利用几何距离求两个框的距离Loss
(2)方法2:利用交并比IoU求两个框的距离Loss
IoU表明了预测框与真实框之间相似度, 1:表示完全一致,0:表示完全不一致。
Loss = 1 - loU
训练优化的目标是使得IoU最小。
(3)其他Loss
第4章 结构化输出
4.1 置信度(Confidence)
是指某个方框内,是物体、是检测目标的可能性有多大。
置信度是目标检测的第一个指标。
符合置信度要求的目标,再进一步判断是某种分类目标的可能性。
如上图:
方框1:置信度接近于0,是酒瓶或人脸的可能就无从谈起。
方框2:置信度接近于80%,是白酒的可能性是90%,是啤酒的可能性18%,人脸的可能性1
方框2:置信度接近于90%,是白酒的可能性是1%,是啤酒的可能性2%,人脸的可能性96%
在实际中,每个方框都会有一个置信度,我们需要设置,大多大置信度的方框,我们才会挑出来,认为这是一个物体或目标,以过滤掉一些不必要的窗口。如设置在90%置信度的窗口,我们才会关心这个窗口内是什么类别的物体。
4.2 回归问题的结构化输出(Structure)与非结构化输出
回归问题是(X1、X2,…,Xk) 到 (Y1 ,Y2 ,…,Yi)的映射关系。
(1)非结构化输出:
输出的数据,没有按照一定的逻辑关系进行组织在一起,而是各自独立的离散输出,称为非结构化输出。比如,输入一张图片,输出另一张图片的GAN网络,就是属于非结构化输出。
(2)结构化输出:
结构化输出,是指输出的信息,有严格的结构与布局。YOLO网络就是结构化输出。
其输入是一张图片,输出是一个组结构化的数据:
- 物体对应的方框的坐标1(X1, Y1)
- 物体对应的方框的坐标2(X2, Y2)或 (Width,Height)
- 方框中是否包含物体的概率
- 目标的实际分类的概率
4.3 非极大值抑制
当多个不同中心点的框标注到同一个物体时。把符合交并比门限的框,按照置信度排序,抑制掉置信度为非极大值的框。
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122118894
以上是关于[YOLO专题-2]:总体-YOLO目标检测的网络总体架构与核心概念的主要内容,如果未能解决你的问题,请参考以下文章
[YOLO专题-11]:YOLO V5 - ultralytics/train基于自定义图片数据集重新训练网络, 完成自己的目标检测
[YOLO专题-21]:YOLO V5 - ultralytics代码解析-网络配置文件与总体结构
[YOLO专题-27]:YOLO V5 小目标检测遇到的问题与常见解决办法