当前位置:   article > 正文

目标检测-基本知识_目标检测数据量

目标检测数据量

博客参照下面的B站课程做的笔记:目标检测从入门到精通-基础原理与项目实战

2.1 目标检测数据集

2.1.1 常见目标检测数据集

  • pascal Visual Object Classes
    VOC数据集是目标检测经常用的一个数据集,从O5年到12年都会举办比赛(比赛有task: Classification、Detection、Segmentation、PersonLayout) ,主要由VOC2007和VOC2012两个数据集
    在这里插入图片描述
  • Open Image Datasets V4
    2018年发布了包含在 190万张图片上针对 600 个类别的 1540万个边框盒,这也是现有最大的具有对象位置注释的数据集。这些边框盒大部分都是由专业注释人员手动绘制的,确保了它们的准确性和一致性。
    谷歌的数据集类目较多涵盖范围广,但是文件过多,处理起来比较麻烦,所以选择目前使用较多并且已经成熟的pascavoc数据集

2.1.2 pascal voc 数据集介绍

通常使用较多的为VOC 2007数据集,总共9963张图片,需要判定的总物体类别数量为20个对象类别是:

  • 人∶人
  • 动物:鸟,猫,牛,狗,马,羊
  • 车辆︰飞机,自行车,船,公共汽车,汽车,摩托车,火车
  • 室内:瓶子,椅子,餐桌,盆栽,沙发,电视/显示器
  • 文件结构 在这里插入图片描述
  • 文件内容
    • Annotations:图像中的目标标注信息xml个数
    • JPEGImages:所有图片(VOC2007中总共有9963张,训练有5011张,测试有4952张)
      在这里插入图片描述

2.1.3 XML

以下是一个标准的物体检测标记结果格式,这就是用于训练的物体标记结果。其中有几个重点内容是后续在处理图像标记结果需要关注的。

  • size:
    • 图片尺寸大小,宽、高、通道数
  • object:
    • name:被标记物体的名称
    • bndbox:标记物体的框大小

如下例子:为000001.jpg 这张图片,其中有两个物体被标记
在这里插入图片描述
在这里插入图片描述

4.1 迁移学习(Transfer Learning)

  • 利用数据、任务或模型之间的相似性,都是分类问题
  • 在旧的领域学习过或训练好的模型
  • 应用于新的领域进行训练
4.1.1 微调(fine tuning)
  • 微调模型参数不需要过多调整
  • 调整模型结构,微微调整
  • Pre-trained:预训练模型
  • fine tuning:微调之后的模型

过程

  • 1、确定当前任务场景B,修改原始模型结构(修改后面全连接层)
  • 2、确定B任务的数据大小
    • B任务数据量大,可以放开A模型的所有训练,A结构+修改的全连接层一起训练(A模型有已经训练好的参数)
    • B任务数据量小,将A模型冻结掉不训练,只训练全连接层

4.2 目标检测任务描述

4.2.1 目标检测算法分类

  • 两步走的目标检测:先找出候选的一些区域,而后对区域进行调整和分类。两阶的算法通常在第一阶段 专注于找出物体的位置,得到建议框,然后在第二阶段专注于对建议框进行分类。
    • 代表:R-CNN、SPP-net、Fast R-CNN、Faster R-CNN
    • 特点:精准度更高,但速度较慢。
  • 端到端的目标检测:采用一个网络一步到位。输入的是图片,输出有哪些物体,以及物体在什么位置。一阶的算法将二阶算法的两个阶段合二为一,在一个阶段里完成寻找物体出现位置与类别的预测。
    • 代表:YOLO、SSD
    • 特点:速度一般比两阶段网络更快,但精度会有所损失。
      在这里插入图片描述

4.2.2目标检测的任务

4.2.2.1 分类原理回顾

输入一张图片,经过其中军妓、激活、池化相关层,最后加入全连接层达到分类概率的效果。

  • 分类的损失与优化
    在训练的时候需要计算每个样本的损失,那么CNN做分类的时候使用softmax函数计算结果,损失为交叉熵损失。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OgB1dJHa-1677574465508)(null)]
    对于目标检测来说不仅仅是分类这样简单的一个图片输出一个结果,而且还需要输出图片中目标的位置信息,所以从分类到检测,如下图标记了过程:
4.2.2.2 检测的任务
  • 分类:
    • N个类别
    • 输入:图片
    • 输出:类别标签
    • 评估指标:Accuracy
  • 定位:
    • N个类别
    • 输入图片
    • 输出:物体的位置(x, y, w, h)
    • 主要评估指标:IOU
      在这里插入图片描述
      其中我们得出来的(x, y, w, h)有一个专业的名词,叫做bounding box(bbox)。
  • 物体位置
    • 其中我们得出来的(x,y,w,h)有一个专业的名词,叫做bounding box (bbox)。
    • 物体位置:x, y, w, h: x,y是物体的中心点位置,w和h是中心点距离物体两边的长宽。
    • xmin, ymin, xmax, ymax:物体位置的左上角、右下角坐标。

4.2.3 目标定位的简单实现思路

在分类的时候我们直接输出各个类别的概率,如果再加上定位的话,我们可以考虑在网络的最后输出加上位置信息。

4.2.3.1 回归位置

增加一个全连接层,即为FC1、FC2

  • FC1:作为类别的输入
  • FC2:作为这个物体位置数值的输出
    在这里插入图片描述
    假设有10个类别,输出[p1, p2, p3. … p10],然后输出这一个对象的四个位置信息[x, y, w, h]。同理知道要网络输出什么,如果衡量整个网络的损失。
  • 对于分类的概率,还是使用交叉熵损失
  • 位置信息具体的数值,可使用MSE均方误差损失(L2 损失)

如下图所示:
在这里插入图片描述

4.2.4 两种Bounding box名称

在目标检测当中,对bbox主要有两种类别。

  • ground-truth bounding box:图片当中真实标记的框
  • predicted bounding box:预测的时候标记的框
    在这里插入图片描述
4.2.5 分类与定位、目标检测的区别
  • 分类与定位:图片中只有一个物体需要检测
  • 目标检测:图片有多个物体需要检测

4.3 R-CNN

  • 对于多个目标的情况,就不能以固定个数输出物体的位置值

4.3.1 目标检测-Overefeat模型

4.3.1.1 滑动窗口
  • 目标检测的暴力方法是从左到右、从上到下滑动窗口,利用分类识别目标。
    • 为了在不同观察距离处检测不同的目标类型,我们使用不同大小和宽高比的窗口。
      如下图所示∶
      在这里插入图片描述

注:这样就变成每张子图片输出类别以及位置,变成分类问题。

但是滑动窗口需要初始设定一个固定大小的窗口,这就遇到了一个问题,有些物体适应的框不一样。

  • 所以需要提前设定K个窗口,每个窗口滑动提取M个,总共K × \times ×M个图片,通常会直接将图像变形转换成固定大小的图像,变形图像块被输入CNN分类器中,提取特征后,我们使用一些分类器识别类别和该边界框的另一个线性回归器。

在这里插入图片描述

4.3.1.2 Overfeat模型总结

这种方法类似一种暴力穷举的方式,会消耗大量的计算力量,并且由于窗口大小问题可能会造成效果不准确。但是提供了—种解决目标检测问题的思路。

4.3.2 目标检测R-CNN(Region with CNN feature)模型

在CVPR 2014年中Ross Girshick提出R-CNN。

4.3.2.1 完整R-CNN的结构

不使用暴力方法,而是用候选区域方法(region proposal method) ,创建目标检测的区域改变了图像领域实现物体检测的模型思路,R-CNN是以深度神经网络为基础的物体检测的模型,R-CNN在当时以优异的性能令世人瞩目,以R-CNN为基点,后续的SPPNet、Fast R-CNN、Faster R-CNN模型都是照着这个物体检测思路。
在这里插入图片描述

  • R-CNN步骤(以AlexNet网络为基准):
      1. 对于一张图像,找出可能存在目标的候选区域region proposal(默认2000个候选区域)
      1. 为了适应AlexNet网络的输入,将2000个候选区域做大小变换输入AlexNet当中,得到特征向量(AlexNet网络输出的特征向量维度是4096)
      • [2000, 4096]
      1. 经过20个类别的SVM分类器,对于2000个候选区域再做判断,得到 [2000, 20]得分矩阵
      1. 2000个候选区域进行非极大值抑制(NMS: non-maximum suppression),去除不好的或者高度重叠的一些候选区域,得到剩下分数高、结果好的框
      1. 修正候选框bbox,对bbox做回归微调
4.3.2.2 候选区域(ROI: Region of Interest)
  • 选择性搜索(Selective Search)在一张图片上提取出来约2000个候选区域,需要注意的是这些候选区域的长宽不固定
  • 由于长宽不固定,需要接受固定长度的输入(不能直接输入AlexNet),所以需要对候选区域做一些尺寸上的修改。
4.3.2.3 CNN网络提取特征

在候选区域的基础上提取出更高级、更抽象的特征。这些高级特征是作为下一步的分类器、回归的输入数据。
在这里插入图片描述
提取的这些特征将会保存在磁盘当中(这些提取的特征才是真正的要训练的数据

4.3.2.4 特征向量训练分类器SVM
  • 1、假设一张图片的2000个候选区域,那么进行特征提取后提出来的就是2000 × \times × 4096个这样的特征向量(R-CNN当中默认CNN层输出4096特征向量)。
  • 2、R-CNN选用SVM进行二分类。假设检测20个类别,那么会提供20个不同类别的SVM分类器,每个分类器都会对2000个候选区域的特征向量分别做一次判断,这样会得出[2000, 20]的得分矩阵,按如下图所示: 在这里插入图片描述
4.3.2.5 非最大抑制
  • 目的:
    • 筛选候选区域,目标是一个物体只保留一个最优的框,来抑制那些冗余的候选框。
  • R-CNN预测2000个候选框,得到3个(比如图像中有3个ground truth)
  • 迭代过程
    • 1、对于所有的2000个候选区域得分进行改了筛选,0.5
      • 2000 -> 5个
    • 2、剩余的候选框
      • 假设图片真实是物体个数为2(N),筛选之后候选框为5(P),计算N中每个物体位置与所有P的交并比IoU计算,得到P中每个候选框对应IoU最高的N中一个
      • 如下图,A、C候选框对应左边车辆,B、D、E对应右边车辆。
    • 3、第一轮:对于右边车辆,假设B是得分最高的,与B的loU>0.5的删除。现在与B计算loU,D和E结果>0.5,剔除D、E,B作为一个预测结果。
      第二轮:对于左边车辆,A和C中,A的得分最高,与A计算loU,C的结果≥0.5,剔除C,A作为一个结果。
    • 最终结果:理想状态,每一个ground truth都有一个候选框预测
      在这里插入图片描述

选择性搜索算法(SS)得到的物体位置已经国定了,但是我们筛选出的位置不一定真的就特别准确,需要对A和B进行最后的修正

4.3.2.6 修正候选区域
  • 为了让候选框标注更准确,去修正原来的位置
  • A是候选框,G是目标GT框
  • 让A与G做回归训练,得到四个参数

在这里插入图片描述
R-CNN输出:一张图片预测一个X候选框,x × \times × w = y_locate

  • y_locate: 是真正算法输出的位置(经过回归修正的)

4.3.3 检测的评价指标

4.3.3.1 IoU交并比: 位置的考量
任务description输入输出评价指标
Detection and Localization(检测和定位)在输入图片中找出存在的物体类别和位置(可能存在多种物体)图片(image)类别标签(categories)和位置(bbox(x,y,w,h))IoU(Intersection over Union)
  • IoU(交并比): 0~1之间的值
    • 两个区域的重叠程度overlap:候选区域和标定区域的IoU值
      在这里插入图片描述
    • 通常Correct: 类别正确 且 IoU > 0.5
4.3.3.2 平均精确率(mAP: mean average precision):分类准确的考量
  • 定义:多个分类任务的AP的平均值
    • mAP = 所有类别的AP之和 / 类别的总个数
    • 注:PR曲线,而AP(average precision)就是这个曲线下的面积(ROC与AUC)
  • 方法步骤:
    • 1、对于其中一个类别C,首先将算法输出的所有C类别的预测框,按预测的分数confidence排序
      • RCNN中就是SVM的输出分数
      • 1、 对于猫类别:候选框预测是猫类别的概率做一个排序,得到候选框排序列表(假设8个)
      • 2、对于猫当中候选框排序列表(8个)进行计算AUC
      • 3、最终得到20个类别,20个AP相加
    • 2、设定不同的k值,选择top k个预测框,计算FP和TP,计算Precision和AP
    • 3、将得到的N个类别的AP取平均,即得到AP: AP是针对单一类别的,mAP是将所有类别的AP求和,再取平均:
  • 首先回顾精确率与召回率
    • 左边一整个矩形中的数表示ground truth之中为1的《即为正确的)数据。
    • 右边—整个矩形中的数表示ground truth之中为0的数据
    • 精度precision的计算是用检测正确的数据个数/总的检测个数
    • 召回率recall的计算是用检测正确的数据个数/ground truth之中所有正数据个数。
      在这里插入图片描述
      在这里插入图片描述
    • 准确率、精度、召回率
      • True Positive(真正,TP):将正类预测为正类数

      • True Negative(真负,TN):将负类预测为负类数

      • False Positive(假正,FP):将负类预测为正类数误报 (Type I error)

      • False Negative(假负,FN):将正类预测为负类数→漏报 (Type II error)

        Positive(预测类别)Negative(预测类别)
        True(真实类别)True Positive(TP)Ture Negative(TN)P(实际为Yes)
        False(真实类别)False Positive(FP)False Negative(FN)N(实际为No)
        P‘(被预测为Yes)N’(被预测为No)P+N
        • 准确率(accuracy):
          A C C = T P + T N T P + T N + F P + F N ACC=\frac{TP+TN}{TP+TN+FP+FN} ACC=TP+TN+FP+FNTP+TN
        • 精确率、精度(Precision): 表示被分为正例的示例中实际为正例的比例。
          P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP
        • 召回率(recall):召回率是覆盖面的度量,度量有多个正例被分为正例,可以看到召回率与灵敏度是一样的。
          $recall = \frac{TP}{TP+FN}=\frac{TP}{P}=sensitive
        • 综合评价指标(F-Measure):P和R指标有时候会出现的矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure(又称为F-Score)。
          F-Measure是Precision和Recall加权调和平均: F = ( α 2 + 1 ) P ∗ R α 2 ( P + R ) \mathrm{F}=\frac{\left(\alpha^{2}+1\right) P * R}{\alpha^{2}(P+R)} F=α2(P+R)(α2+1)PR
          当参数 α = 1 \alpha=1 α=1时,就是最常见的F1,也即 F 1 = 2 ∗ P ∗ R P + R \mathrm{F} 1=\frac{2 * P * R}{P+R} F1=P+R2PR

4.3.4 R-CNN方法总结

4.3.4.1 R-CNN算法的缺点
  • 1、训练阶段多,步骤繁琐:微调网络+训练SVM+训练边框回归器。
  • 2、训练耗时,占用磁盘空间大:5000张图像产生几百G的特征文件。(VOC数据集的检测结果,因为SVM的存在)
  • 3、处理速度慢:使用GPU, vGG16模型处理一张图像需要47s。
  • 4、图片形状变化:候选区域要经过crop/warp进行固定大小,无法保证图片不变形。

4.3.8 R-CNN的改进-SPPNet

SPPNet主要存在两点改进地方,提出了SPP层

  • 减少卷积计算
    在这里插入图片描述

    R-CNN模型SPPNet模型
    1. R-CNN是让每个候选区域经过crop/wrap等操作变换成固定大小的图像 2. 固定大小的图像塞给CNN,传给后面的层做训练回归操作1. SPPNet把全图塞给CNN得到全图的feature map 2. 让SS得到候选区域直接映射特征向量中对应位置 3. 映射过来的特征向量,经过SPP层(空间金字塔变换层),S输出固定代销的特征向量给FC层
  • 步骤:

    • 1、图片输入到网络先得到一个feature map
    • 2、原图中通过SS得到的候选区域直接映射feature map中对应位置
    • 3、映射过来的候选区域的特征,经过SPP层(空间金字塔变换层),S输出固定大小的特征向量。
4.3.8.1 映射

原始图片经过CNN变成了feature map,原始图片通过选择性搜索(SS)得到了候选区域(Region of Interest),现在需要将基于原始图片的候选区域映射到feature map中的特征向量。映射过程图参考如下:

在这里插入图片描述

整个映射过程有具体的公式,如下

假设(x’,y’)表示特征图上的坐标点,坐标点(x,y)表示原输入图片上的点,那么它们之间有如下转换关系,这种映射关心与网络结构有关∶(x, y)=(Sx’, Sy’),即

  • 左上角的点︰
    • x’=[x/S]+1
  • 石下角的点∶
    • x’=[x/S]-1

其中S就是CNN中所有的strides的乘积,包含了池化、卷积的stride。论文中使用S的计算出来为 2 × 2 × 2 × 2 = 16 2\times 2\times 2\times 2=16 2×2×2×2=16

4.3.8.2 spatial pyramid pooling
  • 将候选区域的特征图转换成固定大小的特征向量

示例:假设原图输入是224 × \times × 224,对于conv出来后的输出是13 × \times × 13 × \times × 256,其中某个映射的候选区域假设为︰12 × \times × 10 × \times × 256

  • spp layer会将每一个候选区域分成 1 × \times × 1,2 × \times × 2,4 × \times × 4三张子图,对每个子图的每个区域作max pooling,得出的特征再连接到一起就是(16+4+1) × \times × 256=21 × \times × 256=5376结果,接着给全连接层做进一步处理,如下图︰

  • Spatial bins(空间盒个数)︰1+4+16=21
    在这里插入图片描述
    在这里插入图片描述

  • 优点

    • SPPNet在R-CNN的基础上提出了改进,通过候选区域和feature map的映射,配合SPP层的使用,从而达到了CNN层的共享计算,减少了运算时间,后面的Fast R-CNN等也是受SPPNet的启发。
  • 缺点

    • 训练依然过慢、效率低,特征需要写入磁盘(因为SVM的存在)
    • 分阶段训练网络:选取候选区域、训练CNN、训练SVM、训练bbox回归器,SPPNet反向传播效率低
  • SPPNet的性能已经得到很大的改善,但是由于网络之间不统一训练,造成很大的麻烦,Fast R-CNN就是为了解决这样的问题。

4.4 Fast R-CNN

4.4.1 Fast R-CNN

改进的地方:

  • 提出一个Rol pooling,然后整合整个模型,把CNN、Rol pooling、分类器、bbox回归几个模型整个一起训练。
    在这里插入图片描述
  • 步骤
    • 首先将整个图片输入到一个基础卷积网络,得到整张图的feature map。
    • 将选择性搜索算法的结果region proposal (Rol)映射到feature map中。
    • Rol pooling layer提取一个固定长度的特征向量,每个特征会输入到一系列全连接层,得到一个Rol特征向量 (此步骤是对每一个候选区域都会进行同样的操作)
      • 其中一个是传统softmax层进行分类,输出类别有K个类别加上”背景”类
      • 另一个是bounding box regressor
4.4.1.1 Rol pooling

Rol pooling只是一个简单版本的SPP,目的是为了减少计算时间并且得到固定长度的向量。
在这里插入图片描述

  • 为了减少计算时间并且得出固定长度的向量
  • 使用一种 4 × 4 = 16 4 \times 4=16 4×4=16 的空间盒数(使用1个种类的盒子代替3个种类的盒子)
  • 因此FastR-CNN要比SPPNet快很多也是因为这里的原因。
  • 训练比较统一:废弃了SVM以及SPPNet
    • Rol pooling layer + softmax

4.4.2 多任务损失 Multi-task loss

两个loss,分别是:

  • 对于分类loss,是一个N+1路的softmax输出,其中的N是类别个数,1是背景,使用交叉熵损失
  • 对于回归loss,t是一个4xN路输出的regressor,也就是说对于每个类别都会训练一个单独的regressor的意思,使用平均绝对误差(MAE)损失即L1损失:
    • 1 m ∑ i = 1 m ∣ ( y i − y ^ i ) ∣ \frac{1}{m} \sum_{i=1}^{m}\left|\left(y_{i}-\hat{y}_{i}\right)\right| m1i=1m(yiy^i)
  • fine-tuning训练
    • 在微调时,调整CNN+Rol pooling + softmax
    • 调整bbox regresssor回归当中的参数

4.4.3 R-CNN、SPPNet、Fast R-CNN效果对比

参数R-CNNSPPNetFast R-CNN
训练时间(h)84259.5
测试时间/图片47.0s2.3s0.32s
mAP66.063.166.9

在这里插入图片描述

  • 缺点
    • 使用Selective Search提取Region Proposals,没有实现真正意义上的端到端,操作也十分耗时。

4.5 Faster R-CNN

4.5.1 Faster R-CNN

在Faster R-CNN中加入一个提取边缘的神经网络,也就说找候选框的工作也交给神经网络来做了。这样,目标检测的四个基本步骤(候选区域生成,特征提取,分类,位置精修)终于被统一到一个深度网络框架之内。
在这里插入图片描述
Faster R-CNN可以简单地看成是区域生成网络+Fast R-CNN的模型,用区域生成网络(Region Proposal Network,简称RPN)来代替Fast R-CNN中的选择性搜索方法,结构如下:
在这里插入图片描述

  • 1、首先向CNN网络(VGG-16)输入图片,Faster R-CNN使用一组基础的conv+relu+pooling层提取feature map。该feature map被共享用于后续RPN层和全连接层。
  • 2、Region Proposal Networks。RPN网络用于生成region proposals,faster rcnn中称之为anchors
    • 通过softmax判断anchors属于foreground或者background
    • 再利用bounding box regression修正anchors获得精确的proposals,输出其Top-N(默认为300)的区域给Rol pooling
    • 生成anchors -> softmax分类器提取fg anchors -> bbox reg回归fg anchors -> Proposal Layer生成proposals
  • 3、后续就是Fast R-CNN操作
    在这里插入图片描述

4.5.2 RPN原理

RPN网络的主要作用是得出比较准确的候选区域。整个过程分为两步

  • 用n×n(默认3x3=9)的大小窗口去扫描特征图,每个滑窗位置映射到一个低维的向量(默认256维),并为每个滑窗位置考虑k种(在论文设计中k=9)可能的参考窗口(论文中称为anchors)
4.5.2.1 anchors
  • 3*3卷积核的中心点对应原图上的位置,将该点作为anchor的中心点,在原图中框出多尺度、多种长宽比的anchors,三种尺度{ 128,256,512},三种长宽比{1:1,1:2,2:1],每个特征图中的像素点有9种框
    • 窗口输出[N, 256] ----> 分类:判断是否是背景
    • 回归位置:N个候选框与自己对应目标值GT做回归,修正位置
    • 得到更好的候选区域提供给ROI pooling使用

4.5.3 Faster R-CNN训练

4.5.3.1 Faster R-CNN的训练

Faster R-CNN的训练分成两部分,即两个网络的训练。

  • RPN训练:
    • 目的:从众多的候选区域中提取出score较高的,并且经过regression调整的候选区域
    • 分类:二分类,softmax,logistic regression
    • 候选框的调整:均方误差做修正
  • Fast R-CNN部分的训练:
    • Fast R-CNN classification(over classes):所有类别分类 N+1,得到候选区域的每个类别概率。softmax
    • Fast R-CNN regression(bbox regression):得到更好的位置。均方误差损失
R-CNNFast R-CNNFaster R-CNN
测试时间/图片50.0s2.3s0.2s
mAP(VOC 2007)66.066.966.9

4.5.4 Faster R-CNN总结

  • 优点:
    • 提出RPN网络
    • 端到端网络模型
  • 缺点:
    • 训练参数过大

可以改进的需求:

  • RPN(Region Proposal Networks)改进对于小目标选择利用多尺度特征信息进行RPN
  • 速度提升,如YOLO系列算法,删去了RPN,直接对proposal进行分类回归,极大提升了网络的速度

4.6 YOLO(You only look once)

4.6.1 YOLO结构

4.6.1.1 结构
  • 一个网络搞定一切,GoogleNet + 4个卷积 + 2个全连接层
  • 网络输出大小: 7 × 7 × 30 7 \times 7 \times 30 7×7×30
    在这里插入图片描述
4.6.1.2 单元格(grid cell)

最后网络输出的 7 × 7 × 30 7 \times 7 \times 30 7×7×30 的特征图怎么理解? 7 × 7 = 49 7\times 7=49 7×7=49个像素值,理解成49个单元格,每个单元格可以代表原图的一个方块。单元格需要做的两件事:

  • 1、每个单元格负责预测一个物体类别,并且直接预测物体的概率值
  • 2、每个单元格预测两个(默认)bbox位置,两个bbox置信度(confidence) 7 × 7 × 2 = 98 7 \times 7 \times 2=98 7×7×2=98 个bbox
    • 30 = (4+1+4+1+20),4个坐标信息,1个置信度(confidence)代表一个bbox的结果,20代表20类的预测概率结果

4.6.2 网格输出筛选

一个网络会预测2个bbox,但是在训练时只有一个bbox专门负责预测概率(一个objcet,一个bbox)
在这里插入图片描述

  • 通过置信度大小比较
    每个bounding box都对应一个confidence score
  • 如果grid cell里面没有object,confidence就是0
  • 如果有,则confidence score等于预测的box和ground truth的IOU乘积

注∶所以如何判断一个grid cell中是否包含object呢?如果一个object的ground truth的中心点坐标在一个grid cell中,那么这个grid cell就是包含这个object,也就是说这个object的预测就由该grid cell负责。

  • YOLO框,概率值都直接由网络输出 7 × 7 × 30 7 \times 7 \times 30 7×7×30 (人为给30个值赋了具体的定义)

4.6.3 非最大抑制(NMS)

每个bbox的Class-Specific Confidence Score以后,设置阈值,滤掉概率低的bbox,对每个类别过滤loU,就得到最终的检测结果。

4.6.4 训练

  • 预测框对应的目标值标记

    • confidence:格子内是否有目标
    • 20类概率:标记每个单元格的目标类别怎么理解这个过程?同样以分类那种形式来对应,假设以一个单元格的预测值为结果,如下图
      在这里插入图片描述
  • 损失:

    • 三部分损失:bbox损失 + confidence损失 + classification损失

4.6.5 YOLO总结

  • 优点
    • 速度快
  • 缺点
    • 准确率会打折扣
    • YOLO对相互靠的很近的物体(挨在一起且中心店都落在同一个格子上的情况),还有很小的群体的检测结果不好,这是因为一个网络中只预测了两个框。

4.7 SSD(Single Shot MultiBox Detector)

4.7.1 SSD

4.7.1.1 简介

SSD算法源于2016年发表的算法论文,论文网址: https://arxiv.org/abs/1512.02325
SSD的特点在于:

  • SSD结合了YOLO中的回归思想和Faster-RCNN中的Anchor机制,使用全图各个位置的多尺度区域进行回归,既保持了YOLO速度快的特性,也保证了窗口预测的跟Faster-RCNN一样比较精准。
  • SSD的核心是在不同尺度的特征特征图上采用卷积核来预测一系列Default Bounding Boxes的类别、坐标偏移。
4.7.1.2 结构

以VGG-16为基础,使用VGG的前五个卷积,后面增加从Conv6开始的五个卷积结构,输入图片要求 300 × 300 300 \times 300 300×300
在这里插入图片描述

4.7.1.3 流程

在这里插入图片描述
SSD中引入了Defalut Box,实际上与Faster R-CNN的anchor box机制类似,就是预设一些目标预选框,不同的是在不同尺度feature map所有特征点上使用PriorBox层(Detector&Classifier)

4.7.1.4 Detector &Classifier
  • 1、PriorBox层:生成default boxes,默认候选框
    • 候选框生成结果之后
    • 做微调,利用4个 variance 做回归调整候选框
  • 2、Conv 3 × 3 3 \times 3 3×3 :生成 localization,4个位置偏移
  • 3、Conv 3 × 3 3 \times 3 3×3 :confidence,21个类别置信度(要区分出背景)

4.7.2 训练与测试过程

  • 训练

    • 1、 样本标记:8732个候选框default boxes,得到正负样本
    • 正:负 = 1 : 3
    • Softmax Loss(Faster R-CNN是log loss),位置回归则是采用Smooth L1 Loss(与Faster R-CNN一样)
  • 测试

    • 输出 -> 输出 -> NMS -> 输出
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/780605
推荐阅读
相关标签
  

闽ICP备14008679号