AI

[AI] WebUI 기반 AI 이미지 생성 실험 - 설치, 설정, NSFW 활용까지의 여정

일요일좋아하는사람 2025. 4. 20. 18:52
728x90
반응형

AI 이미지 생성에서 가장 널리 사용되는 인터페이스 중 하나는 Stable Diffusion 기반의 WebUI다. AUTOMATIC1111로 대표되는 이 인터페이스는 마치 포토샵처럼 직관적인 사용자 경험을 제공하면서도 고급 설정을 건드릴 수 있는 강력함을 지녔다. 나는 다양한 생성 환경을 실험하면서 WebUI의 구조와 동작 원리, 설치 과정, 성능 세팅, NSFW 모델의 적용법까지 단계적으로 탐색해보았다. 이 문서는 그 여정의 상세한 기록이자, WebUI를 제대로 활용하고 싶은 사람들을 위한 실제 가이드다.


1. WebUI 설치 환경 선택: 로컬 vs 클라우드

처음 WebUI를 접했을 때 가장 먼저 고민하게 되는 건 실행 환경이었다. 내 PC에 직접 설치할 것인가, 아니면 Colab이나 RunPod, Paperspace 같은 클라우드 환경을 쓸 것인가. 각각의 장단점은 명확하다.

  • 로컬 환경: 설정 자유도 높음, 인터넷 없이 실행 가능. 단점은 고사양 GPU 없으면 속도 느림
  • Colab: 무료로 간단한 테스트 가능하지만 GPU 할당이 제한됨, NSFW 차단 필터 존재
  • RunPod/Paperspace: 유료지만 성능 뛰어나고 장시간 작업 가능, NSFW 자유롭게 설정 가능

결국 나는 반복 테스트와 고해상도 NSFW 이미지를 다루기 위해 RunPod에서 A5000 GPU를 선택했다. 단순히 성능뿐 아니라, 터미널 접근성과 WebUI 자동 배포 기능도 매우 편리했다.


2. WebUI 설치: Git 클론부터 실행까지

WebUI 설치는 단순하지만 환경에 따라 발생하는 오류가 다양해서, 꼼꼼하게 따라가는 게 중요했다. 내가 Colab에서 가장 많이 썼던 셋업 순서는 다음과 같았다.

# 기본 환경 준비
!apt -y install -qq aria2
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui /content/stable-diffusion-webui
%cd /content/stable-diffusion-webui

# 모델 다운로드 (예: ChilloutMix)
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M \
  https://civitai.com/api/download/models/11745 -d models/Stable-diffusion -o chilloutmix.safetensors

# 실행 (NSFW 허용 위해 --medvram + --xformers 사용)
!COMMANDLINE_ARGS="--xformers --medvram --disable-safe-unpickle" python launch.py

특히 --medvram과 --xformers는 VRAM이 부족한 Colab 환경에서 필수였고, --disable-safe-unpickle은 일부 .safetensors 모델이 로딩되지 않는 문제를 해결해주었다. 만약 launch 시 CUDA가 작동하지 않는다는 에러가 뜬다면, --skip-torch-cuda-test를 추가해주는 것도 도움이 된다.


3. 기본 설정: 모델 경로, VAE 지정, 출력 해상도

WebUI는 실행 후 UI 상에서 모델 선택이 가능하지만, 자동 로딩을 원한다면 다음과 같은 설정을 webui-user.bat 또는 Colab 환경 변수에 추가해야 한다.

export MODEL_PATH="models/Stable-diffusion/chilloutmix.safetensors"
export VAE_PATH="models/VAE/vae-ft-mse-840000-ema-pruned.safetensors"

추가로, 다음과 같은 고급 설정이 가능했다:

  • 이미지 저장 경로 변경 (outputs/img2img, outputs/txt2img 등)
  • upscaler 설정 (ESRGAN, SwinIR 등)
  • sampler 설정 (DPM++ 2M Karras, Euler a 등)
  • batch count & batch size 조절 (VRAM 최적화 중요)

4. NSFW 모델과 프롬프트 제한 우회

WebUI는 기본적으로 NSFW 필터링을 하지 않기 때문에, HuggingFace와 달리 민감한 프롬프트도 자유롭게 쓸 수 있다. 하지만 다음 사항에 유의해야 한다.

  • Colab에서 실행할 경우: Google의 정책상 명시적으로 NSFW 프롬프트를 넣는 것은 금지되며, 경고 없이 런타임이 차단될 수 있음
  • RunPod, Paperspace: 자유롭게 사용 가능. 단, 반드시 개인 워크스페이스에서 실행하고, 공유 설정을 OFF로 유지할 것
  • 프롬프트 작성 팁:
    • 직접적인 단어 대신 분위기를 묘사하는 방식 사용 (e.g., "seductive expression" 대신 "soft gaze with a warm smile")
    • negative prompt를 함께 설정해 노이즈/왜곡 방지 ("deformed hands, extra fingers, lowres, bad anatomy")

모델 선택도 중요하다. 일반적으로 NSFW에 적합한 모델은 다음과 같다:

  • ChilloutMix: 리얼계 스타일, 감정 표현 우수
  • PerfectWorld, AOM3: 피부 표현 및 구도 우수
  • Deliberate, RealisticVision: 사진 느낌 강화, 실사 스타일 선호 시 추천

5. AnimateDiff 확장 설치와 적용

WebUI에서 AnimateDiff를 사용하려면 해당 확장을 설치하고 motion adapter를 별도로 다운로드해야 한다. 기본적으로 WebUI의 Extensions 탭에서 URL을 통해 설치하는 것이 가능하지만, Colab이나 RunPod에서는 수동 설치가 더 안정적이었다.

# 확장 경로로 이동
cd stable-diffusion-webui/extensions

# Git을 통해 AnimateDiff 확장 클론
!git clone https://github.com/continue-revolution/sd-webui-animatediff.git

설치 후 WebUI를 재시작하면 UI 내에 AnimateDiff 탭이 생성되며, 여기서 motion model, 프레임 수, loop 설정 등을 조절할 수 있다. 프롬프트는 기존 txt2img와 거의 동일하나, 움직임을 유도하려면 motion_bucket_id, seed 변화량, step 조정이 핵심이다.

프레임 수는 최소 8 ~ 최대 64 정도가 일반적이며, 16~24 프레임이 가장 적당한 시각적 일관성을 보였다. AnimateDiff는 SD 1.5 기반 모델과 가장 잘 호환되며, SDXL과의 연동은 아직 실험적이다. 가볍게 테스트하고 싶다면, ChilloutMix 모델에 AnimateDiff를 얹은 구성이 적당하다.


6. 커스터마이징: 자동 프롬프트, 업스케일링 연계, 영상 출력

WebUI에서는 단순 이미지 생성 외에도 다양한 자동화 기능을 붙일 수 있다. 예를 들어 다음과 같은 방식으로 실험을 진행했다:

  • prompt.txt에 10개의 프롬프트 저장 후 스케줄링 생성
  • 고해상도 프레임 업스케일링 (SwinIR x4)
  • ffmpeg 연동으로 생성된 이미지 시퀀스를 영상으로 변환
# 프레임을 영상으로 묶기 (Colab 예시)
!ffmpeg -framerate 8 -i /content/stable-diffusion-webui/outputs/animatediff/%04d.png \
  -vf "scale=768:-1:flags=lanczos" -c:v libx264 -pix_fmt yuv420p animated_scene.mp4

또한 prompt weighting, LoRA 가중치 조절, negative prompt bank 등을 연동해 더 정교한 결과물을 만들 수 있었다.


7. GPU 자원 설정과 최적화 전략

고사양 모델이나 긴 프레임의 AnimateDiff를 사용할 때 가장 큰 변수는 GPU VRAM이다. Colab 기준으로는 T4 또는 P100 환경에서 --xformers와 --medvram 조합이 가장 안정적이었다. 하지만 24프레임 이상을 생성하거나, LoRA를 동시에 적용하면 오류가 자주 발생했다. 이런 경우에는 다음의 우회 방법을 활용했다:

  • --no-half 옵션으로 float16 관련 충돌 방지
  • batch size 1로 고정, seed만 바꿔서 반복 생성
  • VAE를 low precision 버전으로 대체 (mse-pruned)
  • torch와 xformers 버전 충돌 시 torch를 재설치

RunPod에서는 A5000 (24GB) 이상의 GPU를 사용할 경우 대부분의 제약 없이 안정적인 고해상도 애니메이션을 생성할 수 있었고, 장시간 세션 유지가 가능한 것도 장점이었다.


8. 마치며: WebUI는 나만의 스튜디오였다

WebUI는 단순한 AI 이미지 생성 도구가 아니라, 하나의 창작 스튜디오였다. GUI를 기반으로 하면서도 다양한 커스터마이징이 가능하고, 텍스트만으로 연출부터 애니메이션, 후처리까지 설계할 수 있는 강력한 플랫폼이었다. 특히 내가 원하는 스타일의 프롬프트를 저장하고, 매번 로딩할 모델과 VAE를 다르게 지정하며, 하루에도 수십 번씩 반복 실험하는 과정은 마치 그래픽 디자이너의 작업 흐름과 비슷했다.

이제 나는 WebUI를 단순 실행기로 쓰지 않는다. 그것은 내 이미지 스케치북이자, 연출 노트이며, 실시간으로 반응하는 AI 협업 도구다. 앞으로도 다양한 확장 기능(ControlNet, T2I-Adapter 등)을 연동해 더 복잡한 장면과 영상을 생성해나갈 계획이다.

728x90
반응형