ComfyUI-VOSR2: 원스텝 VOSR 2.0 업스케일러를 ComfyUI에 추가
VOSR 2.0용 커뮤니티 노드: Qwen-Image VAE와 DINOv2 조건화를 사용하는 원스텝 1.4B 초해상도 모델로, 가중치 자동 다운로드와 타일드 4배 업스케일링을 지원합니다.
VOSR 2.0이란
VOSR 2.0은 세 가지 고정된 구성 요소로 만들어진 원스텝 초해상도 모델입니다: LightningDiT 백본, 잠재 공간으로 사용되는 Qwen-Image 2D VAE, 그리고 조건화를 위한 DINOv2-L 비전 인코더입니다. 고전적인 크기 조정 후 샤프닝 처리와 달리 생성형 방식이므로, 저해상도 입력에 문자 그대로 존재하지 않는 구조(예: 텍스트 글리프, 얼굴 특징, 건물 윤곽)를 재구성할 수 있습니다.
미세 구조와 작은 텍스트에 대한 모델 카드의 비교로, 논문에서 VOSR 2.0을 가장 강력한 모델로 제시한 사례입니다.
구성 요소들이 하나의 학습된 세트에 속하기 때문에, 노드 패키지는 이들을 번들로 취급합니다: DiT는 자신이 학습된 Qwen 2D VAE와만 작동하며, 비전 인코더도 같은 방식으로 짝을 이룹니다. 별도로 교체할 수 있는 VAE나 인코더 입력은 없습니다.
두 개의 노드
두 노드 모두 image/upscaling/VOSR2 아래에 있습니다:
| 노드 | 클래스 | 역할 |
|---|---|---|
| VOSR 2.0 모델 로더 | VOSR2ModelLoader | 번들 폴더를 로드하고 VOSR2_MODEL을 반환하여, 대기 중인 이미지들이 가중치를 다시 빌드하지 않도록 합니다 |
| VOSR 2.0 업스케일 | VOSR2Upscale | 이미지 배치에 원스텝 초해상도를 실행합니다 |
업스케일 노드는 upscale 배율(기본값 4, 상한 없음), 잠재 데이터 노이즈용 seed(배치 항목 i는 seed + i 사용), 바이큐빅 대상에 대해 후처리하는 color_alignment 모드(wavelet, adain, none), 그리고 DiT와 VAE의 개별 타일링 제어를 받습니다.
512px를 넘으면 타일링은 선택 사항이 아닙니다
작업을 실행 대기열에 넣기 전에 꼭 읽어야 할 부분입니다: VOSR 2.0은 최대 512 px에서 기본 학습되었으므로, 업스케일 결과가 512x512를 넘을 때마다 tile_size(문서상 값은 512)를 설정해야 하며 그렇지 않으면 품질이 저하됩니다. 1024 px를 훨씬 넘는 출력의 경우 vae_tile_size도 약 1024로 설정해야 합니다. 그렇지 않으면 전체 이미지 VAE 디코드가 메모리 부족으로 실패할 가능성이 높습니다.
![]() | ![]() |
|---|---|
| 작은 텍스트가 있는 저해상도 입력 | VOSR 2.0 출력 |
로더는 무엇이든 빌드하기 전에 고정된 VOSR 2.0 아키텍처와 args.json을 검증하므로, 호환되지 않는 checkpoint는 부분적으로 로딩되는 대신 명확한 메시지와 함께 실패합니다. models/vosr2/ 아래에 args.json이 있는 번들 폴더는 모델 드롭다운에 표시되지만, 자동으로 다운로드되는 것은 VOSR2뿐입니다.
워크플로
예제 워크플로: 로더와 업스케일을 두 쌍으로 구성하여, 로드된 번들을 이미지별 처리 경로에서 분리합니다.
사용 가능 여부
ylchen333/ComfyUI-VOSR2를 ComfyUI/custom_nodes에 복제하고 재시작하세요. 최근 PyTorch가 포함된 ComfyUI가 필요하며, 패키지가 이를 미리 확인하므로 오래된 환경에서는 노드 목록에서 사라지는 대신 명확한 오류 하나를 기록합니다.
첫 실행 시 로더는 고정된 CSWRY/VOSR 저장소에서 누락된 구성 요소를 models/vosr2/VOSR2/ 번들로 다운로드하고, 이후에는 다운로드를 건너뜁니다. 해당 저장소의 DINOv2-L 파일은 원시 PyTorch pickle이며, 로더가 자동으로 safetensors로 변환합니다. 오프라인 설치를 위한 수동 변환 방법은 README에 문서화되어 있습니다.


댓글
GitHub로 로그인하고 토론에 참여하세요.