wilgomoreira/c2f-sl-multispectral-segmentation

GitHub: wilgomoreira/c2f-sl-multispectral-segmentation

一个用于多光谱葡萄园分割的校准级联软标签生成框架,通过两阶段温度缩放校准提升分割精度和置信度可靠性。

Stars: 0 | Forks: 0

# C2F-SL:一种用于多光谱分割软标签生成的校准级联框架 本仓库包含 **C2F-SL** 的实验代码,这是一种 在多光谱分割中用于将硬监督替换为 生成器派生软目标的校准感知级联框架。 此代码附属于以下会议论文: C2F-SL 研究了校准的软标签生成与最终输出校准如何相互作用。该框架首先在硬 标注上训练生成器模型,校准其验证 logits,将校准后的 概率作为最终模型的软目标,然后对 最终模型输出应用独立的事后校准步骤。 ![在葡萄园数据集上拟合的温度缩放效果](https://static.pigsec.cn/wp-content/uploads/repos/cas/d9/d97536b0dccdad5cafcc9a0543eaebf1f8c455e37f8a393fe7ff32a95d15f772.png) ## 方法概述 C2F-SL 包含三个阶段: 1. **生成器训练**:在原始硬 标注上训练分割模型。 2. **校准的软标签生成**:在 生成器验证 logits 上拟合事后校准器,并为 训练图像生成每像素的软目标。 3. **最终模型训练与校准**:使用 生成的软目标训练第二个模型,然后 在验证集上校准其输出概率。 在论文实验中,两个校准阶段均使用了**Temperature Scaling**。 生成器和最终模型共享相同的基于 ResNet34 的架构,以便 将观察到的差异归因于监督和校准 pipeline,而不是模型容量。 ## 仓库结构 ``` configs/ YAML experiment configurations scripts/ Command-line entry points src/ Data loading, models, training, calibration, and evaluation requirements.txt README.md ``` 以下文件夹是在实验过程中生成的,并被 Git 忽略: ``` checkpoints/ Model weights logs/ Training logs results/ Metrics, summaries, and calibration metadata soft_labels/ Cached generated soft-label arrays splits/ Reused train/validation/test split files ``` ## 环境 创建环境并安装依赖项: ``` conda create -n c2f-sl python=3.10 conda activate c2f-sl pip install -r requirements.txt ``` 如果使用 CUDA,请在运行实验之前安装与您的 CUDA 版本匹配的 PyTorch 版本。 ## 数据集布局 此仓库不包含数据集。论文中使用的葡萄园数据派生自原始葡萄园分割研究发布的 **GREEN AI** 数据集: 在本地准备好切片后,在配置文件中设置数据集根目录: ``` dataset: base_path: /path/to/greenal_split ``` 预期布局: ``` greenal_split/ qbaixo/ altum/ images/*.tif masks/*.tif esac/ altum/ images/*.tif masks/*.tif valdoeiro/ altum/ images/*.npy masks/*.npy ``` 实验使用来自 Micasense Altum 传感器的 5 通道多光谱切片。切片被调整为 `224 x 224` 以用于训练和评估。 论文中报告的数据集统计信息: | 数据集 | 图像 | 前景 | 背景 | 不平衡性 | |---|---:|---:|---:|---| | VALDOEIRO | 150 | 7.5% | 92.5% | 严重 | | QBAIXO | 120 | 18.6% | 81.4% | 中等 | | ESAC | 189 | 23.3% | 76.7% | 轻微 | ## 运行 C2F-SL 论文的主要配置是 `configs/adaptive_smoothing.yaml`。该脚本 名称是历史遗留的;使用配置中的默认中性平滑设置, 以下命令将运行论文中使用的 C2F-SL pipeline。 ``` python3 scripts/run_adaptive_smoothing.py \ --config configs/adaptive_smoothing.yaml \ --datasets valdoeiro qbaixo esac \ --calibrator temperature \ --calibrate-student \ --student-calibrator temperature \ --run-name-prefix c2f_sl ``` 每个数据集都会在 `results/` 下创建一个结果目录。最重要的 文件是: ``` metrics.json Full metric payload metrics.csv One-row scalar metric table config.json Effective configuration calibrator.json Generator calibration metadata student_calibrator.json Final model calibration metadata training_logs.json Training histories ``` 可用时,数据集划分和生成的软标签会被重复使用。要强制 重新生成软标签,请删除 `soft_labels/` 下相应的 `.npy` 文件。 ## 组件消融实验 论文表格分离了四个组件:硬标签训练、输出 校准、原始生成器软标签、校准的生成器软标签,以及 完整的 C2F-SL pipeline。 ### 硬标签 硬标签基线对应于在 原始标注上训练的生成器/教师模型。它作为 C2F-SL 运行的一部分进行训练,并 通过其 checkpoint 复用。 ### 硬标签 + 输出校准 仅使用事后校准评估训练好的生成器: ``` python3 scripts/run_teacher_calibrated_eval.py \ --config configs/adaptive_smoothing.yaml \ --datasets valdoeiro qbaixo esac ``` ### 软标签,原始生成器 使用原始生成器概率训练最终模型: ``` python3 scripts/run_adaptive_smoothing.py \ --config configs/adaptive_smoothing.yaml \ --datasets valdoeiro qbaixo esac \ --no-calibration \ --run-name-prefix raw_generator ``` ### 软标签,校准的生成器 使用温度校准的生成器软标签训练最终模型, 不进行最终输出校准: ``` python3 scripts/run_adaptive_smoothing.py \ --config configs/adaptive_smoothing.yaml \ --datasets valdoeiro qbaixo esac \ --calibrator temperature \ --run-name-prefix calibrated_generator ``` ### C2F-SL 在温度校准的生成器软标签上进行训练,并校准最终 模型输出: ``` python3 scripts/run_adaptive_smoothing.py \ --config configs/adaptive_smoothing.yaml \ --datasets valdoeiro qbaixo esac \ --calibrator temperature \ --calibrate-student \ --student-calibrator temperature \ --run-name-prefix c2f_sl ``` ## 结果 最终定稿的测试集结果: | 方法 | VAL IoU | VAL ECE | VAL Brier | QBAIXO IoU | QBAIXO ECE | QBAIXO Brier | ESAC IoU | ESAC ECE | ESAC Brier | |---|---:|---:|---:|---:|---:|---:|---:|---:|---:| | 硬标签 | 0.689 | 0.069 | 0.0290 | 0.500 | 0.143 | 0.0965 | 0.753 | 0.055 | 0.0499 | | 硬标签 + 输出校准 | 0.689 | 0.048 | 0.0293 | 0.500 | 0.144 | 0.0963 | 0.753 | 0.053 | 0.0501 | | 软标签,原始生成器 | **0.720** | 0.068 | **0.0245** | 0.524 | 0.141 | 0.0858 | **0.761** | 0.047 | **0.0480** | | 软标签,校准的生成器 | 0.708 | 0.053 | 0.0246 | **0.549** | 0.129 | **0.0752** | 0.759 | 0.044 | **0.0480** | | **C2F-SL (ours)** | 0.708 | **0.032** | 0.0255 | **0.549** | **0.099** | 0.0754 | 0.759 | **0.038** | 0.0485 | 三个葡萄园数据集的宏平均: | 方法 | 平均 IoU | 平均 ECE | 平均 Brier | |---|---:|---:|---:| | 硬标签 | 0.647 | 0.089 | 0.0585 | | C2F-SL | 0.672 | 0.056 | 0.0498 | 结果表明这两个校准阶段起到了互补作用: 软标签监督可以改变学习到的分割模型,而最终 输出校准则最大程度地降低了 ECE。 来自 QBAIXO 的定性示例: ![QBAIXO 上的定性比较](https://static.pigsec.cn/wp-content/uploads/repos/cas/90/9062070a2031a8d6c219c982bccd009f6b1a874716fad4146d6ccf1ba1f2d580.png) ## 可复现性说明 - 默认种子:`42` - 架构:ResNet34 编码器与轻量级上采样解码器 - 输入通道:`5` - 图像尺寸:`224 x 224` - 训练 epoch:`50` - 优化器:Adam - 学习率:`1e-4` - Batch size:`8` - 评估阈值:`0.5` - ECE 区间:`15` ## 引用 如果您使用了此代码,请引用 C2F-SL 论文。最终会议 参考文献将在可用时添加。
标签:凭据扫描, 图像分割, 多光谱图像, 模型校准, 深度学习, 计算机视觉, 逆向工具, 遥感图像