이 저장소에는 ImageNet-64, LSUN Bedroom-256 및 LSUN Cat-256에 대한 대규모 실험을 수행하기 위해 PyTorch를 사용하여 구현된 일관성 모델용 코드베이스가 포함되어 있습니다. 우리는 처음에 MIT 라이선스로 출시된 openai/guided-diffusion을 기반으로 저장소를 구축했습니다. 우리의 수정을 통해 일관성 증류, 일관성 교육은 물론 논문에서 논의된 여러 샘플링 및 편집 알고리즘에 대한 지원이 가능해졌습니다.
CIFAR-10 실험을 위한 저장소는 JAX에 있으며 openai/consistency_models_cifar10에서 찾을 수 있습니다.
주요 모델에 대한 체크포인트를 논문에 공개했습니다. 이러한 모델을 사용하기 전에 해당 모델 카드를 검토하여 해당 모델의 용도와 제한 사항을 이해하십시오.
각 모델 체크포인트에 대한 다운로드 링크는 다음과 같습니다.
ImageNet-64의 EDM: edm_imagenet64_ema.pt
l2 메트릭을 사용하는 ImageNet-64의 CD: cd_imagenet64_l2.pt
LPIPS 측정항목이 포함된 ImageNet-64의 CD: cd_imagenet64_lpips.pt
ImageNet-64의 CT: ct_imagenet64.pt
LSUN 침실-256의 EDM: edm_bedroom256_ema.pt
l2 미터법을 사용하는 LSUN Bedroom-256의 CD: cd_bedroom256_l2.pt
LPIPS 측정항목이 포함된 LSUN Bedroom-256의 CD: cd_bedroom256_lpips.pt
LSUN 침실-256의 CT: ct_bedroom256.pt
LSUN Cat-256의 EDM: edm_cat256_ema.pt
l2 메트릭이 포함된 LSUN Cat-256의 CD: cd_cat256_l2.pt
LPIPS 측정항목이 포함된 LSUN Cat-256의 CD: cd_cat256_lpips.pt
LSUN Cat-256의 CT: ct_cat256.pt
이 코드베이스의 모든 패키지를 종속성과 함께 설치하려면 다음을 실행하세요.
pip 설치 -e .
Docker와 함께 설치하려면 다음 명령을 실행하십시오.
CD docker && 빌드 만들기 && 실행하기
scripts/launch.sh에서는 EDM 훈련, 일관성 증류, 일관성 훈련, 단일 단계 생성 및 다단계 생성의 예를 제공합니다.
다양한 생성 모델을 비교하기 위해 FID, Precision, Recall 및 Inception Score를 사용합니다. 이러한 측정항목은 모두 .npz
(numpy) 파일에 저장된 샘플 배치를 사용하여 계산할 수 있습니다. openai/guided-diffusion에 설명된 것과 동일한 방식으로 cm/evaluations/evaluator.py를 사용하여 샘플을 평가할 수 있으며 참조 데이터 세트 배치가 제공됩니다.
일관성 모델은 ? ConsistencyModelPipeline
클래스를 통한 디퓨저. 아래에 예를 제공합니다.
import torchfrom 디퓨저 import ConsistencyModelPipelinedevice = "cuda"# 로드 cd_imagenet64_l2 checkpoint.model_id_or_path = "openai/diffusers-cd_imagenet64_l2"pipe = ConsistencyModelPipeline.from_pretrained(model_id_or_path, torch_dtype=torch.float16)pipe.to(device)# Onestep Samplingimage = 파이프(num_inference_steps=1).images[0]image.save("consistency_model_onestep_sample.png")# 원스텝 샘플링, 클래스 조건부 이미지 생성# ImageNet-64 클래스 라벨 145는 킹 펭귄에 해당합니다.class_id = 145class_id = torch.tensor(class_id, dtype=torch.long)이미지 = 파이프(num_inference_steps=1, class_labels=class_id).images[0]image.save("consistency_model_onestep_sample_penguin.png")# 다단계 샘플링, 클래스 조건부 이미지 생성# 시간 단계를 명시적으로 지정할 수 있습니다. 아래의 특정 시간 단계는 원본 Github 저장소에서 가져온 것입니다.# https://github.com/openai/consistency_models/blob/main/scripts/launch.sh#L77image =pipe(timesteps=[22, 0], class_labels=class_id) .images[0]image.save("consistency_model_multistep_sample_penguin.png")
pipe.unet
에서 torch.compile()
사용하면 추론 프로세스 속도를 더욱 높일 수 있습니다(PyTorch 2.0에서만 지원됨). 자세한 내용은 공식 문서를 확인해주세요. 이 지원은 ? dg845와 ayushtues의 디퓨저.
이 방법 및/또는 코드가 유용하다고 생각되면 인용을 고려해 보십시오.
@article{song2023consistency, title={일관성 모델}, 작성자={Song, Yang 및 Dhariwal, Prafulla 및 Chen, Mark 및 Sutskever, Ilya}, 저널={arXiv preprint arXiv:2303.01469}, year={2023}, }