Skip to content

课题实践:基于昇腾 NPU 的古蜀道线形文化遗产自动识别

1. 实验目的

本实验旨在利用深度学习语义分割技术,从高分辨率遥感影像中自动提取和识别古蜀道这类线形文化遗产的路径。通过本课题,你将掌握:

  • 遥感影像预处理的基本流程。
  • 语义分割模型的选型、训练与调优。
  • 在昇腾 NPU 平台上进行模型适配与性能加速。
  • 实验结果的精度评估与分析方法。

2. 数据与资源

数据来源

  • 遥感影像 (RS Image): 我们提供覆盖研究区域的亚米级高分辨率遥感影像,格式为 GeoTIFF。
  • 数字正射影像 (DOM): 作为辅助数据,用于地物细节比对。
  • 标签数据 (Label): 已由专家手动勾绘的古蜀道路径,为二值图(目标为 1,背景为 0),同样为 GeoTIFF 格式。

数据存放路径:/data/shudao_dataset/

计算资源

  • 硬件: 华为昇腾 310P NPU
  • 框架: PyTorch (已适配 NPU)

3. 模型选型

线形地物提取是语义分割中的一个经典但具有挑战性的任务。考虑到古蜀道路径细长、不规则且可能被植被遮挡的特点,我们推荐以下模型作为 baseline:

  • U-Net: 经典的 Encoder-Decoder 结构,擅长捕捉上下文信息,对边缘分割效果好。
  • DeepLabv3+: 引入了 Atrous (空洞) 卷积,能有效扩大感受野,对多尺度目标识别有优势。

你可以选择其中一种或两种都进行尝试和比较。

4. 关键代码实现 (占位符)

我们已经为你准备好了基础的代码框架,你需要在标记为 TODO 的部分填入核心逻辑。

4.1 数据加载 (Dataset & DataLoader)

datasets/shudao.py

python
# TODO: 实现 __getitem__ 方法
# 1. 读取影像和标签
# 2. 应用数据增强 (如随机裁剪、旋转、翻转)
# 3. 将数据转换为 Tensor

4.2 模型定义

models/unet.py

python
# TODO: 搭建 U-Net 模型结构
# 1. 实现下采样路径 (Encoder)
# 2. 实现上采样路径 (Decoder) 和跳跃连接 (Skip Connection)

4.3 训练脚本

train.py

python
# TODO: 补全训练循环
# 1. 将模型和数据移动到 NPU 设备 (device = 'npu:0')
# 2. 定义损失函数 (如 Dice Loss, BCE Loss)
# 3. 定义优化器 (如 Adam, SGD)
# 4. 迭代数据,执行前向传播、计算损失、反向传播和参数更新

5. 实验结果评估

训练完成后,你需要使用测试集评估模型的性能。核心评估指标包括:

  • mIoU (Mean Intersection over Union): 均交并比,语义分割最常用的指标。
  • F1-Score: 综合了精确率 (Precision) 和召回率 (Recall),对线形地物这类样本不均衡的场景更具参考价值。

请编写 evaluation.py 脚本,加载你训练好的模型,对测试集进行预测,并计算以上指标。