종이 | 프로젝트
이것은 Pytorch 의 반복 정제 (SR3)를 통한 이미지 초고 해상도 의 비공식적 구현입니다.
논문의 설명과 다를 수있는 몇 가지 구현 세부 사항이 있으며, 이는 세부 사항이 누락되어 실제 SR3 구조와 다를 수 있습니다. 구체적으로, 우리 :
DDPM 같은 RESNET 블록 및 채널 연결 스타일을 사용했습니다.DDPM 처럼.FilM 구조가 WaveGrad 에서했던 것처럼, 아핀 변환없이 그것을 포함시켰다. 단지 업 스케일을 원한다면
★★★ NEW : 후속 팔레트-이미지-이미지-이화 모델을 사용할 수 있습니다. 여기에서 세부 사항을 참조하십시오. ★★★
참고 : 최대 리버스 단계 예산을 설정했습니다 Nvidia 1080Ti , 이미지 노이즈 및 색조 편차 의 모델 매개 변수는 때때로 고해상도 이미지에 나타나서 점수가 낮습니다. 최적화의 여지가 많이 있습니다. 보다 광범위한 실험 및 코드 향상에 대한 기여에 환영합니다.
| 작업/메트릭 | SSIM (+) | PSNR (+) | 버팀대(-) | IS (+) |
|---|---|---|---|---|
| 16 × 16-> 128 × 128 | 0.675 | 23.26 | - | - |
| 64 × 64-> 512 × 512 | 0.445 | 19.87 | - | - |
| 128 × 128 | - | - | ||
| 1024 × 1024 | - | - |
![]() | ![]() | ![]() |
|---|
![]() | ![]() | ![]() |
|---|---|---|
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
|---|
pip install - r requirement . txt이 논문은 "Denoing Diffusion 확률 모델"을 기반으로하며, 각각 Timesteps/Gamma를 모델 임베딩 입력으로 사용하는 DDPM/SR3 네트워크 구조를 모두 구축합니다. 실험에서 SR3 모델은 동일한 역 단계와 학습 속도로 더 나은 시각적 결과를 얻을 수 있습니다. 주석이 달린 접미사 이름이있는 JSON 파일을 선택하여 다른 모델을 훈련시킬 수 있습니다.
| 작업 | 플랫폼 (코드 : QWER) |
|---|---|
| FFHQ -Celebahq에서 16 × 16-> 128 × 128 | 구글 드라이브 | 바이두 윤 |
| FFHQ -Celebahq에서 64 × 64-> 512 × 512 | 구글 드라이브 | 바이두 윤 |
| FFHQ에서 128 × 128 얼굴 생성 | 구글 드라이브 | 바이두 윤 |
# Download the pretrained model and edit [sr|sample]_[ddpm|sr3]_[resolution option].json about "resume_state":
"resume_state" : [ your pretrained model ' s path ]데이터가없는 경우 다음 단계를 수행하여 데이터를 준비 할 수 있습니다.
데이터 세트를 다운로드하고 스크립트를 사용하여 LMDB 또는 PNG 형식으로 준비하십시오.
# Resize to get 16×16 LR_IMGS and 128×128 HR_IMGS, then prepare 128×128 Fake SR_IMGS by bicubic interpolation
python data / prepare_data . py - - path [ dataset root ] - - out [ output root ] - - size 16 , 128 - l그런 다음 데이터 세트 구성을 데이터 경로 및 이미지 해상도로 변경해야합니다.
"datasets" : {
"train" : {
"dataroot" : " dataset/ffhq_16_128 " , // [output root] in prepare.py script
"l_resolution" : 16 , // low resolution need to super_resolution
"r_resolution" : 128 , // high resolution
"datatype" : " lmdb " , //lmdb or img, path of img files
},
"val" : {
"dataroot" : " dataset/celebahq_16_128 " , // [output root] in prepare.py script
}
},다음 단계를 통해 이미지 데이터를 사용할 수 있으며 데이터 세트 폴더에 몇 가지 예가 있습니다.
처음에는 이와 같은 이미지 레이아웃을 구성해야합니다.이 단계는 data/prepare_data.py 를 통해 자동으로 완료 할 수 있습니다.
# set the high/low resolution images, bicubic interpolation images path
dataset/celebahq_16_128/
├── hr_128 # it's same with sr_16_128 directory if you don't have ground-truth images.
├── lr_16 # vinilla low resolution images
└── sr_16_128 # images ready to super resolution # super resolution from 16 to 128
python data / prepare_data . py - - path [ dataset root ] - - out celebahq - - size 16 , 128 - l참고 : 바닐라 고해상도 이미지가 있든 없든 상기 스크립트를 사용할 수 있습니다.
그런 다음 데이터 세트 구성을 데이터 경로 및 이미지 해상도로 변경해야합니다.
"datasets" : {
"train|val" : { // train and validation part
"dataroot" : " dataset/celebahq_16_128 " ,
"l_resolution" : 16 , // low resolution need to super_resolution
"r_resolution" : 128 , // high resolution
"datatype" : " img " , //lmdb or img, path of img files
}
}, # Use sr.py and sample.py to train the super resolution task and unconditional generation task, respectively.
# Edit json files to adjust network structure and hyperparameters
python sr . py - p train - c config / sr_sr3 . json # Edit json to add pretrain model path and run the evaluation
python sr . py - p val - c config / sr_sr3 . json
# Quantitative evaluation alone using SSIM/PSNR metrics on given result root
python eval . py - p [ result root ] Own Data 의 단계처럼 이미지 경로를 설정 한 다음 스크립트를 실행하십시오.
# run the script
python infer . py - c [ config file ]라이브러리는 이제 가중치 및 바이어스를 사용한 실험 추적, 모델 체크 포인팅 및 모델 예측 시각화를 지원합니다. 액세스 토큰을 사용하여 W & B를 설치하고 로그인해야합니다.
pip install wandb
# get your access token from wandb.ai/authorize
wandb login
W & B 로깅 기능은 sr.py , sample.py 및 infer.py 파일에 추가됩니다. 로깅을 시작하기 위해 -enable_wandb 통과 할 수 있습니다.
-log_wandb_ckpt :이 인수를 -enable_wandb 와 함께 전달하여 모델 체크 포인트를 W & B 인공물로 저장하십시오. sr.py 와 sample.py 모두 모델 체크 포인팅으로 활성화됩니다.-log_eval :이 인수를 -enable_wandb 와 함께 전달하여 평가 결과를 대화식 W & B 테이블로 저장하십시오. 이 기능으로 sr.py 만 활성화되어 있습니다. 평가 모드에서 sample.py 실행하면 생성 된 이미지가 자동으로 이미지 미디어 패널로 기록됩니다.-log_infer : infer.py 실행하는 동안이 인수를 -enable_wandb 와 함께 통과하여 추론 결과를 대화식 W & B 테이블로 기록합니다.이 기능을 사용하는 것에 대한 자세한 내용은 여기에서 찾을 수 있습니다.
우리의 작업은 다음과 같은 이론적 인 작품을 기반으로합니다.
또한 다음 프로젝트에서 많은 혜택을 누리고 있습니다.