迁移分割-AdaptSegNet

# **AdaptSegNet(迁移分割/Pytorch)** ## 1. 概述 此模型基于 [Learning to Adapt Structured Output Space for Semantic Segmentation](https://arxiv.org/abs/1802.10349) 中提出的模型结构实现。 该算法通过训练带标签的源域和不带标签的目标域数据,得到能够在目标域数据表现良好的模型。训练后生成的模型可直接在ModelArts平台部署成在线服务。 图像分割的评估手段一般使用mIOU指标,详细说明请参考:[https://github.com/mcordts/cityscapesScripts#evaluation](https://github.com/mcordts/cityscapesScripts#evaluation) 本算法的其他信息如下表所示: 项目 | 说明 -------- | ----- 参考论文 | Learning to Adapt Structured Output Space for Semantic Segmentation 使用框架 | Pytorhc-1.4.0 源域 | GTAV/SYNTHIA 目标域 | Cityscapes的val数据集 训练总iteration | 150000 训练batch_size | 1(与原paper一致) 训练硬件与耗时 | 1*v100,43.5小时 推理硬件 | CPU 输入图片尺寸 | 1024x2048x3 原论文准确度 | mIOU=46.7(SYNTHIA->Cityscapes,13类) |mIOU=42.4(GTAV->Cityscapes,19类) 本算法准确度 | mIOU=47.2(SYNTHIA->Cityscapes,13类) | mIOU=41.2(GTAV->Cityscapes,19类) ## 2.训练 ### 2.1 算法基本信息 - 任务类型:迁移学习X语义分割 - 支持的框架引擎:PyTorch-1.4.0-python-3.6 - 算法输入: - 存储在OBS上的数据集(GTAV、SYNTHIA和Cityscapes),必须按照给定的数据集的格式进行存储,详情请查看下文第4节案例指导。 - 算法输出: - 用于Pytorch推理的pth模型 - 代码结构 ``` src |- pre-trained_weights |- DeepLab_resnet_pretrained_init-f81d91e8.pth #预训练模型可以在http://vllab.ucmerced.edu/ytsai/CVPR18/DeepLab_resnet_pretrained_init-f81d91e8.pth下载 |- trained_model |- model |- config.json |- customize_service.py |- GTA5_best.pth |- ... #customize_service.py需要的文件 |- model # 构造resnet和deeplab-v2等文件 |- cityscapes_fast_scnn.yaml |- ... |- dataset # 数据集加载文件 |- ... |- utils # 损失函数等文件 |- ... |- train.py # 执行训练 |- evaluate.py # 在验证集上验证,输出伪彩色结果图像和评估结果 dataset #源域、目标域数据集等需要传入modelarts的数据都应放在改目录 |- GTA5 |- RAND_CITYSCAPES |- Cityscapes ``` ### 2.2 训练参数说明 因为代码中已经都设置了默认值,因此为保证与原论文一致,下述参数不要轻易修改。 名称 | 默认值|类型|是否必填|是否可修改|描述 ---|---|---|---|---|---- save-pred-every| 5000|int|否|是|保存一次模型的间隔数 source| GTAV|string|否|是|GTAV or syn源域选择SYNTHIA还是GTAV数据集,要注意两个数据集的类别数目不一致。 eval| False|string|否|是|(1)False,本算法执行模型训练过程;(2)True,本算法加载load_weight参数指定的模型,然后执行模型评估过程。 load-weight| ./src/trained_model/model/GTA5_epoch_55000_miou_41.pth|string|否|是|预训练模型加载(1)固定的默认路径,默认加载本算法源码目录中的trained_model/model/xxx.pth继续训练,加载成功会打印日志;(2)可变的OBS路径,用户可指定OBS上的一个模型文件路径,然后本算法会加载该模型继续训练,加载成功会打印日志。 num-steps-stop| 150000|int|否|是|early stop的iteration数目 num-steps| 250000|int|否|是|训练的总iteration train_input_dir| dataset_uda|string|否|是|数据传到modelarts的位置 data-dir| /GTAV|string|否|是|原域数据存放目录 data-list| /dataset/gta5_list/train.txt|string|否|是|原域数据list的存放位置 data-dir-target| /Cityscapes/data|string|否|是|目标域数据存放目录,如果是eval为True,那么此处表示需要推理的图片存放位置(此处需要参考第四节所述安装要求存放和命名需要推理的图片以及ground truth) data-list-target| /dataset/cityscapes_list/|string|否|是|目标域数据list的目录。如果eval为true,此处填任意值均可 input-size| 1024,512|string|否|是|输入图片大小 learning-rate| 0.00025|continuous|否|是|分割网络的学习率 learning-rate-D| 0.0001|continuous|否|是|判别器的学习率 momentum| 0.9|continuous|否|是|优化器的momentum lambda-seg| 0.1|continuous|否|是|lambda_seg lambda-adv-target1| 0.0002|continuous|否|是|对抗训练lambda_adv lambda-adv-target2| 0.001|continuous|否|是|对抗训练lambda_adv num_classes|19|int|否|是|分割的类别数,源域为GTAV时为19类,为SYNTHIA时为13类 ### 2.3 训练输出文件 训练完成后的输出文件如下: ``` output |- xxxx.pth |- xxxx_D1.pth |- xxxx_D2.pth |- ... |- xxxx_best.pth |- xxxx_best_D1.pth |- xxxx_best_D2.pth |- xxxx_result.txt #记录第xxxx个iteration的分割效果 |- ... ``` 如果设置eval为True,输出文件如下: ``` output |- eval_result.txt |- pred_result |- frankfurt_000000_000294_leftImg8bit.png |- frankfurt_000000_000576_leftImg8bit.png |- ... ``` ## 3. GPU/CPU推理 训练作业完成后,可以直接在训练作业的右边点击“创建模型”,就可以导入模型 ## 4. 案例指导 本算法的详细使用方法,请查看[《ModelArts AI Gallery算法AdaptSegNet使用指导》。](https://marketplace.huaweicloud.com/markets/aihub/article/detail/?content_id=79478596-3600-4547-bc27-754a3131ad50)
AdaptSegNet(迁移分割/Pytorch)
1. 概述
此模型基于 Learning to Adapt Structured Output Space for Semantic Segmentation 中提出的模型结构实现。
该算法通过训练带标签的源域和不带标签的目标域数据,得到能够在目标域数据表现良好的模型。训练后生成的模型可直接在ModelArts平台部署成在线服务。
图像分割的评估手段一般使用mIOU指标,详细说明请参考:https://github.com/mcordts/cityscapesScripts#evaluation
本算法的其他信息如下表所示:
项目 | 说明 |
---|---|
参考论文 | Learning to Adapt Structured Output Space for Semantic Segmentation |
使用框架 | Pytorhc-1.4.0 |
源域 | GTAV/SYNTHIA |
目标域 | Cityscapes的val数据集 |
训练总iteration | 150000 |
训练batch_size | 1(与原paper一致) |
训练硬件与耗时 | 1*v100,43.5小时 |
推理硬件 | CPU |
输入图片尺寸 | 1024x2048x3 |
原论文准确度 | mIOU=46.7(SYNTHIA->Cityscapes,13类) |
|mIOU=42.4(GTAV->Cityscapes,19类)
本算法准确度 | mIOU=47.2(SYNTHIA->Cityscapes,13类)
| mIOU=41.2(GTAV->Cityscapes,19类)
2.训练
2.1 算法基本信息
- 任务类型:迁移学习X语义分割
- 支持的框架引擎:PyTorch-1.4.0-python-3.6
- 算法输入:
- 存储在OBS上的数据集(GTAV、SYNTHIA和Cityscapes),必须按照给定的数据集的格式进行存储,详情请查看下文第4节案例指导。
- 算法输出:
- 用于Pytorch推理的pth模型
- 代码结构
src
|- pre-trained_weights
|- DeepLab_resnet_pretrained_init-f81d91e8.pth #预训练模型可以在http://vllab.ucmerced.edu/ytsai/CVPR18/DeepLab_resnet_pretrained_init-f81d91e8.pth下载
|- trained_model
|- model
|- config.json
|- customize_service.py
|- GTA5_best.pth
|- ... #customize_service.py需要的文件
|- model # 构造resnet和deeplab-v2等文件
|- cityscapes_fast_scnn.yaml
|- ...
|- dataset # 数据集加载文件
|- ...
|- utils # 损失函数等文件
|- ...
|- train.py # 执行训练
|- evaluate.py # 在验证集上验证,输出伪彩色结果图像和评估结果
dataset #源域、目标域数据集等需要传入modelarts的数据都应放在改目录
|- GTA5
|- RAND_CITYSCAPES
|- Cityscapes
2.2 训练参数说明
因为代码中已经都设置了默认值,因此为保证与原论文一致,下述参数不要轻易修改。
名称 | 默认值 | 类型 | 是否必填 | 是否可修改 | 描述 |
---|---|---|---|---|---|
save-pred-every | 5000 | int | 否 | 是 | 保存一次模型的间隔数 |
source | GTAV | string | 否 | 是 | GTAV or syn源域选择SYNTHIA还是GTAV数据集,要注意两个数据集的类别数目不一致。 |
eval | False | string | 否 | 是 | (1)False,本算法执行模型训练过程;(2)True,本算法加载load_weight参数指定的模型,然后执行模型评估过程。 |
load-weight | ./src/trained_model/model/GTA5_epoch_55000_miou_41.pth | string | 否 | 是 | 预训练模型加载(1)固定的默认路径,默认加载本算法源码目录中的trained_model/model/xxx.pth继续训练,加载成功会打印日志;(2)可变的OBS路径,用户可指定OBS上的一个模型文件路径,然后本算法会加载该模型继续训练,加载成功会打印日志。 |
num-steps-stop | 150000 | int | 否 | 是 | early stop的iteration数目 |
num-steps | 250000 | int | 否 | 是 | 训练的总iteration |
train_input_dir | dataset_uda | string | 否 | 是 | 数据传到modelarts的位置 |
data-dir | /GTAV | string | 否 | 是 | 原域数据存放目录 |
data-list | /dataset/gta5_list/train.txt | string | 否 | 是 | 原域数据list的存放位置 |
data-dir-target | /Cityscapes/data | string | 否 | 是 | 目标域数据存放目录,如果是eval为True,那么此处表示需要推理的图片存放位置(此处需要参考第四节所述安装要求存放和命名需要推理的图片以及ground truth) |
data-list-target | /dataset/cityscapes_list/ | string | 否 | 是 | 目标域数据list的目录。如果eval为true,此处填任意值均可 |
input-size | 1024,512 | string | 否 | 是 | 输入图片大小 |
learning-rate | 0.00025 | continuous | 否 | 是 | 分割网络的学习率 |
learning-rate-D | 0.0001 | continuous | 否 | 是 | 判别器的学习率 |
momentum | 0.9 | continuous | 否 | 是 | 优化器的momentum |
lambda-seg | 0.1 | continuous | 否 | 是 | lambda_seg |
lambda-adv-target1 | 0.0002 | continuous | 否 | 是 | 对抗训练lambda_adv |
lambda-adv-target2 | 0.001 | continuous | 否 | 是 | 对抗训练lambda_adv |
num_classes | 19 | int | 否 | 是 | 分割的类别数,源域为GTAV时为19类,为SYNTHIA时为13类 |
2.3 训练输出文件
训练完成后的输出文件如下:
output
|- xxxx.pth
|- xxxx_D1.pth
|- xxxx_D2.pth
|- ...
|- xxxx_best.pth
|- xxxx_best_D1.pth
|- xxxx_best_D2.pth
|- xxxx_result.txt #记录第xxxx个iteration的分割效果
|- ...
如果设置eval为True,输出文件如下:
output
|- eval_result.txt
|- pred_result
|- frankfurt_000000_000294_leftImg8bit.png
|- frankfurt_000000_000576_leftImg8bit.png
|- ...
3. GPU/CPU推理
训练作业完成后,可以直接在训练作业的右边点击“创建模型”,就可以导入模型
4. 案例指导
本算法的详细使用方法,请查看《ModelArts AI Gallery算法AdaptSegNet使用指导》。
AdaptSegNet(迁移分割/Pytorch)
1. 概述
此模型基于 Learning to Adapt Structured Output Space for Semantic Segmentation 中提出的模型结构实现。
该算法通过训练带标签的源域和不带标签的目标域数据,得到能够在目标域数据表现良好的模型。训练后生成的模型可直接在ModelArts平台部署成在线服务。
图像分割的评估手段一般使用mIOU指标,详细说明请参考:https://github.com/mcordts/cityscapesScripts#evaluation
本算法的其他信息如下表所示:
项目 | 说明 |
---|---|
参考论文 | Learning to Adapt Structured Output Space for Semantic Segmentation |
使用框架 | Pytorhc-1.4.0 |
源域 | GTAV/SYNTHIA |
目标域 | Cityscapes的val数据集 |
训练总iteration | 150000 |
训练batch_size | 1(与原paper一致) |
训练硬件与耗时 | 1*v100,43.5小时 |
推理硬件 | CPU |
输入图片尺寸 | 1024x2048x3 |
原论文准确度 | mIOU=46.7(SYNTHIA->Cityscapes,13类) |
|mIOU=42.4(GTAV->Cityscapes,19类)
本算法准确度 | mIOU=47.2(SYNTHIA->Cityscapes,13类)
| mIOU=41.2(GTAV->Cityscapes,19类)
2.训练
2.1 算法基本信息
- 任务类型:迁移学习X语义分割
- 支持的框架引擎:PyTorch-1.4.0-python-3.6
- 算法输入:
- 存储在OBS上的数据集(GTAV、SYNTHIA和Cityscapes),必须按照给定的数据集的格式进行存储,详情请查看下文第4节案例指导。
- 算法输出:
- 用于Pytorch推理的pth模型
- 代码结构
src
|- pre-trained_weights
|- DeepLab_resnet_pretrained_init-f81d91e8.pth #预训练模型可以在http://vllab.ucmerced.edu/ytsai/CVPR18/DeepLab_resnet_pretrained_init-f81d91e8.pth下载
|- trained_model
|- model
|- config.json
|- customize_service.py
|- GTA5_best.pth
|- ... #customize_service.py需要的文件
|- model # 构造resnet和deeplab-v2等文件
|- cityscapes_fast_scnn.yaml
|- ...
|- dataset # 数据集加载文件
|- ...
|- utils # 损失函数等文件
|- ...
|- train.py # 执行训练
|- evaluate.py # 在验证集上验证,输出伪彩色结果图像和评估结果
dataset #源域、目标域数据集等需要传入modelarts的数据都应放在改目录
|- GTA5
|- RAND_CITYSCAPES
|- Cityscapes
2.2 训练参数说明
因为代码中已经都设置了默认值,因此为保证与原论文一致,下述参数不要轻易修改。
名称 | 默认值 | 类型 | 是否必填 | 是否可修改 | 描述 |
---|---|---|---|---|---|
save-pred-every | 5000 | int | 否 | 是 | 保存一次模型的间隔数 |
source | GTAV | string | 否 | 是 | GTAV or syn源域选择SYNTHIA还是GTAV数据集,要注意两个数据集的类别数目不一致。 |
eval | False | string | 否 | 是 | (1)False,本算法执行模型训练过程;(2)True,本算法加载load_weight参数指定的模型,然后执行模型评估过程。 |
load-weight | ./src/trained_model/model/GTA5_epoch_55000_miou_41.pth | string | 否 | 是 | 预训练模型加载(1)固定的默认路径,默认加载本算法源码目录中的trained_model/model/xxx.pth继续训练,加载成功会打印日志;(2)可变的OBS路径,用户可指定OBS上的一个模型文件路径,然后本算法会加载该模型继续训练,加载成功会打印日志。 |
num-steps-stop | 150000 | int | 否 | 是 | early stop的iteration数目 |
num-steps | 250000 | int | 否 | 是 | 训练的总iteration |
train_input_dir | dataset_uda | string | 否 | 是 | 数据传到modelarts的位置 |
data-dir | /GTAV | string | 否 | 是 | 原域数据存放目录 |
data-list | /dataset/gta5_list/train.txt | string | 否 | 是 | 原域数据list的存放位置 |
data-dir-target | /Cityscapes/data | string | 否 | 是 | 目标域数据存放目录,如果是eval为True,那么此处表示需要推理的图片存放位置(此处需要参考第四节所述安装要求存放和命名需要推理的图片以及ground truth) |
data-list-target | /dataset/cityscapes_list/ | string | 否 | 是 | 目标域数据list的目录。如果eval为true,此处填任意值均可 |
input-size | 1024,512 | string | 否 | 是 | 输入图片大小 |
learning-rate | 0.00025 | continuous | 否 | 是 | 分割网络的学习率 |
learning-rate-D | 0.0001 | continuous | 否 | 是 | 判别器的学习率 |
momentum | 0.9 | continuous | 否 | 是 | 优化器的momentum |
lambda-seg | 0.1 | continuous | 否 | 是 | lambda_seg |
lambda-adv-target1 | 0.0002 | continuous | 否 | 是 | 对抗训练lambda_adv |
lambda-adv-target2 | 0.001 | continuous | 否 | 是 | 对抗训练lambda_adv |
num_classes | 19 | int | 否 | 是 | 分割的类别数,源域为GTAV时为19类,为SYNTHIA时为13类 |
2.3 训练输出文件
训练完成后的输出文件如下:
output
|- xxxx.pth
|- xxxx_D1.pth
|- xxxx_D2.pth
|- ...
|- xxxx_best.pth
|- xxxx_best_D1.pth
|- xxxx_best_D2.pth
|- xxxx_result.txt #记录第xxxx个iteration的分割效果
|- ...
如果设置eval为True,输出文件如下:
output
|- eval_result.txt
|- pred_result
|- frankfurt_000000_000294_leftImg8bit.png
|- frankfurt_000000_000576_leftImg8bit.png
|- ...
3. GPU/CPU推理
训练作业完成后,可以直接在训练作业的右边点击“创建模型”,就可以导入模型
4. 案例指导
本算法的详细使用方法,请查看《ModelArts AI Gallery算法AdaptSegNet使用指导》。