农作物病害识别

在AICHANLENGER2018农作物病害识别挑战赛中,通过对近5万张植物叶片照片进行分类,解决多分类问题。面对数据不平衡和标签错误,采用数据增强和迁移学习策略,使用Inception-V3和Inception-ResNet-V2模型,最终成绩进入前20%。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

农作物病害识别挑战赛

AI CHANLENGER 2018 上实验赛道的比赛,农作物病害检测,对近5万张按“物种-病害-程度”分成61类的植物叶片照片进行分类,是一个多分类的问题。难点在数据样本不平衡,有一些类的样本太少,甚至没有,标签也有部分错误。

比赛在2018年8月29开始,到11月11日结束,在国庆期间做了一下,一直在关注,但是没有投入太多精力,还有其他事情。

数据分析

拿到数据后首先进行分析,数据如下图所示,并不复杂,背景简单。
图1图2
使用python绘图库对数据样本种类、数量进行了统计,结果如图所示:
训练集:
train
验证集:
val
训练集+验证集:
train+val
统计结果:
统计结果
可以看出,训练集与验证集样本类别分布不均,但是分布大致相同,第44、45类训练集中分别只有一张图片,验证集分别有1、0张,所以为了提高准确率,我们直接剔除这两类。

数据增强

病害识别与颜色等有关,所以只做了旋转、翻转等变换

  • 左右翻转
  • 上下翻转
  • 随机旋转
  • 随机crop
  • 高斯噪声
  • 亮度变化

模型

迁移学习,首先尝试了Inception-V3,直接使用pool_3层的输出,接上一个全连接的分类层,使用softmax进行分类,使用Inception-V3的默认输入,可以达到 0.81 左右的准确率。
GoogleNet的思想是通过Inception结构增加增加网络的宽度,这样可以在保证网络性能的情况下减少网络的深度,减少计算量。下图是Inception-V1的结构, 1 × 1 1 \times 1 1×1 的卷积用来跨通道组织信息,实现降维操作,分别用了 3 × 3 3\times 3 3×3 5 × 5 5 \times 5 5×5 的卷积核,感受野不同,最后进行拼接相当于不同尺度特征的融合。
卷积核分别为 1 × 1 , 3 × 3 , 5 × 5 1 \times 1,3\times 3,5 \times 5 1×13×35×5,在步长设置为1,pad分别设置为0,1,2的情况下可以在卷积后得到相同维度的特征,实现不同尺度特征的汇聚拼接。
inception-v2
在后面的改进中,将 5 × 5 5 \times 5 5×5 的卷积核替换为了两个 3 × 3 3 \times 3 3×3 的卷积核,可以在感受野不变的情况下减少计算量。

Inception-ResNet-V2: 将主干网络更换为Inception-ResNet-V2,准确率达到 0.88上下,也是最终成绩,勉强进入前20%。
Inception-ResNet-V2 中加入了ResNet的恒等映射思想,进一步减少计算量,防止过拟合、梯度饱和、梯度消失/爆炸。
inception-resnet-v2

优化思路

  • 增大输入图像尺寸:在交流群中有人使用ResNet-50,650宽高的输入,取得了较好的成绩;
  • 模型集成:使用几个不同的模型,建立一个投票机制,增加准确率,在实际应用中没有意义,但可以刷分使用;
  • 平衡样本:目前只剔除了样本过少的两类,但是没有平衡样本,可以通过对数据集重采样(对大类欠采样,对小类过采样)平衡类别;

收获

  • 这算是自己独立完成的第一个竞赛,入了个门,为kaggle等做个铺垫;
  • 代码能力提升,对tensorflow的熟练程度增加;
  • 对各种超参的理解进一步加深;
  • 对迁移学习理解加深,对 pre-trained model 使用熟练度增加;

不足

  • 还没有自己的东西,停留在搬运阶段;
  • 测试的模型也不够多;
  • 没有尝试模型级联;

程序

代码见github,等待高分大佬开源后也会继续整理在github中。
数据集:百度网盘

评论 106
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值