ONNX 模型库
返回模型

说明文档

模型描述

SESR 基于 CNN 的线性过参数化,为 SISR(单图像超分辨率)创建了一种高效的模型架构。该模型在论文 Collapsible Linear Blocks for Super-Efficient Super Resolution 中提出。 该工作的官方代码可在以下地址找到: https://github.com/ARM-software/sesr

我们开发了一个修改版本,可由 AMD Ryzen AI 支持。

预期用途与限制

您可以使用原始模型进行超分辨率处理。请查看 模型中心 以浏览所有可用模型。

使用方法

安装

按照 Ryzen AI 安装指南 准备 Ryzen AI 的运行环境。 运行以下脚本安装此模型的依赖项。

pip install -r requirements.txt 

数据准备(可选:用于精度评估)

  1. 下载 benchmark(https://cv.snu.ac.kr/research/EDSR/benchmark.tar) 数据集。
  2. 按照以下结构组织数据集目录:
└── dataset
     └── benchmark
          ├── Set5
               ├── HR
               |   ├── baby.png
               |   ├── ...
               └── LR_bicubic
                   └──X2
                      ├──babyx2.png
                      ├── ...
          ├── Set14
          ├── ...    

测试与评估

    parser = argparse.ArgumentParser(description='EDSR and MDSR')
    parser.add_argument('--onnx_path', type=str, default='SESR_int8.onnx',
                    help='onnx path')
    parser.add_argument('--image_path', default='test_data/test.png',
                    help='path of your image')
    parser.add_argument('--output_path', default='test_data/sr.png',
                    help='path of your image')
    parser.add_argument('--ipu', action='store_true',
                    help='use ipu')
    parser.add_argument('--provider_config', type=str, default=None,
                    help='provider config path')
    args = parser.parse_args()
    if args.ipu:
        providers = [\"VitisAIExecutionProvider\"]
        provider_options = [{\"config_file\": args.provider_config}]
    else:
        providers = ['CUDAExecutionProvider', 'CPUExecutionProvider']
        provider_options = None
   
    onnx_file_name = args.onnx_path
    image_path = args.image_path
    output_path = args.output_path

    ort_session = onnxruntime.InferenceSession(onnx_file_name,  providers=providers, provider_options=provider_options) 
    lr = cv2.imread(image_path)[np.newaxis,:,:,:].transpose((0,3,1,2)).astype(np.float32)
    sr = tiling_inference(ort_session, lr, 8, (56, 56))
    sr = np.clip(sr, 0, 255)
    sr = sr.squeeze().transpose((1,2,0)).astype(np.uint8)
    sr = cv2.imwrite(output_path, sr)
  • 对单张图像运行推理
python one_image_inference.py --onnx_path SESR_int8.onnx --image_path /Path/To/Your/Image --ipu --provider_config Path/To/vaip_config.json

注意:vaip_config.json 位于 Ryzen AI 的安装包中(请参考 安装)

  • 测试量化模型的精度
python test.py --onnx_path SESR_int8.onnx --data_test Set5 --ipu --provider_config Path/To/vaip_config.json 

性能

方法 缩放倍数 Flops Set5
SESR-S (float) X2 10.22G 37.21
SESR-S (INT8) X2 10.22G 36.81
  • 注意:Flops 是在输入分辨率为 256x256 时计算的
@misc{bhardwaj2022collapsible,
      title={Collapsible Linear Blocks for Super-Efficient Super Resolution}, 
      author={Kartikeya Bhardwaj and Milos Milosavljevic and Liam O'Neil and Dibakar Gope and Ramon Matas and Alex Chalfin and Naveen Suda and Lingchuan Meng and Danny Loh},
      year={2022},
      eprint={2103.09404},
      archivePrefix={arXiv},
      primaryClass={eess.IV}
}

amd/sesr

作者 amd

↓ 0 ♥ 4

创建时间: 2023-12-04 16:30:22+00:00

更新时间: 2026-01-22 15:24:44+00:00

在 Hugging Face 上查看

文件 (16)

.gitattributes
README.md
README_ben.md
SESR_int8.onnx ONNX
data/__init__.py
data/benchmark.py
data/common.py
data/data_tiling.py
data/srdata.py
metric.py
one_image_inference.py
option.py
requirements.txt
test.py
test_data/test.png
utility.py