SwinIR

이미지 복원을 위한 Swin Transformer 네트워크입니다. LibreYOLO는 4배 초해상도 체크포인트인 공식 lightweight 생성기, 실제 환경 medium 생성기, 실제 환경 large 생성기의 추론과 검증을 제공합니다.

작업
restore
크기
s, m, l at 64 px
설치
pip install libreyolo
지원 티어
추론 전용, v부터 지원. 예측, 검증, 내보내기만 지원합니다. 학습 기능은 적용되지 않습니다.
업스트림
Computer Vision Lab, ETH Zurich의 SwinIR, Apache-2.0. 논문, 소스
라이선스
코드 Apache-2.0, 가중치 Apache-2.0. 상업적 사용

설치

SwinIR에는 선택적 extra가 필요하지 않습니다. 가져오는 모든 항목이 기본 설치에 포함됩니다.

bash
pip install libreyolo

예측

처음 사용할 때 Hugging Face에서 가중치를 다운로드해 로컬에 캐시합니다.

Python
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)
CLI
libreyolo predict model=LibreSwinIRm-restore.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
큰 이미지용 타일 처리
from 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의 배수로 패딩하므로 예측이 사진 자체 해상도에서 실행됩니다. 메모리보다 큰 소스는 tiletile_pad로 나눌 수 있으며 출력에서 타일 이음새를 다시 블렌딩합니다. 소스, 스트리밍, 결과 처리는 예측을 참조합니다.

변형

세 가지 크기는 모두 4배 업스케일로 고정됩니다. s는 residual Swin Transformer block(RSTB) 단계 네 개와 pixel-shuffle-direct 업샘플링을 사용하는 공식 lightweight 생성기입니다. ml은 각각 RSTB 단계 여섯 개와 아홉 개를 사용하고, bicubic 다운스케일링만이 아니라 실제 환경의 열화를 위해 구축된 nearest-neighbor-plus-convolution 업샘플러를 사용하는 실제 환경 medium 및 large 생성기입니다.

검증

val()은 복원된 출력과 깨끗한 대상 이미지 사이의 PSNR과 SSIM을 측정합니다. 둘 다 테두리 자르기나 크기 조정 없이 원본 캔버스의 RGB에서 계산합니다. SSIM은 sigma 1.5인 11x11 가우시안 창을 사용하고 세 색상 채널에서 평균합니다.

Python
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"])
CLI
libreyolo val model=LibreSwinIRm-restore.pt data=my-restore-dataset.yaml

데이터셋 인수는 열화된 입력 이미지 디렉터리와 해상도가 일치하는 깨끗한 대상 이미지 디렉터리를 페어링하는 YAML입니다. 정확한 키는 데이터셋 형식을 참조합니다.

내보내기

작업ONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
restorerestore 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는 내보내기에 나와 있습니다.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRm-restore.pt") # imgsz를 생략하면 작업 해상도가 아니라 작은 내부 패치 크기가 기본값이므로# 배포 환경에서 실제로 모델에 공급하는 크기를 전달합니다.model.export(format="onnx", imgsz=512)model.export(format="tensorrt", imgsz=512, half=True)
CLI
libreyolo export model=LibreSwinIRm-restore.pt format=onnx imgsz=512
내보낸 파일 사용
from libreyolo import LibreYOLO, SAMPLE_IMAGE # 팩토리는 파일 접미사에 따라 라우팅하므로 내보낸 아티팩트도# 다른 체크포인트처럼 불러와 동일한 Results 객체를 반환합니다.model = LibreYOLO("LibreSwinIRm-restore.onnx")result = model(SAMPLE_IMAGE) print(result.restored.array.shape)

체크포인트

이 계열에 공개된 모든 가중치 파일입니다.

파일입력(px)가중치 라이선스
restore
LibreSwinIRs-restore.ptapache-2.0
LibreSwinIRm-restore.ptapache-2.0
LibreSwinIRl-restore.ptapache-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에 있는 저자의 인용 블록에서 복사했습니다.

LibreYOLO v1.5.0에서 검증되었습니다. 이 페이지의 지원 표, 체크포인트, 벤치마크 수치는 출시된 라이브러리와 공개된 가중치에서 생성되며 수동으로 작성되지 않습니다.