这个数据集专注于小白菜叶片的健康状态识别,包含1863张标注图片,采用Pascal VOC和YOLO两种格式同步存储。作为农业AI应用的典型范例,它特别适合植物病害识别、精准农业等场景的模型训练。
数据集的核心价值在于:
重要提示:数据集未预设训练/验证/测试集划分,使用者需自行处理数据分割。原始图片经过旋转增强处理,这在实际应用中能有效提升模型泛化能力。
数据集文件结构遵循标准计算机视觉数据集格式:
code复制dataset_root/
├── images/ # 存放所有JPG图片
├── annotations/ # 存放VOC格式XML文件
├── labels/ # 存放YOLO格式TXT文件
└── classes.txt # YOLO类别定义文件
图像分辨率呈现多样性,主要分布在:
标注采用labelImg工具完成,标注规则包括:
标注统计特征:
原始数据已应用的基础增强:
推荐补充的增强方案:
python复制# Albumentations增强配置示例
transform = A.Compose([
A.RandomRotate90(),
A.RandomBrightnessContrast(p=0.5),
A.HueSaturationValue(hue_shift_limit=20),
A.CLAHE(clip_limit=4.0),
A.GaussNoise(var_limit=(10.0, 50.0)),
], bbox_params=A.BboxParams(format='yolo'))
考虑到类别不平衡问题,推荐采用分层抽样:
实现代码示例:
python复制from sklearn.model_selection import train_test_split
# 先按类别分离
healthy_imgs = [...] # 健康样本路径列表
unhealthy_imgs = [...] # 病害样本路径列表
# 分层划分
healthy_train, healthy_temp = train_test_split(healthy_imgs, test_size=0.2)
unhealthy_train, unhealthy_temp = train_test_split(unhealthy_imgs, test_size=0.2)
healthy_val, healthy_test = train_test_split(healthy_temp, test_size=0.36)
unhealthy_val, unhealthy_test = train_test_split(unhealthy_temp, test_size=0.36)
针对健康/病害样本1:2.47的比例,推荐组合策略:
python复制# YOLOv5中的类别权重设置
class_weights = [1.0, 0.4] # 健康:病害
基于实际测试的推荐配置:
yaml复制# YOLOv5模型配置
hyperparameters:
lr0: 0.01 # 初始学习率
lrf: 0.1 # 最终学习率系数
momentum: 0.937
weight_decay: 0.0005
warmup_epochs: 3
box_loss_gain: 0.05
cls_loss_gain: 0.5
实测建议:当验证集mAP@0.5连续3个epoch无提升时,提前终止训练。农业图像通常需要100-150epoch的训练周期。
症状:同一病害在不同图片中被标注为不同类别
解决方案:
python复制def check_annotation_consistency(ann_dir):
# 实现标注逻辑检查
pass
症状:小型病害斑点检测率低
优化方案:
症状:训练集精度高但验证集表现差
解决方法组合:
针对农业现场部署的特殊考量:
建立数据闭环系统:
实际部署中发现,田间光线变化会显著影响模型表现。建议在数据收集中包含不同时段(早晨/正午/傍晚)的样本,并在训练时添加随机光照增强。