PP-YOLO

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

在这里插入图片描述

1

数据增强:

Image Mixup:将两张图片重叠起来混合为一张,网络可同时学习两张图片,可提升网络空间的抗干扰能力,提升正样本比例的意思是原本一张图只有两个框(目标正例),混合一张图势必再多一个框(每个框有自己的权重),增加了正样本数。
在这里插入图片描述
(黑框为算子,加入即可)

AutoAugement:利用预先定义好的图像增强的方法值,会自动的根据方法值选择合适的增强方法,完成图像混合的任务

Image Mosaic:图像镶嵌,(PP-YOLO暂时没用到,但用在了YOLOv4里),图像镶嵌取四张图片,以井字格形式把他们镶嵌成一张,实现数据增强。

还有很多数据增强的方法。
(标红的是PP-YOLO用到的了)

2

数据采样:

OHEM:在线的难样本采样,在训练中实时的对一些难样本(遮挡、缺失等难检测的样本),通过训练过程中调整权重,实现更好的学习效果(难样本增强)

在这里插入图片描述(标红的是PP-YOLO中有的)
Class aware Sampling:有时候一张图片中出现的类别比较多(一张图中飞机、人,狗比例不均衡,人太多,其他的太少)通过统计一张图片中出现的类别概率,调整类别的权重,实现一个样本的采样方法。

3

Lable Smooth:提升分类通道的分类精度(可防止过拟合)
(因为YOLOv3用的都是sigmord函数,所以这里用的是sigmord)
小量在这里插入图片描述可以取1/class,或者2/class
(±小量可以扰动硬标签转为软标签,避免向无穷方向走,避免过拟合)

在这里插入图片描述
3

Synchronized Batch Norm:卡件同步批归一化
在这里插入图片描述

每批数据减去均值后除以方差,但我们一般深度学习训练框架在进行多卡训练时,卡件同步开销大,为了方便,我们进行卡间同步,由左边GPU1(卡一只计算分配到的数据的均值方差,不会在卡之间算一个同步,只能一个一个批次的计算,数据相对独立。变成右边每计算一个批次就更新一次均值方差相当于增加了batchsize,使得均值方差的计算更加合理,收敛速度和收敛效果更好
在这里插入图片描述

在这里插入图片描述
(这些都是训练中的trick,不影响计算量)
4
在这里插入图片描述
ResNet-50分为五个阶段,每个阶段都会做一个倍数为2的降采样,降采样结构(绿框)

将ResNet-50变成ResNet-D(紫框),原本1 X 1卷积,步长为2降采样会使得图片丢失3/4的信息,转到3 X 3的卷积时看红框,可以避免信息丢失(红框)。

在黑框的划红线部分指定d即可是ResNet-D了凹
在这里插入图片描述

5

Deformable Conv(DCV):可变形卷积。我们在学习卷积的时候普遍是在学习卷积核的权重,但我们的卷积核都是1 X 1 或者3 X 3 的方块,方块不一定适合学习全部的目标。可变形卷积可以一边学习卷积核的权重,一边可以学习卷积核的形状(到底该计算哪些值)。

具体看优化方法,偏移可以将卷积核的每个小方块拆分到学习不同的地方去,右下角的图,利用可变形卷积可以学习到羊的形状同时也可以学习到卷积核的权重
(paddledection中的ResNet都是支持使用DCN的,黑框中指定第几个卷积使用可变形卷积即可)
在这里插入图片描述
在这里插入图片描述
6

Drop Block : (Droup out是深度学习中减少过拟合的方法,但他不适合目标检测网络,为啥呢,因为他丢弃的是部分点,可能检测出来的狗狗会没有耳朵或者尾巴,而丢弃的是一块的时候,直接让一整只狗狗不见了,可以使得模型取得一个更好的效果。Drop Block是Droup out的一种适用于检测的变种
在这里插入图片描述
7
Exponential Moving Average(EMA模型指数滑动平均):对于一个波动比较大的数值,我们取他的历史滑动窗口对数据进行平滑,比如当前对倒数20个点的滑动窗口,取他们的加权平均值(为优化梯度或者loss抖动的问题)
在这里插入图片描述

8
Larger Batch Size:增大单卡size
增加batchsize也要增加学习率

在这里插入图片描述
9
IOU Loss:
在这里插入图片描述
10
IOU Aware :计算IOU X score,使用IOU来表征定位精度,利用定位精度来调整score,使得定位精度高的检测框排在前面,避免因为得分不太高而被过滤掉。增加了一个通道,5——》6
loss weight :调整loss权重,
在这里插入图片描述
11
Grid Sentive :(YOLOv4引入的方法)和Lable Smooth有相似的问题,当真实框中心点落到网格边缘的时候,中心点的偏移要在0-1之间,会向±∞学习,会导致图形的过拟合,YOLOv4中引入Grid Sentive,不直接计算偏移量,而是在他之前乘以一个数值(可以理解为实际偏移量可以比1大),使得网格范围在0<X<1(而不是0和 1的亚子),取得更好的效果
(在后处理
在这里插入图片描述
12
Matrix NMS:
(后处理)
在这里插入图片描述
13
Coor Conv :卷积(是局部感受野)只关注目标而不关注目标出现的位置,如果目标只出现在左上角,那不一定能检测出他是什么,使他感知全局更有利于目标的检测出来(加两个通道使得卷积知道局部信息和定位,提高特征提取的效率)
在这里插入图片描述

14
SPP (优化特征提取):提取某特征图的特征时,对于某一层特征图用不同大小的池化窗口进行提取多个特征,再拼接concat在一起,有大范围、小范围的感知,使得特征提取更优能,PP-YOLO只是在骨干网络输出特征图部分加入SPP,效果比较不明显

不同大小池化窗口如何concat? 不管是13 X 13、 9 X 9、 3 X 3,他们的输出图H W都是一样的,如图,每个窗口先绿框后紫框,轮流下去,H W都是一样的

在这里插入图片描述

在这里插入图片描述
15
骨干网络有预训练权重的

SSLD(简单的半监督蒸馏):原理:原本的是简单的只对图像进行学习,但SSLD可以给出具体的方法,不仅给图像而且给方法,比如一个小模型,我们给一个精度更大的模型去指导学习,监督学习,提高小模型的精度,不影响网络结构。我们只需要把backbone网络里的网络预训练权重换成SSLD中的预训练权重就可以获得更好的效果。

paddledetection中已经把权重发布出来了,我们只需要将预训练权重在网络中配置成带有SSLD的权重,下载好模型在网络中加载即可。(2X二乘)
最底下为SSLD地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

16(会影响精度凹)
裁剪:卷积通道裁剪,裁剪掉网络中多余的通道(输出减少),进行压缩,减少模型的计算量,提高速度

量化:将浮点数计算或者浮点数模型转化为int8类型(八位整数)可以减小计算量,提高速度
在这里插入图片描述

(为避免精度受到影响:)
蒸馏:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值