SwinIR
이미지 복원을 위한 Swin Transformer 네트워크입니다. LibreYOLO는 4배 초해상도 체크포인트인 공식 lightweight 생성기, 실제 환경 medium 생성기, 실제 환경 large 생성기의 추론과 검증을 제공합니다.
- 작업
- restore
- 크기
- s, m, l at 64 px
- 설치
pip install libreyolo- 지원 티어
- 추론 전용, v부터 지원. 예측, 검증, 내보내기만 지원합니다. 학습 기능은 적용되지 않습니다.
- 라이선스
- 코드 Apache-2.0, 가중치 Apache-2.0. 상업적 사용
설치
SwinIR에는 선택적 extra가 필요하지 않습니다. 가져오는 모든 항목이 기본 설치에 포함됩니다.
pip install libreyolo예측
처음 사용할 때 Hugging Face에서 가중치를 다운로드해 로컬에 캐시합니다.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreSwinIRm-restore.pt")result = model(SAMPLE_IMAGE, save=True) restored = result.restoredprint(restored.array.shape, restored.array.dtype)libreyolo predict model=LibreSwinIRm-restore.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRl-restore.pt") # tile은 순전파를 겹치는 타일로 나누고 이음새를 다시 블렌딩합니다.# tile_pad는 잘라내기 전에 각 타일 주변에 추가하는 halo입니다.# 둘 다 CLI 플래그가 아니라 Python 전용 키워드 인수입니다.result = model("large-photo.jpg", tile=512, tile_pad=16, save=True)복원 결과에는 박스가 없습니다. result.restored는 입력의 각 차원보다 4배 큰 캔버스에 담긴 조밀한 (H, W, 3) uint8 RGB 이미지입니다. save=True는 주석이 달린 플롯 대신 해당 이미지를 직접 기록합니다. 입력은 크기를 조정하지 않고 8의 배수로 패딩하므로 예측이 사진 자체 해상도에서 실행됩니다. 메모리보다 큰 소스는 tile과 tile_pad로 나눌 수 있으며 출력에서 타일 이음새를 다시 블렌딩합니다. 소스, 스트리밍, 결과 처리는 예측을 참조합니다.
변형
세 가지 크기는 모두 4배 업스케일로 고정됩니다. s는 residual Swin Transformer block(RSTB) 단계 네 개와 pixel-shuffle-direct 업샘플링을 사용하는 공식 lightweight 생성기입니다. m과 l은 각각 RSTB 단계 여섯 개와 아홉 개를 사용하고, bicubic 다운스케일링만이 아니라 실제 환경의 열화를 위해 구축된 nearest-neighbor-plus-convolution 업샘플러를 사용하는 실제 환경 medium 및 large 생성기입니다.
검증
val()은 복원된 출력과 깨끗한 대상 이미지 사이의 PSNR과 SSIM을 측정합니다. 둘 다 테두리 자르기나 크기 조정 없이 원본 캔버스의 RGB에서 계산합니다. SSIM은 sigma 1.5인 11x11 가우시안 창을 사용하고 세 색상 채널에서 평균합니다.
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRm-restore.pt")metrics = model.val(data="my-restore-dataset.yaml") print(metrics["metrics/PSNR"])print(metrics["metrics/SSIM"])libreyolo val model=LibreSwinIRm-restore.pt data=my-restore-dataset.yaml데이터셋 인수는 열화된 입력 이미지 디렉터리와 해상도가 일치하는 깨끗한 대상 이미지 디렉터리를 페어링하는 YAML입니다. 정확한 키는 데이터셋 형식을 참조합니다.
내보내기
| 작업 | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| restore | restore to ONNX: 지원함 | restore to TorchScript: 지원함 | restore to ExecuTorch: 지원하지 않음 | restore to TensorRT: 지원함 | restore to OpenVINO: 지원함 | restore to Paddle: 지원하지 않음 | restore to MNN: 지원하지 않음 | restore to RKNN: 지원하지 않음 | restore to ncnn: 지원하지 않음 | restore to TFLite: 지원함 | restore to CoreML: 지원하지 않음 | restore to Core AI: 지원하지 않음 |
내보낸 아티팩트는 파일 접미사에 따라 LibreYOLO()로 다시 불러옵니다. 따라서 .onnx 또는 .engine 파일은 체크포인트처럼 동작하며 동일한 Results를 반환합니다. ExecuTorch와 매트릭스에서 차단으로 표시된 모든 형식은 이 계열에서 사용할 수 없습니다. ONNX, TorchScript, TensorRT, OpenVINO, TFLite는 사용할 수 있습니다. 각 형식이 받는 인수와 일부 형식이 추가하는 extra는 내보내기에 나와 있습니다.
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRm-restore.pt") # imgsz를 생략하면 작업 해상도가 아니라 작은 내부 패치 크기가 기본값이므로# 배포 환경에서 실제로 모델에 공급하는 크기를 전달합니다.model.export(format="onnx", imgsz=512)model.export(format="tensorrt", imgsz=512, half=True)libreyolo export model=LibreSwinIRm-restore.pt format=onnx imgsz=512from libreyolo import LibreYOLO, SAMPLE_IMAGE # 팩토리는 파일 접미사에 따라 라우팅하므로 내보낸 아티팩트도# 다른 체크포인트처럼 불러와 동일한 Results 객체를 반환합니다.model = LibreYOLO("LibreSwinIRm-restore.onnx")result = model(SAMPLE_IMAGE) print(result.restored.array.shape)체크포인트
이 계열에 공개된 모든 가중치 파일입니다.
| 파일 | 입력(px) | 가중치 라이선스 |
|---|---|---|
| restore | ||
| LibreSwinIRs-restore.pt | apache-2.0 | |
| LibreSwinIRm-restore.pt | apache-2.0 | |
| LibreSwinIRl-restore.pt | apache-2.0 | |
위의 모든 파일은 현재 LibreYOLO 조직에 있으며 처음 사용할 때 내려받습니다.
라이선스
내려받는 특정 가중치의 Hugging Face 저장소에서 라이선스를 확인하십시오. LibreYOLO 조직의 모든 체크포인트에는 라이선스가 있으며 한 계열 안에서도 항상 같지는 않습니다. 해당 저장소가 신뢰할 수 있는 기준입니다. 아래 요약은 이 페이지를 마지막으로 검증했을 때 적용된 내용을 설명합니다.
관련 라이선스에 관한 설명이며 법률 자문이 아닙니다. 상업적으로 중요한 사안이라면 라이선스를 직접 읽고 별도의 법률 자문을 받으십시오.
- 원작
- SwinIR, Computer Vision Lab, ETH Zurich
- 업스트림 라이선스
- Apache-2.0
- LibreYOLO 코드
- MIT
- 가중치
- Apache-2.0, huggingface.co/LibreYOLO에 다시 게시됨
- 해석
- Apache-2.0 is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep its license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. It places no obligation on your own application code. LibreYOLO's checkpoints are format conversions of the official pretrained generators, with the learned parameters unchanged; SwinIR's real-world variants need a degradation and GAN training pipeline that is not wired into this library, so there is no LibreYOLO-trained variant to license separately.
인용
@article{liang2021swinir,
title={SwinIR: Image Restoration Using Swin Transformer},
author={Liang, Jingyun and Cao, Jiezhang and Sun, Guolei and Zhang, Kai and Van Gool, Luc and Timofte, Radu},
journal={arXiv preprint arXiv:2108.10257},
year={2021}
}github.com/JingyunLiang/SwinIR#citation에 있는 저자의 인용 블록에서 복사했습니다.