README.md 4.97 KB
Newer Older
yangzhong's avatar
yangzhong committed
1
# S3Diff
yangzhong's avatar
yangzhong committed
2

yangzhong's avatar
yangzhong committed
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
## 论文

Degradation-Guided One-Step Image Super-Resolution with Diffusion Priors

https://arxiv.org/abs/2409.17058v1

## 模型结构

S3Diff 是一种基于扩散先验的退化引导一步图像超分辨率方法。该方法通过利用预先训练的文本到图像扩散模型作为先验,解决传统图像超分辨率方法效率低下和忽视退化模型关键信息的问题。S3Diff 采用退化引导的低秩适应(LoRA)模块,根据低分辨率图像预先估计的退化信息来纠正模型参数,不仅提升了数据依赖或退化依赖的超分辨率模型的能力,还尽可能保留了预训练扩散模型的生成先验。

![image](https://developer.sourcefind.cn/codes/modelzoo/S3Diff/-/raw/master/assets/pic/main_framework.jpg?inline=false)

## 环境配置

### Docker(方法一)
yangzhong's avatar
yangzhong committed
18
19

```
yangzhong's avatar
yangzhong committed
20
在光源可拉取docker镜像:
yangzhong's avatar
yangzhong committed
21
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.3.0-ubuntu22.04-dtk24.04.3-py3.10
yangzhong's avatar
yangzhong committed
22
创建并启动容器:
yangzhong's avatar
yangzhong committed
23
docker run -it --network=host --name=dtk24043_torch23 -v /opt/hyhal:/opt/hyhal:ro -v /usr/local/hyhal:/usr/local/hyhal:ro -v /public:/public:ro --privileged --device=/dev/kfd --device=/dev/dri --ipc=host --shm-size=128G  --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -u root --ulimit stack=-1:-1 --ulimit memlock=-1:-1 image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.3.0-ubuntu22.04-dtk24.04.3-py3.10
yangzhong's avatar
yangzhong committed
24
25
26
27
28
docker exec -it dtk24043_torch23 /bin/bash
安装依赖包:
cd S3Diff/
pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
# 安装环境中缺少的依赖,已有的进行注释,open-clip-torch、peft、diffusers、huggingface_hub要安装指定版本!!!
yangzhong's avatar
yangzhong committed
29
```
yangzhong's avatar
yangzhong committed
30
### Dockerfile(方法二)
yangzhong's avatar
yangzhong committed
31
32

```
yangzhong's avatar
yangzhong committed
33
34
35
36
docker build --no-cache -t S3Diff:latest .
docker run -dit --network=host --name=STAR --privileged --device=/dev/kfd --device=/dev/dri --ipc=host --shm-size=16G  --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -u root --ulimit stack=-1:-1 --ulimit memlock=-1:-1 -v /opt/hyhal/:/opt/hyhal/:ro -v /usr/local/hyhal:/usr/local/hyhal:ro S3Diff:latest
docker exec -it S3Diff /bin/bash
安装依赖包:
yangzhong's avatar
yangzhong committed
37
cd S3Diff/
yangzhong's avatar
yangzhong committed
38
39
40
pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
# 安装环境中缺少的依赖,已有的进行注释,open-clip-torch、diffusers要安装指定版本!!!
sudo apt-get update && sudo apt-get install ffmpeg libsm6 libxext6  -y
yangzhong's avatar
yangzhong committed
41
42
```

yangzhong's avatar
yangzhong committed
43
### Anaconda(方法三)
yangzhong's avatar
yangzhong committed
44

yangzhong's avatar
yangzhong committed
45
46
47
48
49
50
51
52
53
54
55
```
1.创建conda虚拟环境:
conda create -n S3Diff python=3.10
2.关于本项目DCU显卡所需的工具包、深度学习库等均可从光合开发者社区下载安装:https://developer.hpccube.com/tool/
DTK驱动:dtk24.04.3
python:python3.10
torch:2.3.0
Tips:以上DTK、python、torch等DCU相关工具包,版本需要严格一一对应,torch2.1或2.3或2.4都可以
3.其它非特殊库参照requirements.txt安装
pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
```
yangzhong's avatar
yangzhong committed
56

yangzhong's avatar
yangzhong committed
57
## 测试数据集
yangzhong's avatar
yangzhong committed
58

yangzhong's avatar
yangzhong committed
59
推理数据没有指定开源,需要自行准备数据集,需将下载的数据集按以下结构整理(以 Set5 为例)
yangzhong's avatar
yangzhong committed
60

yangzhong's avatar
yangzhong committed
61
```
yangzhong's avatar
yangzhong committed
62
63
64
65
66
67
dataset/
├── Set5/
│   ├── LR (低分辨率图像,作为输入)
│   └── HR (高分辨率图像,作为GT,用于评估)
```

yangzhong's avatar
yangzhong committed
68
本项目在dataset目录下提供了可供测试的示例数据集。
yangzhong's avatar
yangzhong committed
69

yangzhong's avatar
yangzhong committed
70
## 预训练模型
yangzhong's avatar
yangzhong committed
71

yangzhong's avatar
yangzhong committed
72
我们在代码中支持自动模型下载,如果您需要进行离线推理,请下载预训练模型[SD-Turbo](https://huggingface.co/stabilityai/sd-turbo)和S3Diff [[HuggingFace](https://huggingface.co/zhangap/S3Diff) | [GoogleDrive](https://drive.google.com/drive/folders/1cWYQYRFpadC4K2GuH8peg_hWEoFddZtj?usp=sharing)]
yangzhong's avatar
yangzhong committed
73

yangzhong's avatar
yangzhong committed
74
本项目提供了Huggingface快速下载脚本,可以运行以下命令将权重文件下载到本地`./pretrained_weight/`目录下
yangzhong's avatar
yangzhong committed
75
76

```
yangzhong's avatar
yangzhong committed
77
python downmodel.py
yangzhong's avatar
yangzhong committed
78
79
```

yangzhong's avatar
yangzhong committed
80
81
82
83
84
## 推理

#### 单机单卡推理

请在 configs/sr_test.yaml 中添加评估数据集的路径,并在 run_inference.sh 中添加 GT 文件夹的路径,然后运行:
yangzhong's avatar
yangzhong committed
85
86

```
yangzhong's avatar
yangzhong committed
87
sh run_inference.sh
yangzhong's avatar
yangzhong committed
88
89
```

yangzhong's avatar
yangzhong committed
90
src/inference_s3diff.py脚本中预训练模型改成自己本地的路径,如下:
yangzhong's avatar
yangzhong committed
91
92
93

```
# pretrained_path = hf_hub_download(repo_id="zhangap/S3Diff", filename="s3diff.pkl")   # 源代码
yangzhong's avatar
yangzhong committed
94
pretrained_path = "./pretrained_weight/zhangap/S3Diff/s3diff.pkl"  
yangzhong's avatar
yangzhong committed
95
96
97
98
99

# from huggingface_hub import snapshot_download
# sd_path = snapshot_download(repo_id="stabilityai/sd-turbo")
# 直接使用本地已下载的 sd-turbo路径
sd_path = "./pretrained_weight/stabilityai/sd-turbo/"
yangzhong's avatar
yangzhong committed
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
```

## result



## 精度



### 应用场景

### 算法类别

图像超分辨率

### 热点应用行业

医疗,教育,科研,金融

## 源码仓库及问题反馈

- https://developer.sourcefind.cn/codes/modelzoo/S3Diff
## 参考资料
- https://github.com/ArcticHare105/S3Diff