• 整理极客冠军方案


    总结

    通常套路就是
    (1)先观察整体的数据分布(数据集数量,标签数量,标注框数量)

    • ①数据集数量:数量大,大模型训练缓慢
    • ②标签数量:各类的分布情况—>分布是否平衡
      focal损失函数:长尾分布(样本分布不均衡)
      mosaic:小目标相对较多。mosaic大大丰富了检测数据集,特别是随机缩放增加了很多小目标,让网络的鲁棒性更好;
    • ③各类的平均数量
      SAM优化器:增加泛化能力,避免过拟合

    (2)数据特点

    • 遮掩严重:
      varifocal loss损失函数
      soft-nms
    • 数据集的尺寸

    (3)训练策略

    (4)性能优化

    一. 占道经营检测

    ECV 2021 冠军方案解读

    (1)模型选择

    anchor-based:

    1)优点:加入了先验知识,模型训练相对稳定;密集的anchor box可有效提高召回率,对于小目标检测来说提升非常明显

    2)缺点:对于多类别目标检测,超参数scale和aspect ratio相对难设计;冗余box非常多,可能会造成正负样本失衡;在进行目标类别分类时,超参IOU阈值需根据任务情况调整。

    anchor-free:

    1)优点:计算量减少;可灵活使用。

    2)缺点:存在正负样本严重不平衡;两个目标中心重叠的情况下,造成语义模糊性;检测结果相对不稳定。

    基于优点与缺点最终选择了yolov5

    (2)根据数据集选择合适的处理方案

    1)优化器

    在这里插入图片描述

    SAM优化器

    • 问题:许多网络可以很容易地记住训练数据并有能力随时overfit,为了防止这个问题,增强泛化能力
    • SAM优化器特点:
    • 它与其他常见的优化器一起使用

    2)损失函数

    Varifocal Loss损失函数
    使用该loss来缓解目标遮挡造成漏检现象。并且与focal loss不同,varifocal loss是不对称对待正负样本所带来的损失。

    3)冻结训练

    具体训练方案是:1)常规训练;2)加入冻结模块的分步训练1;3)加入冻结模块的分步训练2。

    其实我还在思考冻结训练中每一步的意义???
    在这里插入图片描述

    二. 沿街晾晒识别

    这一篇给我看出了一种应试考试的感觉

    (1)标签数量不均衡

    数据增强用Mosaic数据增强 + 损失函数用Focal loss
    这也是应对数据不均衡比较常规的想法,而且都很有效。

    Focal loss

    关于Focal loss的详细内容可以参考这篇博客

    (2) TensorRT

    (3)训练策略

    它的训练策略分三段

    三. 反光衣识别

    这一篇比较重代码和逻辑推演过程

    对于yolov5的理解

    1.第一层取消了Focus,采用卷积核大小为6,步长为2的卷积层代替。
    yolov5官方解答,Focus() 是用来降低FLOPS的,跟mAP无关。Focus模块在v5中是图片进入backbone前,对图片进行切片操作,具体操作是在一张图片中每隔一个像素拿到一个值,类似于邻近下采样,这样就拿到了四张图片,四张图片互补,输入通道扩充了4倍,即拼接起来的图片相对于原先的RGB三通道模式变成了12个通道,最后将得到的新图片再经过卷积操作,最终得到了没有信息丢失情况下的二倍下采样特征图。

    2.更改backbone的基本单元BottleneckCSP为c3模块。
    在新版yolov5中,作者将BottleneckCSP(瓶颈层)模块转变为了C3模块,其结构作用基本相同均为CSP架构,只是在修正单元的选择上有所不同,其包含了3个标准卷积层以及多个Bottleneck模块(数量由配置文件.yaml的ndepth_multiple参数乘积决定)从C3模块的结构图可以看出,C3相对于BottleneckCSP模块不同的是,
    经历过残差输出后的Conv模块被去掉了
    ②concat后的标准卷积模块中的激活函数也由LeakyRelu变味了SiLU
    在这里插入图片描述

    ①C3模块

    ②BottleNeckCSP模块

    3.更改Leaky_Relu激活函数为SiLU激活函数
    作者在CONV模块(CBL模块)中封装了三个功能:包括卷积(Conv2d)、BN以及Activate函数(在新版yolov5中,作者采用了SiLU函数作为激活函数),同时autopad(k, p)实现了padding的效果。

    4.SPP更改为SPPF(Spatial Pyramid Pooling - Fast), 结果是一样的,但是可以降低FLOPS,运行的更快。

    冻结

    感觉这一篇偏重实际,写的很清晰。
    在这里插入图片描述

    四.渣土车识别方案

    渣土车识别方案

    整体架构:
    在这里插入图片描述

    匈牙利算法

    出现了这个新名词

    五.农作物病虫害识别&垃圾分类识别

    师出同门,可以看出很明显的侧重于落地性
    垃圾分类识别
    农作物病虫害识别

    六.快递爆仓识别算法

    久违的看见一篇是分割做的。
    分割玩的太少了,再了解一下

    七.短袖短裤识别

    这一篇思路很清晰,不过细节部分的呈现偏少。

    YOLOv5 的 TensorRT C++ 部署代码推荐参看 https://github.com/wang-xinyu/tensorrtx/tree/master/yolov5

    感觉后面的代码都是千篇一律不细写了
    解析了yolov5

  • 相关阅读:
    相机、雷达、ROS坐标系之间的关系
    rust 生命周期的问题请教 slqx fromRow的问题
    深度神经网络基础知识
    靶向用药mPEG-DSPE 甲氧基-聚乙二醇-磷脂酰乙醇胺 CAS:178744-28-0
    【PTA】比较大小
    RLHF的替代算法之DPO原理解析:从Zephyr的DPO到Claude的RAILF
    QGIS编译(跨平台编译)之五十一:qgis_native库在Qt Creator环境下编译的错误处理
    windows 上 python open函数打开文件夹报错提示权限不足
    栈:01背包问题(带价值) 栈解法/回溯算法 递归算法【C语言,数据结构】(内含源代码)
    IDEA生成Java Doc帮助文档
  • 原文地址:https://blog.csdn.net/weixin_50862344/article/details/126329979