10种农作物叶子病害图像的数据集,注意是分类数据集,标注图片5万张,包含10种植物(苹果、樱桃、葡萄、柑桔、桃、草莓、番茄、辣椒、玉米、马铃薯)的27种病害,合计61个分类(按“物种-病害-程度”分)

10种农作物叶子病害图像的数据集,注意是分类数据集,标注图片5万张,包含10种植物(苹果、樱桃、葡萄、柑桔、桃、草莓、番茄、辣椒、玉米、马铃薯)的27种病害,合计61个分类(按“物种-病害-程度”分),并附keras训练代码

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

数据集概览
  • 图像数量: 50,000张
  • 类别数量: 61个(按“物种-病害-程度”划分)
  • 植物种类: 10种(苹果、樱桃、葡萄、柑桔、桃、草莓、番茄、辣椒、玉米、马铃薯)
  • 病害种类: 27种
  • 任务类型: 图像分类
  • 格式: 标注图片,每个类别都有对应的标签
植物和病害分类

该数据集涵盖了10种常见农作物的叶子,并针对每种植物的不同病害进行了详细的分类。以下是具体的植物和病害分类:

植物种类:

  1. 苹果 (Apple)
  2. 樱桃 (Cherry)
  3. 葡萄 (Grape)
  4. 柑桔 (Citrus)
  5. 桃 (Peach)
  6. 草莓 (Strawberry)
  7. 番茄 (Tomato)
  8. 辣椒 (Pepper)
  9. 玉米 (Corn)
  10. 马铃薯 (Potato)

病害种类:

  • 每种植物有多种病害,总共27种不同的病害。
  • 每种病害还根据病害的程度进行细分,形成最终的61个分类。
数据集结构

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

plant_disease_dataset/
├── train/
│   ├── Apple___Apple_scab_severe
│   ├── Apple___Black_rot_moderate
│   ├── ...
│   └── Potato___Early_blight_severe
├── val/
│   ├── Apple___Apple_scab_severe
│   ├── Apple___Black_rot_moderate
│   ├── ...
│   └── Potato___Early_blight_severe
├── test/
│   ├── Apple___Apple_scab_severe
│   ├── Apple___Black_rot_moderate
│   ├── ...
│   └── Potato___Early_blight_severe
└── labels.txt
  • train/val/test/ 目录分别存放训练集、验证集和测试集的图像。
  • 每个子目录对应一个具体的分类,例如 Apple___Apple_scab_severe 表示苹果上严重的苹果黑星病。
  • labels.txt 文件列出了所有类别的名称及其对应的索引。
labels.txt 文件示例
 

plaintext

深色版本

0,Apple___Apple_scab_severe
1,Apple___Black_rot_moderate
...
60,Potato___Early_blight_severe
使用场景
  • 病害识别: 用于自动识别不同农作物上的病害类型及严重程度。
  • 农业监测: 帮助农民和研究人员快速发现并处理作物病害问题。
  • 智能农业: 结合其他技术如无人机监控,实现大规模农田的自动化管理。
Keras 训练代码示例

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

import os
import numpy as np
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.applications.resnet50 import ResNet50
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D
from tensorflow.keras.models import Model
from tensorflow.keras.optimizers import Adam

# 数据集路径
data_dir = '/path/to/plant_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'
)

# 加载预训练的ResNet50模型
base_model = ResNet50(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(61, activation='softmax')(x)  # 61个类别

# 构建最终模型
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()

# 训练模型
history = model.fit(
    train_generator,
    steps_per_epoch=len(train_generator),
    epochs=10,
    validation_data=val_generator,
    validation_steps=len(val_generator)
)

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

这段代码展示了如何加载数据、构建模型、编译模型以及训练模型。你可以根据实际需要调整参数和模型结构。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值