本项目是一个基于深度学习的多光谱图像病害检测与严重程度分级系统。系统能够处理大尺寸TIFF图像,自动进行切片、健康/疾病分类、严重程度分级,并生成可视化结果。
- 支持多光谱TIFF图像加载
- 自动检测和处理nodata区域
- 智能图像切片,避免无效区域参与计算
- 基于CNN的二分类模型
- 自动跳过无效切片,提高处理效率
- 支持预训练模型加载
- 对疾病切片进行6级严重程度分类
- 注意:当前的6级分类仅代表不同类别,不代表数值高低关系
- 后续将进行语义对齐,建立等级间的有序关系
- 生成彩色分级结果图
- 无效区域显示为白色背景
- 提供带图例的可视化结果
- 生成详细的处理统计报告
ms-pd-detect/
├── full_pipeline.py # 完整处理流水线
├── image_classifier.py # 健康/疾病分类器
├── severity_classifier.py # 严重程度分级器
├── requirements.txt # 依赖包列表
├── 水稻所地块裁剪15m.tif # 示例输入图像
└── outputs/ # 输出目录
├── run_*/ # 健康/疾病分类模型输出
├── severity_run_*/ # 严重程度分级模型输出
└── full_pipeline_*/ # 完整流水线输出
pip install -r requirements.txt主要依赖包:
- torch
- torchvision
- opencv-python
- numpy
- matplotlib
- tifffile
- scikit-learn
- tqdm
- seaborn
python full_pipeline.py这将执行完整的处理流程:
- 加载大图像并检测nodata区域
- 智能切片(跳过无效区域)
- 健康/疾病分类
- 疾病严重程度分级
- 生成可视化结果
# 训练健康/疾病分类器
python image_classifier.py
# 训练严重程度分级器
python severity_classifier.py每次运行完整流水线会在 outputs/full_pipeline_YYYYMMDD_HHMMSS/ 目录下生成:
results/classification_result.png- 分级结果图visualization/result_with_legend.png- 带图例的结果图results/processing_summary.json- 处理统计报告classified/- 分类后的切片文件severity_graded/- 分级后的切片文件tiles/- 原始切片文件
- 白色: 无效区域(nodata)
- 绿色: 健康区域
- 红色系: 疾病区域(不同深度代表不同严重程度类别)
- 完整光谱信息: 支持蓝、绿、红、红边、近红外5个波段,充分利用多光谱数据的光谱特征
- 自动通道扩展: 对于少于5通道的数据,自动进行通道扩展以保持模型兼容性
- 优化的归一化: 针对5通道数据扩展了归一化参数,提高模型训练稳定性
- 直接numpy处理: 对于5通道数据,跳过PIL转换,直接处理numpy数组,避免数据损失
- 灵活的数据格式支持: 同时支持TIFF多光谱数据和常规RGB图像
- 标签一致性保证: 确保训练和预测阶段使用相同的标签映射
当前分级效果不佳的主要原因:
- 分级训练时未屏蔽背景噪音
- 有无背景噪音的样本被拉大了特征距离
- 导致模型学习到了背景特征而非病害特征
改进方案:
- 在训练严重程度分级器时,需要预处理数据以屏蔽背景噪音
- 使用掩码技术只关注前景病害区域
- 数据增强时保持背景一致性
当前状态:
- 6个等级(Level_1 到 Level_6)仅代表不同类别
- 等级间没有明确的严重程度顺序关系
后续工作:
- 进行语义对齐,建立等级间的有序关系
- 重新标注数据,确保等级反映真实的严重程度
- 使用序数回归等技术改进模型
- 多光谱数据支持:完整支持5波段多光谱数据(蓝、绿、红、红边、近红外),充分利用光谱信息提高分类精度
- 智能无效区域处理:自动检测TIFF文件中的nodata值,避免无效区域参与计算
- 内存优化:大图像切片处理,支持任意尺寸输入
- 模型复用:支持预训练模型加载,避免重复训练
- 完整流水线:从原始图像到最终可视化的一站式处理
- 详细统计:提供完整的处理统计和性能指标
- 无效切片跳过:大幅减少计算量(从6270个切片减少到约2814个有效切片)
- GPU加速:支持CUDA加速推理
- 批处理:支持批量图像处理
- 进度显示:实时显示处理进度
- 数据格式:
- 推荐使用TIFF格式的5波段多光谱数据(蓝、绿、红、红边、近红外)
- 支持3通道RGB数据(会自动扩展为5通道)
- 支持单通道灰度数据(会自动复制为5通道)
- 波段顺序: 确保多光谱数据的波段顺序为:蓝、绿、红、红边、近红外
- 内存使用: 大图像处理时注意内存使用情况
- GPU内存: 使用GPU时确保显存充足
- 模型兼容性: 新版本模型使用5通道输入,与旧版本3通道模型不兼容,需要重新训练
- 标签一致性: 确保训练和预测时使用相同的标签映射(diseased=0, healthy=1)
- 首次运行需要训练模型,后续可直接使用预训练模型
- 建议使用GPU加速以提高处理速度
- 输出目录会自动创建,注意磁盘空间
本项目使用PyTorch框架开发,支持Python 3.7+环境。如有问题或建议,请联系开发团队。
版本: v1.0
最后更新: 2025-07-30