이에 대한 중요한 업그레이드인 Dream Factory를 출시했음을 알려드립니다. (선택 사항) GUI, 진정한 동시 다중 GPU 지원, 전체 EXIF 메타데이터 지원이 포함된 통합 갤러리 및 기타 여러 새로운 기능이 있습니다.
Stable Diffusion에 초점을 맞추기 위해 VQGAN 및 Disco Diffusion 지원을 중단했으므로 VQGAN 및/또는 Disco Diffusion을 원한다면 지금은 이 기능을 고수해야 합니다. 그렇지 않다면 모두가 Dream Factory로 이전하는 것을 권장합니다! 이 저장소에 버그 수정을 계속 패치할 예정이지만 앞으로 새로운 기능을 추가하지는 않을 것 같습니다.
AI로 생성된 아트웍의 대규모 배치 생성을 로컬에서 자동화합니다. 사용자가 선택한 주제, 스타일/아티스트 등을 결합한 대규모 프롬프트 대기열을 자동화하는 기능을 통해 GPU를 활용하여 연중무휴 24시간 AI 생성 아트워크를 만들어보세요! 샘플 사진 이후에 어떤 모델을 사용할 수 있는지에 대한 자세한 내용을 알아보세요.
이 프로세스를 통해 생성한 몇 가지 예시 이미지는 다음과 같습니다(선별되고 선명하게 처리됨).
나는 이 프로젝트에 사용된 모델을 만들거나 훈련하지 않았으며 원래 코딩에도 참여하지 않았습니다. 원래 Colab 버전을 수정하여 로컬에서 실행되도록 하고 일부 자동화 지원을 추가했습니다. 현재 지원되는 모델과 원래 구현에 대한 링크:
적절한 양의 VRAM을 갖춘 Nvidia GPU가 필요합니다. 모델 및 설정에 따라 512x512 출력 이미지에는 12GB VRAM이 충분하고, 384x384에는 8GB면 충분합니다(합리적인 최소값은 8GB로 간주되어야 합니다!). 1024x1024 이미지를 생성하려면 ~24GB 이상의 VRAM이 필요합니다. 작은 이미지를 생성한 다음 ESRGAN이나 다른 패키지를 통해 확대하는 것도 매우 좋은 결과를 제공합니다.
AMD GPU에서 실행할 수 있어야 하지만 ROCm 버전의 Pytorch를 설치하려면 Linux에 있어야 합니다. Linux 시스템에 넣을 AMD GPU가 없으므로 직접 테스트하지 않았습니다.
이 지침은 Nvidia 3080 Ti GPU(12GB VRAM)가 탑재된 Windows 10 데스크톱과 기존 Nvidia Tesla M40 GPU(24GB VRAM)가 탑재된 Ubuntu Server 20.04.3 시스템에서 테스트되었습니다.
[1] Anaconda를 설치하고 루트 터미널을 열고 새 환경을 생성하고 활성화합니다.
conda create --name ai-art python=3.9
conda activate ai-art
[2] Pytorch를 설치합니다:
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
여기에 있는 온라인 도구를 사용하여 Pytorch 설치를 사용자 정의할 수 있습니다.
[3] 기타 필수 Python 패키지를 설치합니다.
conda install -c anaconda git urllib3
pip install transformers keyboard pillow ftfy regex tqdm omegaconf pytorch-lightning IPython kornia imageio imageio-ffmpeg einops torch_optimizer
[4] 이 저장소를 복제하고 해당 디렉터리로 전환합니다.
git clone https://github.com/rbbrdckybk/ai-art-generator
cd ai-art-generator
Linux 사용자는 clone 명령에서 URL 앞뒤에 작은따옴표가 필요할 수 있습니다.
[5] 추가로 필요한 저장소를 복제합니다.
git clone https://github.com/openai/CLIP
git clone https://github.com/CompVis/taming-transformers
[6] 기본 VQGAN 사전 훈련된 모델 체크포인트 파일을 다운로드합니다.
mkdir checkpoints
curl -L -o checkpoints/vqgan_imagenet_f16_16384.yaml -C - "https://heibox.uni-heidelberg.de/d/a7530b09fed84f80a887/files/?p=%2Fconfigs%2Fmodel.yaml&dl=1"
curl -L -o checkpoints/vqgan_imagenet_f16_16384.ckpt -C - "https://heibox.uni-heidelberg.de/d/a7530b09fed84f80a887/files/?p=%2Fckpts%2Flast.ckpt&dl=1"
Linux 사용자는 컬 명령의 큰따옴표를 작은따옴표로 바꿔야 합니다.
[7] (선택 사항) 사전 훈련된 추가 모델을 다운로드합니다.
추가 모델은 필요하지 않지만 더 많은 옵션을 제공합니다. 다음은 사용 가능한 사전 학습된 모델의 좋은 목록입니다.
예를 들어, FFHQ 모델(얼굴 훈련)도 원하는 경우:
curl -L -o checkpoints/ffhq.yaml -C - "https://app.koofr.net/content/links/0fc005bf-3dca-4079-9d40-cdf38d42cd7a/files/get/2021-04-23T18-19-01-project.yaml?path=%2F2021-04-23T18-19-01_ffhq_transformer%2Fconfigs%2F2021-04-23T18-19-01-project.yaml&force"
curl -L -o checkpoints/ffhq.ckpt -C - "https://app.koofr.net/content/links/0fc005bf-3dca-4079-9d40-cdf38d42cd7a/files/get/last.ckpt?path=%2F2021-04-23T18-19-01_ffhq_transformer%2Fcheckpoints%2Flast.ckpt"
[8] (선택 사항) VQGAN+CLIP 테스트:
python vqgan.py -s 128 128 -i 200 -p "a red apple" -o output/output.png
출력 디렉터리에 생성된 output.png가 표시되어야 하며 이는 대략 사과와 유사해야 합니다.
[9] CLIP 기반 확산을 위한 패키지 설치(VQGAN+CLIP에만 관심이 있는 경우 여기에서 끝까지 모든 내용을 건너뛸 수 있습니다):
pip install ipywidgets omegaconf torch-fidelity einops wandb opencv-python matplotlib lpips datetime timm
conda install pandas
[10] CLIP 기반 확산을 위한 복제 저장소:
git clone https://github.com/crowsonkb/guided-diffusion
git clone https://github.com/assafshocher/ResizeRight
git clone https://github.com/CompVis/latent-diffusion
[11] CLIP 유도 확산에 필요한 모델 다운로드:
mkdir contentmodels
curl -L -o content/models/256x256_diffusion_uncond.pt -C - "https://openaipublic.blob.core.windows.net/diffusion/jul-2021/256x256_diffusion_uncond.pt"
curl -L -o content/models/512x512_diffusion_uncond_finetune_008100.pt -C - "http://batbot.tv/ai/models/guided-diffusion/512x512_diffusion_uncond_finetune_008100.pt"
curl -L -o content/models/secondary_model_imagenet_2.pth -C - "https://ipfs.pollinations.ai/ipfs/bafybeibaawhhk7fhyhvmm7x24zwwkeuocuizbqbcg5nqx64jq42j75rdiy/secondary_model_imagenet_2.pth"
mkdir contentmodelssuperres
curl -L -o content/models/superres/project.yaml -C - "https://heibox.uni-heidelberg.de/f/31a76b13ea27482981b4/?dl=1"
curl -L -o content/models/superres/last.ckpt -C - "https://heibox.uni-heidelberg.de/f/578df07c8fc04ffbadf3/?dl=1"
Linux 사용자는 다시 컬 명령의 큰따옴표를 작은따옴표로 바꾸고, mkdir 백슬래시를 슬래시로 바꿔야 합니다.
[12] (선택 사항) CLIP 유도 확산 테스트:
python diffusion.py -s 128 128 -i 200 -p "a red apple" -o output.png
출력 디렉터리에 생성된 output.png가 표시되어야 하며 이는 대략 사과와 유사해야 합니다.
[13] Stable Diffusion 저장소 복제(SD에 관심이 없으면 여기부터 끝까지 모든 내용을 건너뛸 수 있습니다):
git clone https://github.com/rbbrdckybk/stable-diffusion
[14] Stable Diffusion에 필요한 추가 종속성을 설치합니다.
pip install diffusers
[15] Stable Diffusion 사전 훈련된 체크포인트 파일을 다운로드합니다.
mkdir stable-diffusionmodelsldmstable-diffusion-v1
curl -L -o stable-diffusion/models/ldm/stable-diffusion-v1/model.ckpt -C - "https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt"
컬 명령이 체크포인트를 다운로드하지 않으면 로그인 뒤에 게이트됩니다. 여기에서 등록해야 하며(이메일과 이름만 필요) 여기에서 체크포인트 파일을 다운로드할 수 있습니다.
다운로드한 후 위에서 만든 디렉터리에 .ckpt 파일을 배치하고 이름을 model.ckpt 로 지정해야 합니다.
[16] (선택 사항) 테스트 안정 확산:
SD를 테스트하는 가장 쉬운 방법은 !PROCESS = stablediff 및 단일 주제를 사용하여 간단한 프롬프트 파일을 만드는 것입니다. 자세한 내용은 example-prompts.txt 및 다음 섹션을 참조하세요. 먼저 test.txt 라는 간단한 프롬프트 파일을 생성한다고 가정하고 다음을 실행하여 테스트할 수 있습니다.
python make_art.py test.txt
성공하면 이미지가 출력 디렉터리에 저장되어야 합니다(날짜 및 프롬프트 파일의 이름을 딴 하위 디렉터리로 구성).
[17] ESRGAN/GFPGAN 설정(이미지를 확대할 계획이 없다면 이 항목과 다른 모든 항목을 건너뛸 수 있습니다):
git clone https://github.com/xinntao/Real-ESRGAN
pip install basicsr facexlib gfpgan
cd Real-ESRGAN
curl -L -o experiments/pretrained_models/RealESRGAN_x4plus.pth -C - "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth"
python setup.py develop
cd ..
이제 끝났습니다!
실행하는 동안 GPU VRAM이 부족하여 오류가 발생하고 한동안 설치를 업데이트하지 않은 경우 다음과 같은 더 중요한 패키지 중 일부를 업데이트해 보십시오.
pip install transformers -U
기본적으로 이미지를 생성하는 데 사용할 주제와 스타일이 포함된 텍스트 파일을 생성하기만 하면 됩니다. 프롬프트 파일에 5개의 주제와 20개의 스타일이 있는 경우 총 100개의 출력 이미지가 생성됩니다(각 주제에 대해 20개의 스타일 이미지).
프롬프트 파일이 어떻게 보이는지 보려면 example-prompts.txt 를 살펴보세요. 지금은 [주제] 및 [스타일] 영역을 제외한 모든 항목을 무시할 수 있습니다. '#'으로 시작하는 줄은 주석이므로 무시되며, '!'로 시작하는 줄은 무시됩니다. 설정 지시문이며 다음 섹션에서 설명됩니다. 지금은 사용하고 싶은 대로 예제 주제와 스타일을 수정하세요.
example-prompts.txt를 원하는 대로 채운 후 다음을 실행하면 됩니다.
python make_art.py example-prompts.txt
하드웨어 및 설정에 따라 각 이미지를 생성하는 데 몇 초에서 몇 시간(이전 하드웨어의 경우)이 소요됩니다. Stable Diffusion을 실행할 수 있다면 속도와 이미지 품질 모두에서 최상의 결과를 얻기 위해 강력히 권장합니다.
출력 이미지는 기본적으로 출력/[현재 날짜]-[프롬프트 파일 이름]/ 디렉터리에 생성됩니다. 출력 디렉토리에는 이미지를 만드는 데 사용된 주제 및 스타일에 따라 이름이 지정된 각 이미지에 대한 JPG 파일이 포함됩니다. 예를 들어, 주제 중 하나로 "오토바이를 탄 원숭이"가 있고 스타일로 "피카소의 작품"이 있는 경우 출력 이미지는 출력/[현재 날짜]-[프롬프트 파일 이름]/a로 생성됩니다. -monkey-on-a-motorcycle-by-picasso.jpg(파일 이름은 사용된 프로세스에 따라 조금씩 달라질 수 있습니다).
언제든지 CTRL+SHIFT+P를 눌러 실행을 일시 중지할 수 있습니다(일시 중지는 현재 이미지 렌더링이 완료되면 적용됩니다). 일시 중지를 해제하려면 CTRL+SHIFT+P를 다시 누르세요. 이 기능을 기본 컴퓨터에서 실행하고 잠시 동안 다른 용도로 GPU를 사용해야 하는 경우 유용합니다. 프롬프트 파일을 변경한 경우 CTRL+SHIFT+R을 눌러 프롬프트 파일을 다시 로드할 수도 있습니다. 현재 작업 큐는 삭제되고 프롬프트 파일의 내용으로 새 작업 큐가 만들어집니다. 키보드 입력은 Windows에서만 작동합니다.
각 이미지를 생성하는 데 사용된 설정은 기본적으로 각 출력 JPG 파일에 메타데이터로 저장됩니다. EXIF 유틸리티를 사용하거나 Windows 탐색기에서 이미지 파일을 마우스 오른쪽 버튼으로 클릭하고 "속성"을 선택한 다음 "세부 정보" 창을 클릭하면 메타데이터 정보를 다시 읽을 수 있습니다. "설명" 필드에는 이미지를 만드는 데 사용되는 명령이 들어 있습니다.
프롬프트 파일에 지시문을 포함하여 뒤따르는 모든 프롬프트에 대한 설정을 수정할 수 있습니다. 이러한 설정 지시문은 프롬프트 파일의 [제목] 영역 내부에 다음 형식으로 자체 줄에 입력하여 지정됩니다.
![변경할 설정] = [새 값]
[setting tochange] 의 경우 유효한 지시문은 다음과 같습니다.
몇 가지 예:
!PROCESS = vqgan
현재 AI 이미지 생성 프로세스가 설정됩니다. 유효한 옵션은 VQGAN+CLIP의 경우 vqgan , CLIP 유도 확산 (Disco Diffusion)의 경우 확산 또는 Stable Diffusion의 경우 stablediff입니다 .
!CUDA_DEVICE = 0
이렇게 하면 GPU 0이 강제로 사용됩니다(기본값). GPU가 여러 개인 경우 유용합니다. 각 인스턴스에는 고유한 GPU ID를 지정하는 자체 프롬프트 파일이 포함되어 여러 인스턴스를 실행할 수 있습니다.
!WIDTH = 384
!HEIGHT = 384
그러면 출력 이미지 크기가 384x384로 설정됩니다. 출력 크기가 클수록 더 많은 GPU VRAM이 필요합니다. Stable Diffusion의 경우 이 값은 64의 배수여야 합니다.
!TRANSFORMER = ffhq
그러면 VQGAN이 기본값(vqgan_imagenet_f16_16384) 대신 FFHQ 변환기(얼굴에 다소 더 좋음)를 사용하도록 지시합니다. 위 설정 지침의 7단계에 따라 ffhq 변환기와 다른 여러 변환기를 얻을 수 있습니다.
여기에서 지정하는 모든 항목은 체크포인트 디렉터리에 .ckpt 및 .yaml 파일로 존재해야 합니다.
!INPUT_IMAGE = samples/face-input.jpg
그러면 기본 임의 노이즈 대신 Samples/face-input.jpg(또는 지정한 이미지)가 시작 이미지로 사용됩니다. 좋은 결과를 얻으려면 입력 이미지가 출력 이미지와 가로 세로 비율이 동일해야 합니다. Stable Diffusion을 사용하는 경우 출력 이미지 크기는 입력 이미지와 동일합니다(높이/너비 설정은 무시됩니다).
!SEED = 42
입력 시드 값으로 난수(기본값) 대신 42를 사용합니다. 재현성에 유용합니다. 다른 모든 매개변수가 동일한 경우 동일한 시드 값을 사용하면 여러 실행에서 동일한 이미지가 생성됩니다. 아무 것도 설정하지 않거나 -1로 설정하면 임의의 값을 사용하도록 재설정됩니다.
!INPUT_IMAGE =
이러한 값을 아무것도 설정하지 않으면 기본값으로 돌아갑니다. 따라서 이 예에서는 시작 이미지가 사용되지 않습니다.
!STEPS = 50
Stable Diffusion을 사용할 때 단계 수(반복과 유사)를 50(기본값)으로 설정합니다. 값이 높을수록 시간이 더 걸리고 이미지 품질이 향상될 수 있습니다. 100을 초과하는 값은 낮은 값과 비교하여 눈에 띄는 차이를 거의 생성하지 않습니다.
!SCALE = 7.5
Stable Diffusion을 사용할 때 안내 척도를 7.5(기본값)로 설정합니다. 값이 높을수록(어느 정도 25개 이상의 결과는 이상할 수 있음) 출력이 프롬프트에 더 밀접하게 부합하게 됩니다.
!SAMPLES = 1
Stable Diffusion을 사용할 때 샘플링할 횟수를 1(기본값)로 설정합니다. 1보다 큰 값을 사용하면 이미지당 시간이 약간 절약되어 각 프롬프트에 대해 여러 출력 이미지가 생성됩니다. 이를 증가시키는 데 필요한 GPU VRAM에는 비용이 없습니다.
!STRENGTH = 0.75
시작 이미지의 영향을 0.75(기본값)로 설정합니다. 입력 이미지에 Stable Diffusion을 사용할 때만 관련됩니다. 유효한 값은 0-1 사이입니다. 1은 입력 이미지가 완전히 파괴되는 것을 의미하고, 0은 시작 이미지가 완전히 그대로 유지되는 것을 의미합니다. 0.25에서 0.75 사이의 값은 흥미로운 결과를 제공하는 경향이 있습니다.
!SD_LOW_MEMORY = no
Stable Diffusion을 사용할 때 GPU 메모리 요구 사항이 훨씬 낮은 분기된 저장소를 사용합니까(예/아니요)? 이것을 yes 로 설정하면 훨씬 적은 GPU 메모리로 더 높은 해상도의 이미지를 생성할 수 있는 메모리 최적화 버전의 SD를 사용하도록 전환됩니다(512x512 이미지에는 약 4GB의 VRAM만 필요함). 단점은 기본 공식 저장소에 비해 추론이 훨씬 느리다는 것입니다. 비교를 위해 RTX 3060에서는 기본 설정에서 512x512 이미지를 생성하는 데 약 12초가 걸립니다. !SD_LOW_MEMORY = yes 를 사용하면 동일한 이미지가 1분 이상 걸립니다. 8GB 미만의 GPU VRAM이 있거나 확장하기 전에 더 큰 이미지를 만들어 실험하려는 경우가 아니면 이 기능을 해제하는 것이 좋습니다.
!USE_UPSCALE = no
Stable Diffusion으로 생성된 이미지를 자동으로 확대합니까(예/아니요)? ESRGAN/GFPGAN을 사용합니다(아래 추가 설정 참조).
!UPSCALE_AMOUNT = 2
!USE_UPSCALE = yes 일 때 확장할 양입니다. 기본값은 2.0x입니다. 값이 높을수록 더 많은 VRAM과 시간이 필요합니다.
!UPSCALE_FACE_ENH = no
업스케일링 시 GFPGAN(기본 ESRGAN과 비교)을 사용할지 여부입니다. GFPGAN은 얼굴에 가장 좋은 결과를 제공하지만 얼굴이 아닌 피사체에 사용하면 약간 더 나쁜 결과를 제공할 수 있습니다.
!UPSCALE_KEEP_ORG = no
업스케일링 시 수정되지 않은 원본 이미지를 유지하시겠습니까(예/아니요)? no(기본값)로 설정하면 원본 이미지가 삭제됩니다. yes로 설정하면 원본 이미지가 이미지 출력 폴더의 /original 하위 디렉터리에 저장됩니다.
!REPEAT = no
프롬프트 파일의 모든 작업이 완료되면 파일 맨 위에서 다시 시작하시겠습니까(예/아니요)? 기본값은 no이며 모든 작업이 완료되면 실행을 종료합니다.
TODO: 설정 예제를 완료하고 사용 팁/예제를 추가하고, random_art.py를 문서화하세요.