返回模型
说明文档
模型描述
PAN 是一种基于像素注意力的轻量级图像超分辨率方法。该方法由 Hengyuan Zhao 等人在论文 Efficient Image Super-Resolution Using Pixel Attention 中提出,并首次在 此仓库 中发布。
我们修改了原始模型中 Leaky ReLU 的负斜率,并用 hard sigmoid 替换了 sigmoid 激活函数,以使模型兼容 AMD Ryzen AI。我们加载了已发布的模型参数,并在 DIV2K 数据集上进行了微调。
预期用途与限制
您可以使用原始模型进行超分辨率处理。请查看 模型中心 以获取所有可用的 PAN 模型。
使用方法
安装
按照 Ryzen AI 安装指南 准备 Ryzen AI 的运行环境。 运行以下脚本安装此模型的依赖项。
pip install -r requirements.txt
数据准备(可选:用于精度评估)
- 下载 benchmark(https://cv.snu.ac.kr/research/EDSR/benchmark.tar) 数据集。
- 解压数据集并将其放置在项目文件夹下。按以下结构组织数据集目录:
PAN
└── dataset
└── benchmark
├── Set5
├── HR
| ├── baby.png
| ├── ...
└── LR_bicubic
└──X2
├──babyx2.png
├── ...
├── Set14
├── ...
测试与评估
- 来自
infer_onnx.py的使用示例代码片段
parser = argparse.ArgumentParser(description='PAN SR')
parser.add_argument('--onnx_path',
type=str,
default='PAN_int8.onnx',
help='Onnx path')
parser.add_argument('--image_path',
type=str,
default='test_data/test.png',
help='Path to your input image.')
parser.add_argument('--output_path',
type=str,
default='test_data/sr.png',
help='Path to your output image.')
parser.add_argument('--provider_config',
type=str,
default=\"vaip_config.json\",
help=\"Path of the config file for seting provider_options.\")
parser.add_argument('--ipu', action='store_true', help='Use Ipu for interence.')
args = parser.parse_args()
onnx_file_name = args.onnx_path
image_path = args.image_path
output_path = args.output_path
if args.ipu:
providers = [\"VitisAIExecutionProvider\"]
provider_options = [{\"config_file\": args.provider_config}]
else:
providers = ['CPUExecutionProvider']
provider_options = None
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 infer_onnx.py --onnx_path PAN_int8.onnx --image_path /Path/To/Your/Image --ipu --provider_config Path\To\vaip_config.json
- 测试量化模型的精度
python eval_onnx.py --onnx_path PAN_int8.onnx --data_test Set5 --ipu --provider_config Path\To\vaip_config.json
注意:vaip_config.json 位于 Ryzen AI 的安装包中(请参考 安装)
性能
| 方法 | 缩放倍数 | Flops | Set5 |
|---|---|---|---|
| PAN (float) | X2 | 141G | 38.00 / 0.961 |
| PAN_amd (float) | X2 | 141G | 37.859 / 0.960 |
| PAN_amd (int8) | X2 | 141G | 37.18 / 0.952 |
- 注意:Flops 是在输出分辨率为 360x640 时计算的
@inproceedings{zhao2020efficient,
title={Efficient image super-resolution using pixel attention},
author={Zhao, Hengyuan and Kong, Xiangtao and He, Jingwen and Qiao, Yu and Dong, Chao},
booktitle={European Conference on Computer Vision},
pages={56--72},
year={2020},
organization={Springer}
}
amd/PAN
作者 amd
image-to-image
↓ 0
♥ 2
创建时间: 2023-12-04 16:30:34+00:00
更新时间: 2024-01-10 03:19:32+00:00
在 Hugging Face 上查看文件 (15)
.gitattributes
PAN_int8.onnx
ONNX
README.md
data/__init__.py
data/benchmark.py
data/common.py
data/data_tiling.py
data/srdata.py
eval_onnx.py
infer_onnx.py
option.py
requirements.txt
test_data/sr.png
test_data/test.png
utility.py