学习笔记--小麦比赛kaggle

第一课–7.5

1、DBC使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
租用GPU、初级】租用、deepshare

在这里插入图片描述

第二课–7.8NNI–使用

1、NNI

1、是什么:
在这里插入图片描述
主要是超参调优
2、使用场景:在这里插入图片描述
3、功能介绍
在这里插入图片描述

2、使用

1、总过程在这里插入图片描述
评估结果:一般是损失或者精度
分析结果:可视化界面显示中间过程,最终结果,超参的影响,规律,组合等都可以分析一下
2、自动调用,三步实现
定义搜索空间searchspace
更新训练代码codes,通过NNI产生的参数一组一组的调用进来。中间和最终结果都要传进去
定义实验experient
3、关键配置文件
搜索空间:超参人定的范围
系统配置文件:策略

3、NNI结合baseline

在这里插入图片描述在这里插入图片描述③训练几块GPU
④最大训练时间
⑤最大跑几次实验
⑥本地还是服务器
⑦搜索空间的路径
⑧没用
⑨重要:如何寻找超参呢,用哪个组合呢?有不同的方法
指标最大化还是最小化
想执行什么
GPU数量
是否适用GPU

调参时,节约时间技巧
在选择超参时,选一半数据集进行训练,即可以代表全部的
可以选择epoch少一点去判断好不好

有些参数其实不用调,比如动量

第三课–7.12–比赛的tricks

1、目标检测通用的tricks

1、数据增强

离线增强、数据集小的情况下
在线增强、数据量无限多,在基础上演变出各种各样的,大大提升数据的多样性,丰富性。在未来的测试场景,可以在未知场景下可能有更好的拟合效果,相当于对未来数据的预测。每次训练的图片都不一样,训练的目的不单单是为了过拟合,还为了有超强的泛化能力、数据增强就可以把数据变成多种多样,也就是对未来数据的估计,模仿出来的越多,学习到的效果越好。
在这里插入图片描述
常用方式
在这里插入图片描述
边界检测:根据图片颜色的梯度检测边缘
锐化:边边角角更清晰
浮雕:立体感

2、训练策略

在这里插入图片描述
1、warmup
先大,可能就跳出去了,所以应该先小,稳定了再大点
2、学习率衰减策略
指数衰减:还可以
固定步长衰减:别人都是定制的,这个不好用,要调好久
多步长:多次实验
余弦退火衰减:其实很不错了
蓝色:适应一个坑中的求极值
红色:保证局部最优跳出去
自适应学习率
3、label smoothing
在这里插入图片描述
标签平滑:避免过度自信
4、K-fold:确保每个模型是在不同的验证集上进行的
在这里插入图片描述
第一种测试方式:训练5折,然后有一个超参数的获得,知道训练多久会好,然后直接训练整个数据,使用得到的超参进行训练整个数据,肯定数据量多了效果更好。
其实就是五折数据作为正式训练前的热身训练了,但是比较慢。保存最后的模型,不需要验证集了
第二种测试方式:其实是k-fold的另一种使用方法,他的另一个目的是选择超参,超参不同,看哪个更好。
effdet40个epoch最好
yolo5是50个epoch最好

3、推断策略

在这里插入图片描述
避免两个物体重叠了,有一个被删掉在这里插入图片描述
计算真实框和预测框时使用iou,iou为0时就删掉了,不能反映真实框和预测框的距离,
iou只衡量了iou,没有中心距离的预测,
也没有重合方式

2、baseline中的tricks

1、mosaic

在这里插入图片描述
注意:
1、好处:丰富了背景、读一张图片相当于同时训练了多张,多张图片的梯度是不同的,对泛化能力特别好
2、随机一个中心点,随机选取3张图
3、不仅要拼接不同的图片,还要移动不同图片上的Bbox。完了做数据增强(仿射变换)
4、拼接时,先放大图片,再缩回原来我的尺寸即网络输入时的尺寸

2、mixup

在这里插入图片描述
注意:
1、能增强数据,能模拟遮挡效果
2、使用加权方式进行融合,label也进行融合,再进行仿射变换在这里插入图片描述

3、kmeans聚类anchor

在这里插入图片描述
anchor:在训练时给我们一个基准框,在训练过程中,往基准框上进行拟合
即:最可能出现的,出现最多的框的形状找出来,这样更适用于数据集,基础框越好,学的更快,损失下降快,精度也提升明显
可以用默认的,但是默认的一半拟合效果都不好

具体做法
转换成voc数据集
加载
拿出来所有框,找到出现最多的

最后算一下聚类出来的和算出来的哪个好

也可以在使用时,先检验他的好不好,不好了再生成我自己的,好的话直接用他的。但是注意这个好坏的阈值
在多层特征上进行预测,每一层有3个默认的anchor,每个grid cell(每个小块)有3个默认的anchor,每个anchor负责学习不同形状,每个框只负责他预测的,互不干扰。3层的框的大小完全不一样,因为在特征图金字塔上,浅层特征小的物体,即小框,反之则是大物体,即大框。
聚类之后发现只有小框没大框,因此只聚类6个框,剩下那层直接用默认的吧

4、bbox regression loss

在这里插入图片描述
在这里插入图片描述
第一个loss是算x、y、h、w四个点进行位置回归损失,是距离的公式
第二个iou loss,算map是精度指标是iou,他是个整体,计算损失时,按独立算,其实是相关联的。实际算时加iou损失到总损失
第三个giou loss,由于iou loss中两个框没重合,iou就是0,不能衡量,因此出现giou loss
生成第三个包围框,可以预测到预测框和真实框之间有多远
第四个diou loss,预测到的框可能完全包围了Bbox,也不能衡量了,
计算包围框的对角线距离,能得到包围框有多大,再算两个框的中心点距离,可以知道两个框是如何重叠的,距离怎样
第五个ciou loss,考虑预测框和Bbox的宽和高考虑进去

3、后面优化的方向

1、重叠问题

1、ciou缓解
2、mixup缓解
3、repulsion loss(行人检测的问题)
在这里插入图片描述
这个损失考虑:(SSD实现了)
不仅要离预测框越来越近,还要彼此之间越来越远

2、测试集中没小麦头的图片

全是背景的小麦头做优化
在主网络边上接一个小网络。如果有目标,再输进去,没有就算了。先分类再检测
mmdetection

问题

1、softNMS,diouNMS测试时用
2、给的代码换了head的yolo5,一般换backbone,一般保证预训练模型可用,一般别改原来的,加一条线,如加FPN,SE模块等,SSD基础上加语义分割的思想,做一个激活的作用,辅助目标检测。backbone后再加一个检测网络。
3、pl 伪标签 tta 测试时增强(test time augmentation, TTA)
4、panet 是检测网络
5、plabel
6、BottleneckCSP

第四课

在这里插入图片描述
说明:
1、每个模型可能对感兴趣的地方不一样,因此融合是有用的
2、TTA:测试时,进行数据增强,数量多了,效果肯定会好
3、oof:经过一些操作,可以得到一些合适的分数,来平衡recall和precision
对生成的框做删选。分设置高,recall就低了。分设置低,precision就低了
4、wbf:重复的框处理一下
这些tricks是可插拔的,用就好,不用也可以

1、Pseudo-labelling伪标签

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
改进版,循环训练网络
创新班,加权损失

可以选择分高的,阈值高的进行plabel,这样效果应该更好

2、model ensemble

在这里插入图片描述
A:不同epoch,学到的不一样
B:不同fold,不同的数据集,学到的不同
C:不同参数,学习效率不同,学到的不一样

A:一般使用并集后,再去重
随机森林投票之类的可以用起来

一般融合的都比较好,也有可能之间存在排斥,不好,说不准

3、TTA

测试时的数据增强
一般用翻转,旋转等,简单点的。难的话可能模型就不认识了
在这里插入图片描述

4、OOF

寻找最优scorethreshold
在这里插入图片描述
算不同阈值的map,覆盖最好的阈值下的map,最终留下最好的map时的阈值,就删选出想要的那个了

实现:
先把验证集的真实框和预测框拿出来
一个大循环,分数阈值设置为0-1,
拿出来所有的GT
wbf去重
拿出来的预测框和真实框进行求map
判断

5、WBF

在这里插入图片描述
在这里插入图片描述
实现:
去掉离谱框
不同model有不同权重
排序,留高的
在这里插入图片描述

不重叠的先放进去,重叠的,进行加权求一个新结果,标签,置信度一样,加权结果存下来,没加权重叠的两个算一个整体

与nms相比,原来的都扔了iou高的现在是去重,融合,变更好的框
可以说是nns的改进,作用一样

1、加权融合权是人(nni可以)指定的,权重也可以不考虑
2、plabel、wbf、oof可以用在工业上,不耗时间。tta,model ensemble不适合,太耗时

学习中的细节忽略

1、K fold交叉验证,选一折为验证集,其他折为训练集。需要训练k-1次
2、weight_decay是正则化、b不需要正则,只需要把w正则即可
layer_norm、batchNorm也不需要加正则
3、optimizer(优化算法)与学习策略schedule(学到差不多改变学习率)迭代神经网络参数的方法
4、dropout、batchnormalize训练和验证是不一样的执行。
5、训练loss不下降、验证loss不下降,需要调低学习率在这里插入图片描述
6、有标签就可以算map
验证集的map

学习笔记,有点多,可能有些理解不到位,欢迎批评指正或者交流

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值