HRNet语义分割模型在COCO-Stuff数据集上的训练配置解析
2025-07-10 01:45:51作者:齐添朝
引言
HRNet(High-Resolution Network)是一种用于语义分割任务的深度学习架构,其核心思想是在整个网络中保持高分辨率表示,而不是像传统方法那样先降低分辨率再恢复。本文将详细解析HRNet在COCO-Stuff数据集上的训练配置文件,帮助读者理解如何配置和优化HRNet模型进行语义分割任务。
硬件与基础配置
配置文件中首先定义了硬件相关的参数:
CUDNN:
BENCHMARK: true
DETERMINISTIC: false
ENABLED: true
GPUS: (0,1,2,3)
WORKERS: 4
- CUDNN配置:启用了cuDNN加速,并设置了基准测试模式(BENCHMARK),这可以让cuDNN自动寻找最优的卷积算法实现
- GPU设置:使用了4块GPU进行并行训练(编号0-3)
- WORKERS:数据加载时使用4个子进程,可以加快数据预处理速度
数据集配置
DATASET:
DATASET: cocostuff
ROOT: '../../../../dataset/coco_stuff_10k/'
TEST_SET: 'val.lst'
TRAIN_SET: 'train.lst'
NUM_CLASSES: 171
- COCO-Stuff数据集:这是一个包含171个类别的语义分割数据集,扩展自COCO数据集,增加了更多"stuff"类别的标注
- 数据路径:训练集和验证集分别通过train.lst和val.lst文件指定
- 类别数:171个语义类别需要模型进行区分
模型架构
HRNet的核心在于其多分辨率并行处理的结构:
MODEL:
NAME: seg_hrnet
PRETRAINED: 'pretrained_models/hrnetv2_w48_imagenet_pretrained.pth'
EXTRA:
STAGE1:
NUM_MODULES: 1
NUM_BRANCHES: 1
BLOCK: BOTTLENECK
NUM_BLOCKS: [4]
NUM_CHANNELS: [64]
STAGE2:
NUM_BRANCHES: 2
NUM_CHANNELS: [48, 96]
STAGE3:
NUM_MODULES: 4
NUM_BRANCHES: 3
NUM_CHANNELS: [48, 96, 192]
STAGE4:
NUM_MODULES: 3
NUM_BRANCHES: 4
NUM_CHANNELS: [48, 96, 192, 384]
- 网络结构:HRNet包含4个阶段(stage),随着阶段推进,分支(分辨率)数量逐渐增加
- 多分辨率处理:从stage2开始,网络并行处理多个分辨率特征,并通过SUM方法进行特征融合
- 预训练权重:使用了在ImageNet上预训练的HRNet-W48模型作为基础
损失函数与OHEM
LOSS:
USE_OHEM: true
OHEMTHRES: 0.9
OHEMKEEP: 131072
- OHEM(Online Hard Example Mining):一种困难样本挖掘技术
- 只保留损失值在前90%(OHEMTHRES)的样本进行反向传播
- 每次保留131072个像素点(OHEMKEEP)用于计算梯度
- 这种技术可以关注难以分类的样本,提高模型在困难区域的性能
训练策略
TRAIN:
BATCH_SIZE_PER_GPU: 4
TOTAL_BATCH_SIZE: 16 # 4 GPUs x 4
BASE_SIZE: 520
IMAGE_SIZE: [520, 520]
BEGIN_EPOCH: 0
END_EPOCH: 110
OPTIMIZER: sgd
LR: 0.001
WD: 0.0001
MOMENTUM: 0.9
FLIP: true
MULTI_SCALE: true
- 批量大小:每块GPU处理4张图像,4块GPU总批量大小为16
- 输入尺寸:图像被调整到520×520分辨率
- 训练周期:共训练110个epoch
- 优化器:使用带动量的SGD优化器
- 学习率(LR):0.001
- 权重衰减(WD):0.0001
- 动量(MOMENTUM):0.9
- 数据增强:
- 随机水平翻转(FLIP)
- 多尺度训练(MULTI_SCALE),增强模型对不同尺寸物体的识别能力
测试配置
TEST:
IMAGE_SIZE: [520, 520]
BATCH_SIZE_PER_GPU: 1
FLIP_TEST: false
MULTI_SCALE: false
- 测试批量:每GPU处理1张图像
- 测试尺寸:固定520×520分辨率
- 测试时增强:未使用翻转和多尺度测试
关键参数解析
-
NONBACKBONE参数:
NONBACKBONE_KEYWORDS: ['last_layer'] NONBACKBONE_MULT: 10
- 对非骨干网络部分(如最后的分类层)使用10倍的学习率
- 这种策略常见于迁移学习,可以更快调整新添加的层
-
SCALE_FACTOR:
SCALE_FACTOR: 16
- 这是HRNet的输出步长,表示特征图相对于输入图像的缩小倍数
- HRNet通过保持高分辨率,相比传统方法(如输出步长32)能保留更多细节
-
IGNORE_LABEL:
IGNORE_LABEL: 255
- 在损失计算时忽略标签值为255的像素
- 这些通常是图像边界或无效区域
总结
这份配置文件展示了一个完整的HRNet-W48模型在COCO-Stuff数据集上的训练方案。关键点包括:
- 使用多分辨率并行的HRNet架构,保持高分辨率特征
- 采用OHEM策略关注困难样本
- 使用适度的数据增强和多GPU训练
- 对骨干网络和分类头采用不同的学习率
这种配置平衡了训练效率和模型性能,适合处理COCO-Stuff这类包含大量类别的复杂语义分割任务。通过调整这些参数,可以进一步优化模型在不同场景下的表现。