---
title: Super_Resolution_CNN_ID3003-PyTorch-模型库-ModelZoo-昇腾社区
description: 生态贡献模型
keywords: Super,Resolution,CNN,ID,PyTorch,模型库,ModelZoo,昇腾社区
url: https://www.hiascend.com/software/modelzoo/models/detail/c944228b74c14d89a6efe697f51dfa84?index_id=c944228b74c14d89a6efe697f51dfa84
section: (其他)
---

# Super_Resolution_CNN_ID3003-PyTorch-模型库-ModelZoo-昇腾社区

URL: https://www.hiascend.com/software/modelzoo/models/detail/c944228b74c14d89a6efe697f51dfa84?index_id=c944228b74c14d89a6efe697f51dfa84
描述: 生态贡献模型
关键词: Super,Resolution,CNN,ID,PyTorch,模型库,ModelZoo,昇腾社区

ModelZoo主页

主页 [了解详情](https://www.hiascend.com/software/modelzoo)大模型 [了解详情](https://www.hiascend.com/software/modelzoo/big-models)模型库 [了解详情](https://www.hiascend.com/software/modelzoo/models)工具库 [了解详情](https://www.hiascend.com/software/modelzoo/tools)权重库 [了解详情](https://www.hiascend.com/software/modelzoo/datasets)ModelShow [了解详情](https://www.hiascend.com/software/modelzoo/modelshow)DeepSeek专区HOT [了解详情](https://www.hiascend.com/developer/deepseek)文档中心论坛交流

主页 [了解详情](https://www.hiascend.com/software/modelzoo)大模型 [了解详情](https://www.hiascend.com/software/modelzoo/big-models)模型库 [了解详情](https://www.hiascend.com/software/modelzoo/models)工具库 [了解详情](https://www.hiascend.com/software/modelzoo/tools)权重库 [了解详情](https://www.hiascend.com/software/modelzoo/datasets)ModelShow [了解详情](https://www.hiascend.com/software/modelzoo/modelshow)DeepSeek专区HOT [了解详情](https://www.hiascend.com/developer/deepseek)文档中心论坛交流

模型库 [了解详情](https://www.hiascend.com/software/modelzoo/models)

Super_Resolution_CNN_ID3003-PyTorch

## Super_Resolution_CNN_ID3003-PyTorch

视觉生成PyTorch训练147次浏览2026/01/19更新

查看模型源码

Super_Resolution_CNN_ID3003-PyTorch

查看模型源码

...

- 基本信息 [了解详情](https://www.hiascend.com/#%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF.md)
- 概述 [了解详情](https://www.hiascend.com/#%E6%A6%82%E8%BF%B0.md)
- 训练环境准备 [了解详情](https://www.hiascend.com/#%E8%AE%AD%E7%BB%83%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.md)
- 快速上手 [了解详情](https://www.hiascend.com/#%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B.md)
- 迁移学习指导 [了解详情](https://www.hiascend.com/#%E8%BF%81%E7%A7%BB%E5%AD%A6%E4%B9%A0%E6%8C%87%E5%AF%BC.md)
- 高级参考 [了解详情](https://www.hiascend.com/#%E9%AB%98%E7%BA%A7%E5%8F%82%E8%80%83.md)

## 基本信息

发布者（Publisher）：Huawei

应用领域（Application Domain）：Object Detection

版本（Version）：1.1

修改时间（Modified） ：2022.8.16

大小（Size）：190616KB

框架（Framework）：PyTorch 1.5

模型格式（Model Format）：ckpt

精度（Precision）：Mixed

处理器（Processor）：昇腾910

应用级别（Categories）：Official

描述（Description）：基于PyTorch框架的图像超分辨率训练代码

## 概述

## 简述

我们提出了一种用于单幅图像超分辨率（SR）的深度学习方法。我们的方法直接学习低/高分辨率图像之间的端到端映射。该映射表示为一个深度卷积神经网络 (CNN)，它将低分辨率图像作为输入并输出高分辨率图像。我们进一步表明，传统的基于稀疏编码的 SR 方法也可以被视为深度卷积网络。但与单独处理每个组件的传统方法不同，我们的方法联合优化了所有层。我们的深度 CNN 结构轻巧，但展示了最先进的恢复质量，并实现了实际在线使用的快速速度。我们探索不同的网络结构和参数设置，以实现性能和速度之间的权衡.

- 参考论文：

https://arxiv.org/abs/1501.00092v3 [了解详情](https://arxiv.org/abs/1501.00092v3)
- 参考实现：

https://github.com/YeongHyeon/Super-Resolution_CNN-PyTorch [了解详情](https://github.com/YeongHyeon/Super-Resolution_CNN-PyTorch)
- 适配昇腾 AI 处理器的实现：

https://gitee.com/ascend/ModelZoo-PyTorch/tree/master/PyTorch/contrib/cv/others/Super-Resolution_CNN_ID3003_for_Pytorch [了解详情](https://gitee.com/ascend/ModelZoo-PyTorch/tree/master/PyTorch/contrib/cv/others/Super-Resolution_CNN_ID3003_for_Pytorch)
- 通过Git获取对应commit_id的代码方法如下：

```
  git clone {repository_url}    # 克隆仓库的代码
  cd {repository_name}    # 切换到模型的代码仓目录
  git checkout  {branch}    # 切换到对应分支
  git reset --hard ｛commit_id｝     # 代码设置到对应的commit_id
  cd ｛code_path｝    # 切换到模型代码所在路径，若仓库下只有该模型，则无需切换
```

## 默认配置

- 训练超参（单卡）：

- batch_size 32
- data_url
- train_url
- num-epochs
- lr 1e-4
- num-workers 8
- seed 123

## 支持特性

| 特性列表 | 是否支持 |
| --- | ---|
| 分布式训练 | 是 |
| 混合精度 | 是 |
| 数据并行 | 否 |

## 混合精度训练

昇腾910 AI处理器提供自动混合精度功能，可以针对全网中float32数据类型的算子，按照内置的优化策略，自动将部分float32的算子降低精度到float16，从而在精度损失很小的情况下提升系统性能并减少内存使用。

## 开启混合精度

基于NPU芯片的架构特性，会涉及到混合精度训练，即混合使用float16和float32数据类型的应用场景。使用float16代替float32有如下好处：

- 对于中间变量的内存占用更少，节省内存的使用。
- 因内存使用会减少，所以数据传出的时间也会相应减少。
- float16的计算单元可以提供更快的计算性能。

但是，混合精度训练受限于float16表达的精度范围，单纯将float32转换成float16会影响训练收敛情况，为了保证部分计算使用float16来进行加速的同时能保证训练收敛，这里采用混合精度模块Apex来达到以上效果。混合精度模块Apex是一个集优化性能、精度收敛于一身的综合优化库。

适配昇腾AI处理器的混合精度模块Apex除了上述优点外，还能提升运算性能。具体如下：

- Apex在混合精度运算过程中，会对模型的grad进行运算。开启combine_grad开关，可以加速这些运算。具体为将amp.initialize()接口参数combine_grad设置为True；
- 适配后的Apex针对adadelta/adam/sgd/lamb做了昇腾AI处理器亲和性优化，得到的NPU融合优化器与原生算法保持一致，但运算速度更快。使用时只需将原有优化器替换为apex.optimizers.*（“*”为优化器名称，例如NpuFusedSGD）。
- 适配后的Apex针对数据并行场景做了昇腾AI处理器亲和性优化，支持利用融合grad进行加速，同时保持计算逻辑一致性。通过开启combine_ddp开关，也就是将amp.initialize()接口参数combine_ddp设置为True并DistributedDataParallel，即可开启该功能。

特性支持

混合精度模块功能和优化描述如表1 [了解详情](https://www.hiascend.com/#table10717173813332)所示。

表 1混合精度模块功能

| 功能 | 描述 |
| --- | ---|
| O1配置模式 | Conv，Matmul等使用float16计算，其他如Softmax、BN使用float32。 |
| O2配置模式 | 除了BN使用float32外，其他绝大部分使用float16。 |
| 静态Loss Scale功能 | 静态设置参数确保混合精度训练收敛。 |
| 动态Loss Scale功能 | 动态计算loss Scale值并判断是否溢出。 |

说明：

- 当前版本的实现方式主要为python实现，不支持AscendCL或者CUDA优化。
- 当前昇腾AI设备暂不支持原始Apex的FusedLayerNorm接口模块，如果模型原始脚本文件使用了FusedLayerNorm接口模块，需要在模型迁移过程中将脚本头文件“from apex.normalization import FusedLayerNorm“替换为“from torch.nn import LayerNorm“。

将混合精度模块集成到PyTorch模型中

1. 使用apex混合精度模块需要首先从apex库中导入amp，代码如下：

```
from apex import amp
```
2. 导入amp模块后，需要初始化amp，使其能对模型、优化器以及PyTorch内部函数进行必要的改动，初始化代码如下：

```
model, optimizer = amp.initialize(model,optimizer,opt_level='O2',loss_scale=32.0,combine_grad=True)
```
3. 标记反向传播.backward()发生的位置，这样Amp就可以进行Loss Scaling并清除每次迭代的状态，代码如下：

原始代码：

```
loss = criterion(…) 
loss.backward() 
optimizer.step()
```

修改以支持loss scaling后的代码：

```
loss = criterion(preds, labels)
optimizer.zero_grad()
# loss.backward()
with amp.scale_loss(loss, optimizer) as scaled_loss:
      scaled_loss.backward()
optimizer.step()

```

## 训练环境准备

- 硬件环境和运行环境准备请参见《CANN软件安装指南 [了解详情](https://support.huawei.com/enterprise/zh/ascend-computing/cann-pid-251168373?category=installation-update)》
- 运行以下命令安装依赖。

```
pip3 install requirements.txt
```

说明：依赖配置文件requirements.txt文件位于模型的根目录

## 快速上手

## 数据集准备

1、用户自行准备好数据集，使用91图像数据集作为训练集，使用Set-5数据集作为验证集。

2、Super-Resolution_CNN训练的模型及数据集可以参考"简述 -> 参考实现"

## 模型训练

- 单击“立即下载”，并选择合适的下载方式下载源码包。
- 开始训练。

- 启动训练之前，首先要配置程序运行相关环境变量。

环境变量配置信息参见：

Ascend 910训练平台环境变量设置 [了解详情](https://gitee.com/ascend/modelzoo/wikis/Ascend%20910%E8%AE%AD%E7%BB%83%E5%B9%B3%E5%8F%B0%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E8%AE%BE%E7%BD%AE?sort_id=3148819)
- 单卡训练

1. 配置训练参数。

首先在脚本test/train_full_1p.sh中，配置batch_size、steps、epochs、data_path等参数，请用户根据实际路径配置data_path，或者在启动训练的命令行中以参数形式 
下发。

```
--data_url=${data_path} 
--train_url=${output_path} 
--num-epochs=500
```
2. 启动训练。

启动单卡训练 （脚本为Super-Resolution_CNN_ID3003_for_Pytorch / test / train_full_1p.sh）

```
bash train_full_1p.sh --data_path='dataset'
```
3. 精度指标。

```
 | 精度指标项 | 论文发布 | GPU实测 | NPU实测 |
 | ---------- | -------- | ------- | ------- |
 | PSNR   | 32.75    | 33.27   | 33.27   |
```

## 高级参考

## 脚本和示例代码

```
├── train.py                      //网络训练与测试代码
├── README.md                                 //代码说明文档
├── modelzoo_level.txt                               
├── datasets.py                         
├── model.py                         
├── prepare.py                                   
├── requirements.txt                          //训练python依赖列表
├── modelarts_entry_acc.py                    //单卡全量训练启动代码
├── modelarts_entry_perf.py                   //单卡训练验证性能启动代码
├── test
│    ├──train_performance_1p.sh               //单卡训练验证性能启动脚本
│    ├──train_full_1p.sh                      //单卡全量训练启动脚本
```

## 脚本参数

```
-- batch_size 32
-- data_url 
-- train_url 
-- num-epochs
-- lr 1e-4
-- num-workers 8
-- seed 123
```

## 训练过程

通过“模型训练”中的训练指令启动单卡或者多卡训练。单卡和多卡通过运行不同脚本，支持单卡，8卡网络训练。模型存储路径为<math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi>c</mi><mi>u</mi><msub><mi>r</mi><mi>p</mi></msub><mi>a</mi><mi>t</mi><mi>h</mi></mrow><mi mathvariant="normal">/</mi><mi>o</mi><mi>u</mi><mi>t</mi><mi>p</mi><mi>u</mi><mi>t</mi><mi mathvariant="normal">/</mi></mrow><annotation encoding="application/x-tex">{cur_path}/output/</annotation></semantics></math>curpath/output/ASCEND_DEVICE_ID，包括训练的log以及checkpoints文件。以单卡训练为例，loss信息在文件<math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi>c</mi><mi>u</mi><msub><mi>r</mi><mi>p</mi></msub><mi>a</mi><mi>t</mi><mi>h</mi></mrow><mi mathvariant="normal">/</mi><mi>o</mi><mi>u</mi><mi>t</mi><mi>p</mi><mi>u</mi><mi>t</mi><mi mathvariant="normal">/</mi></mrow><annotation encoding="application/x-tex">{cur_path}/output/</annotation></semantics></math>curpath/output/{ASCEND_DEVICE_ID}/train_${ASCEND_DEVICE_ID}.log中。

| 版本 | 更新时间 | 精度 | 处理器 | CANN版本 | 操作 |
| --- | --- | --- | --- | --- | ---|

暂无数据

使用模型资源和服务前，请您仔细阅读并理解透彻《昇腾深度学习模型许可协议 3.0》 [了解详情](https://www.hiascend.com/legal/modelzoo_models_license)
