叶菜病虫害图像识别赛题笔记——科大讯飞2021届AI开发者大赛算法赛答辩

文章目录

  • 叶菜病虫害图像识别
    • 数据集
      • 图像增强
        • 3组
        • 2组
        • 1组
    • 3组
      • 总体方案
        • stage1:二分类+细粒度
          • 一和二三
          • 二和三
        • stage2:transformer+半监督
        • stage3:模型集成
      • Tricks Summary
        • 类别不平衡
        • 样本数量较少
        • 输入尺度变化大
        • 其他
      • Future
        • 主干网络
        • 细粒度
        • 半监督学习
      • 问题
    • 二组
      • 模型选择
      • 测试
      • Future
      • 问题
    • 三组
      • 模型选择
      • Tricks
      • 问题

叶菜病虫害图像识别

数据集

  1. 训练集1103,测试集210,训练集较少
  2. 轻微类别不平衡,类间区分度低,类内差异大
  3. 样本分辨率差异大,背景复杂
  4. 图片的均值与方差,其绿色通道均值偏大

图像增强

3组

  1. 归一化
  2. 网格随机排序,强迫模型关注随机区域,利于细粒度分类
  3. 细粒度随机丢弃

2组

  1. 使用OpenCV对训练集进行主要目标检测,减少干扰信息,裁剪得到新的图片(涨了4个点)
  2. 裁剪后的图像同类的两张进行拼接,按照0.9:1进行混合相加的图像作为新的训练数据。扩增到3000多张
  3. 在线增强随机翻转等等
  4. 参照样本高宽比,最后选择H=960,W=732输入网络

1组

  1. 输入图像大,识别效果好
  2. 数据增强randaug(N=3,M=9),适用于细粒度分类,涨点明显

3组

总体方案

stage1:二分类+细粒度

一和二三
  1. 原因:第一类相比二三类难以区分,所以把二三合成一个类别,进行二分类
  2. 模型:SE-ResNetXt 101
    1. SE区分不同通道的重要性,从而帮助细粒度特征更好识别
  3. tricks:
    1. 五折交叉验证训练模型
    2. 大量的数据增强
    3. 数据重采样以保证类别平衡
    4. 1080 * 1080分辨率输入
二和三
  1. 原因:病变区域占整张图片比例较小,二、三两种种疾病差别不大,所以进行细粒度分类
  2. 模型:ResNet 101为主干的MMAL-Net
    1. 由注意力机制裁剪出目标图像区域
    2. 由目标图像区域提取差异较大的特征进行区分(热力图)
    3. 人工标注病害区域
  3. tricks:
    1. 数据增强
    2. Label smooth防止过拟合
    3. 人脸分类中的损失函数A-softmax

stage2:transformer+半监督

  1. 原因:训练集样本数量较少
  2. 模型:Swin Transformer
    1. 建立长距离依赖关系,关注全局信息
    2. 相比CNN需要更大的数据集进行训练。因此使用stage 1的模型生成部分伪标签(Pesudo Lable),对swin进行适当训练后,再进行伪标签的自更新

stage3:模型集成

  1. 先对上述三个模型进行TTA测试增强(随机放大,随机旋转翻转)
  2. 再对他们的结果进行结合。把SE-ResNet与swing Transformer的结果进行合并,与MMAL-Net进行加权平均
  3. 最后进行集成消融试验

Tricks Summary

类别不平衡

  1. 数据重采样

样本数量较少

  1. 大量数据增强防止过拟合
  2. 伪标签扩大样本数
  3. K折交叉验证增强鲁棒性

输入尺度变化大

  1. 统计选择合适的输入分辨率
  2. TTA多尺度预测增强鲁棒性

其他

  1. Label Smooth
  2. 细粒度识别
  3. Vision Transformer
  4. 预热+余弦退火+周期重启的学习率设置

Future

主干网络

LR-Net,CoTNet,BoTNet

细粒度

TransFG、AFTrans

半监督学习

Pseudo-Label,LPA

问题

  1. 细粒度网络还算容易训练
  2. 热力图,梯度图证明网络用处(细粒度)
  3. 半监督训练(第一批测试集无Groung Truth)。Pseudo-Label伪标签涨点明显
  4. CNN算法是监督算法,有标签。半监督,将测试集扩充到数据集(无标签)
  5. 精度和召回率都很重要
  6. 端到端指的是输入是原始数据,输出是最后的结果;非端到端的输入端不是直接的原始数据,而是在原始数据中提取的特征。但是提取特征很困难,所以出现了端到端网络,特征可以自己去学习,特征提取融入到算法当中,不需要人来干预。

二组

模型选择

ResNet-50 IBNA,相比ResNet-50增加的计算量不多,性能有部分提升,速度较快

测试

测试过程使用一次TTA,裁剪后的测试图片的测试结果+原始测试图片垂直翻转后的测试结果,按5:4相加

Future

  1. 先训练一个性能好但复杂的模型,然后使用知识蒸馏获取一个精度与速度达到平衡的模型
  2. 使用GAN进行数据增广

问题

  1. 可以把类内或类间的图片进行拼接然后贴标签,然后做预训练
  2. 数据集处理很重要

三组

模型选择

ResNet50与EfficientNet B3融合(权重0.5与1),13folds。模型融合涨点明显

Tricks

  1. Label Smooth
  2. 伪标签
    1. 硬标签:易于获得。丢失类内、类间关联;过拟合;对噪声敏感;增加鲁棒、泛化风险
    2. 软标签:更强的泛化能力;携带更多的信息;对层级数据、噪声标签、long-tail(少数类即头类占用大部分数据,而大多数类尾类只有少量的数据)相对鲁棒。难以获得
  3. 迁移学习不适合,梯度爆炸

问题

  1. 13folds运算量下降,但是准确度提高

你可能感兴趣的:(人工智能,算法,计算机视觉)