农作物病虫害图像分类数据集 腰果,木薯,小麦,番茄病虫害数据集,6.5GB。包括102,976张图像22类。

 

腰果,木薯,小麦,番茄病虫害数据集,6.5GB。包括102,976张图像(25,811张腰果、26,330张木薯、23,657张玉米和27,178张番茄),分为22个类别。所有图像均经过去标识化处理,由专业植物病毒学家验证,Cashew(腰果)有5个类别:炭疽病、树胶病、健康的、叶蛀虫和红锈病。Cassava(木薯)有5个类别:细菌性斑点病、褐斑病、绿色螨、健康的和马赛克病。Maize(小麦)有7个类别:秋粉虫、蝗虫、健康的、叶甲、叶斑病、叶斑和条纹病毒。Tomato(番茄)也有5个类别:健康的、叶斑病、叶卷曲、斑点病和青枯病。

农作物病虫害图像分类数据集介绍

数据集概览
  • 总大小: 6.5GB
  • 图像数量: 102,976张
    • 腰果 (Cashew): 25,811张
    • 木薯 (Cassava): 26,330张
    • 小麦 (Maize): 23,657张
    • 番茄 (Tomato): 27,178张
  • 类别数量: 22个
  • 任务类型: 图像分类
  • 去标识化处理: 所有图像均经过去标识化处理
  • 验证: 由专业植物病毒学家验证
类别划分
  • 腰果 (Cashew):

    1. Anthracnose(炭疽病)
    2. Gummosis(树胶病)
    3. Healthy(健康的)
    4. Leaf miner(叶蛀虫)
    5. Red rust(红锈病)
  • 木薯 (Cassava):

    1. Bacterial blight(细菌性斑点病)
    2. Brown spot(褐斑病)
    3. Green mite(绿色螨)
    4. Healthy(健康的)
    5. Mosaic disease(马赛克病)
  • 小麦 (Maize):

    1. Fall armyworm(秋粉虫)
    2. Grasshopper(蝗虫)
    3. Healthy(健康的)
    4. Leaf beetle(叶甲)
    5. Leaf spot(叶斑病)
    6. Rust(叶斑)
    7. Stripe virus(条纹病毒)
  • 番茄 (Tomato):

    1. Healthy(健康的)
    2. Leaf spot(叶斑病)
    3. Leaf curl(叶卷曲)
    4. Spotted wilt(斑点病)
    5. Bacterial wilt(青枯病)
数据集结构

假设数据集文件夹结构如下:

crop_disease_dataset/
├── train/
│   ├── Cashew_Anthracnose
│   ├── Cashew_Gummosis
│   ├── ...
│   └── Tomato_Bacterial_wilt
├── val/
│   ├── Cashew_Anthracnose
│   ├── Cashew_Gummosis
│   ├── ...
│   └── Tomato_Bacterial_wilt
├── test/
│   ├── Cashew_Anthracnose
│   ├── Cashew_Gummosis
│   ├── ...
│   └── Tomato_Bacterial_wilt
└── labels.txt
  • train/val/test/ 目录分别存放训练集、验证集和测试集的图像。
  • 每个子目录对应一个具体的分类,例如 Cashew_Anthracnose 表示腰果的炭疽病。
  • labels.txt 文件列出了所有类别的名称及其对应的索引。
labels.txt 文件示例
0,Cashew_Anthracnose
1,Cashew_Gummosis
2,Cashew_Healthy
3,Cashew_Leaf_miner
4,Cashew_Red_rust
5,Cassava_Bacterial_blight
6,Cassava_Brown_spot
7,Cassava_Green_mite
8,Cassava_Healthy
9,Cassava_Mosaic_disease
10,Maize_Fall_armyworm
11,Maize_Grasshopper
12,Maize_Healthy
13,Maize_Leaf_beetle
14,Maize_Leaf_spot
15,Maize_Rust
16,Maize_Stripe_virus
17,Tomato_Healthy
18,Tomato_Leaf_spot
19,Tomato_Leaf_curl
20,Tomato_Spotted_wilt
21,Tomato_Bacterial_wilt
使用场景
  • 病害识别: 用于自动识别不同农作物上的病害类型。
  • 农业监测: 帮助农民和研究人员快速发现并处理作物病害问题。
  • 智能农业: 结合其他技术如无人机监控,实现大规模农田的自动化管理。
Keras 训练代码示例

以下是一个使用Keras框架进行模型训练的代码示例。我们将使用预训练的EfficientNetB0模型作为基础,并在其上添加全连接层来进行分类。

import os
import numpy as np
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.applications.efficientnet import EfficientNetB0
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D
from tensorflow.keras.models import Model
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint

# 数据集路径
data_dir = '/path/to/crop_disease_dataset'
train_dir = os.path.join(data_dir, 'train')
val_dir = os.path.join(data_dir, 'val')

# 图像生成器
datagen = ImageDataGenerator(
    rescale=1./255,
    rotation_range=20,
    width_shift_range=0.2,
    height_shift_range=0.2,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True,
    fill_mode='nearest'
)

# 训练集生成器
train_generator = datagen.flow_from_directory(
    train_dir,
    target_size=(224, 224),
    batch_size=32,
    class_mode='categorical'
)

# 验证集生成器
val_generator = datagen.flow_from_directory(
    val_dir,
    target_size=(224, 224),
    batch_size=32,
    class_mode='categorical'
)

# 加载预训练的EfficientNetB0模型
base_model = EfficientNetB0(weights='imagenet', include_top=False, input_shape=(224, 224, 3))

# 添加全局平均池化层
x = base_model.output
x = GlobalAveragePooling2D()(x)

# 添加全连接层
x = Dense(1024, activation='relu')(x)
predictions = Dense(22, activation='softmax')(x)  # 22个类别

# 构建最终模型
model = Model(inputs=base_model.input, outputs=predictions)

# 冻结基础模型的层
for layer in base_model.layers:
    layer.trainable = False

# 编译模型
model.compile(optimizer=Adam(lr=0.0001), loss='categorical_crossentropy', metrics=['accuracy'])

# 打印模型概要
model.summary()

# 设置回调函数
early_stopping = EarlyStopping(monitor='val_loss', patience=5, restore_best_weights=True)
checkpoint = ModelCheckpoint('best_model.h5', save_best_only=True, monitor='val_accuracy', mode='max')

# 训练模型
history = model.fit(
    train_generator,
    steps_per_epoch=len(train_generator),
    epochs=20,
    validation_data=val_generator,
    validation_steps=len(val_generator),
    callbacks=[early_stopping, checkpoint]
)

# 保存模型
model.save('crop_disease_classifier.h5')

# 可视化训练过程
import matplotlib.pyplot as plt

plt.figure(figsize=(12, 4))
plt.subplot(1, 2, 1)
plt.plot(history.history['accuracy'], label='Training Accuracy')
plt.plot(history.history['val_accuracy'], label='Validation Accuracy')
plt.legend()
plt.title('Accuracy')

plt.subplot(1, 2, 2)
plt.plot(history.history['loss'], label='Training Loss')
plt.plot(history.history['val_loss'], label='Validation Loss')
plt.legend()
plt.title('Loss')

plt.show()

代码说明

  1. 数据生成器:

    • 使用ImageDataGenerator进行数据增强,包括旋转、平移、剪切、缩放和水平翻转等操作。
    • train_generator 和 val_generator 分别为训练集和验证集生成器。
  2. 模型构建:

    • 使用预训练的EfficientNetB0模型作为基础。
    • 在其基础上添加全局平均池化层和全连接层。
    • 最后一层使用softmax激活函数,输出22个类别的概率分布。
  3. 模型编译:

    • 使用Adam优化器,学习率为0.0001。
    • 损失函数为交叉熵损失,评估指标为准确率。
  4. 模型训练:

    • 使用fit方法进行训练,设置早停机制和最佳模型保存。
    • 训练过程中会记录训练集和验证集的准确率和损失。
  5. 可视化:

    • 训练完成后,绘制训练集和验证集的准确率和损失曲线,帮助分析模型的训练效果。

希望这段代码对你有所帮助!如果有任何问题或需要进一步的帮助咨询博主留言。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值