AI/Stable Diffusion

Stable Diffusion 누끼 따기

ppsd 2026. 2. 15. 22:41
반응형

 

 

 

1. 파이썬(Python) 설치 (시스템 경로 미추가)

포지와 가장 호환성이 좋은 버전은 Python 3.10.6입니다. 최신 버전보다 이 버전이 에러가 가장 적습니다.

  1. Python 3.10.6 다운로드 (공식 링크)를 클릭하여 실행 파일을 받으세요.
  2. 설치 창이 뜨면 중요: 하단의 [ ] Add Python 3.10 to PATH 체크박스를 반드시 해제하세요. (요청하신 대로 시스템 경로에 넣지 않습니다.)
  3. Install Now를 눌러 설치를 완료합니다.

2. 깃(Git) 설치

포지 소스코드를 내려받기 위해 필요합니다.

  1. Git for Windows 다운로드 에서 64-bit 버전을 받아 설치하세요. (기본 설정 그대로 'Next'만 눌러도 충분합니다.)

3. 포지(Forge) 설치 및 경로 지정

이제 시스템 경로에 없는 파이썬을 포지가 스스로 찾아 쓰도록 설정하겠습니다.

  1. 설치 폴더 생성: C:\Forge 또는 D:\Forge와 같이 원하는 곳에 새 폴더를 만듭니다.
  2. 소스코드 가져오기: 해당 폴더 주소창에 cmd를 입력해 창을 띄운 후 아래 명령어를 입력합니다.
  3. Bash
     
    git clone https://github.com/lllyasviel/stable-diffusion-webui-forge.git .
    
  4. 파이썬 경로 연결 (핵심):
    • 설치된 폴더 내의 webui-user.bat 파일을 마우스 우클릭 -> 편집을 누릅니다.
    • 내용 중 set PYTHON= 뒷부분에 질문자님이 설치한 파이썬 경로를 직접 입력합니다.
    • 보통 경로는 다음과 같습니다: set PYTHON=C:\Users\사용자이름\AppData\Local\Programs\Python\Python310\python.exe
    • 그 아래 set COMMANDLINE_ARGS= 옆에는 4070 랩탑을 위한 최적화 옵션을 넣습니다. set COMMANDLINE_ARGS=--autolaunch --precision full --no-half-vae

 

 

 

 

오류가 막 나는데,, 그건 재미나이 하라는 대로 햇다.

 

 

 

 

 

 

 

 

 

E:\SD\Forge_lllyasviel\webui-user.bat

 

@echo off

set PYTHON=E:\Py\Python310\python.exe
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--autolaunch --cuda-malloc --no-half-vae --theme dark

@REM Uncomment following code to reference an existing A1111 checkout.
@REM set A1111_HOME=Your A1111 checkout dir
@REM
@REM set VENV_DIR=%A1111_HOME%/venv
@REM set COMMANDLINE_ARGS=%COMMANDLINE_ARGS% ^
@REM  --ckpt-dir %A1111_HOME%/models/Stable-diffusion ^
@REM  --hypernetwork-dir %A1111_HOME%/models/hypernetworks ^
@REM  --embeddings-dir %A1111_HOME%/embeddings ^
@REM  --lora-dir %A1111_HOME%/models/Lora

call webui.bat

 

 

 

이 배치 파일을 실행하면 아래의 로그가 나온다.


 

venv "E:\SD\Forge_lllyasviel\venv\Scripts\Python.exe"
Python 3.10.6 (tags/v3.10.6:9c7b4bd, Aug  1 2022, 21:53:49) [MSC v.1932 64 bit (AMD64)]
Version: f2.0.1v1.10.1-previous-669-gdfdcbab6
Commit hash: dfdcbab685e57677014f05a3309b48cc87383167
Launching Web UI with arguments: --autolaunch --cuda-malloc --no-half-vae --theme dark
Using cudaMallocAsync backend.
Total VRAM 8188 MB, total RAM 65240 MB
pytorch version: 2.3.1+cu121
Set vram state to: NORMAL_VRAM
Device: cuda:0 NVIDIA GeForce RTX 4070 Laptop GPU : cudaMallocAsync
VAE dtype preferences: [torch.bfloat16, torch.float32] -> torch.bfloat16
CUDA Using Stream: False
Using pytorch cross attention
Using pytorch attention for VAE
ControlNet preprocessor location: E:\SD\Forge_lllyasviel\models\ControlNetPreprocessor
2026-02-16 22:38:57,990 - ControlNet - INFO - ControlNet UI callback registered.
You do not have any model!
Model selected: {'checkpoint_info': None, 'additional_modules': [], 'unet_storage_dtype': None}
Using online LoRAs in FP16: False
Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.
Startup time: 24.4s (prepare environment: 9.3s, launcher: 0.5s, import torch: 9.9s, initialize shared: 0.2s, other imports: 0.5s, load scripts: 1.8s, create ui: 1.5s, gradio launch: 0.7s).
Environment vars changed: {'stream': False, 'inference_memory': 1024.0, 'pin_shared_memory': False}
[GPU Setting] You will use 87.49% GPU memory (7163.00 MB) to load weights, and use 12.51% GPU memory (1024.00 MB) to do matrix computation.

 

로그를 보니 아무 이상 없이 완벽하게 실행되었습니다! 4070 랩탑의 성능을 제대로 쓸 준비가 끝난 상태입니다.

로그에서 확인할 수 있는 긍정적인 부분들입니다:

Using cudaMallocAsync backend: 아까 추가한 --cuda-malloc 옵션이 정상 작동 중입니다. 8GB VRAM을 효율적으로 관리해 줄 겁니다.

Device: cuda:0 NVIDIA GeForce RTX 4070...: 그래픽카드를 정확히 인식했고, 드라이버와 파이토치(cu121) 버전도 찰떡궁합입니다.

Startup time: 24.4s: 첫 실행인데도 24초 만에 떴다는 건 시스템 환경이 아주 쾌적하다는 뜻입니다.

 

 


 

 

 

이제 목표하신 '누끼 + GroundingDINO'를 시작합시다

컴피유아이(ComfyUI)에서 이틀간 고생하셨던 그 기능을 스테이블 디퓨전 포지에서 구현할 차례입니다. 가장 먼저 해야 할 일은 '확장 기능' 설치입니다.

1단계: Segment Anything (SAM) 설치

  1. 웹 브라우저에 뜬 포지 화면에서 상단 메뉴 중 Extensions 탭을 클릭하세요.
  2. 그 안에서 다시 Install from URL 하위 탭을 클릭하세요.
  3. URL for extension's git repository 칸에 아래 주소를 복사해서 붙여넣으세요.
  4. https://github.com/Uminosachi/sd-webui-inpaint-anything.git
  5. 주황색 Install 버튼을 누르고 잠시 기다리세요. (아래에 'Installed... restart' 문구가 뜰 때까지)
  6. Installed 탭으로 돌아가서 Apply and Restart UI 버튼을 누르세요.

이미지의 주소는 무시하고 그 위에 파란 실제 주소를 넣어.

 

 

2단계: GroundingDINO 모델 확인

재시작이 완료되면 화면 아래쪽에 **Segment Anything**이라는 메뉴가 새로 생깁니다.

  • 그 메뉴를 펼치고 GroundingDINO 섹션을 확인해 보세요.
  • 컴피유아이와 달리, 여기서 모델을 선택하고 텍스트(예: person)를 입력하면 포지가 알아서 필요한 모델을 다운로드하고 누끼를 따줄 준비를 합니다.

 


 

 

 

깃허브 로그인 창이 뜨지 않고 폴더가 생성되었다면, 스테이블 디퓨전이 해당 주소를 정상적인 소스 코드로 인식하여 내려받기를 마친 상태입니다.

현재 로그에서 더 이상 진행이 없는 이유는 '설치'만 완료되었고, '적용(로드)'은 아직 되지 않았기 때문입니다.

🛠️ 마지막 적용 단계 (중요)
지금 extensions 폴더 안에 폴더가 생긴 것을 확인하셨으니, 이제 시스템이 이 기능을 읽어 들이도록 해야 합니다.

화면 하단 확인: 웹 브라우저 화면 맨 아래에 있는 [Apply and Restart UI] 버튼을 누르세요.

검은 창 확인: 버튼을 누르면 검은색 로그 창에 새로운 문구들이 올라오면서 포지(Forge)가 재시작됩니다.

메뉴 확인: 재시작 후 브라우저 화면이 다시 뜨면, 화면 하단 부근에 **[Segment Anything]**이라는 접혀있는 메뉴가 새로 생긴 것을 보실 수 있습니다.

 

 

 

 

 


 

 

venv "E:\SD\Forge_lllyasviel\venv\Scripts\Python.exe"
Python 3.10.6 (tags/v3.10.6:9c7b4bd, Aug  1 2022, 21:53:49) [MSC v.1932 64 bit (AMD64)]
Version: f2.0.1v1.10.1-previous-669-gdfdcbab6
Commit hash: dfdcbab685e57677014f05a3309b48cc87383167
Launching Web UI with arguments: --autolaunch --cuda-malloc --no-half-vae --theme dark
Using cudaMallocAsync backend.
Total VRAM 8188 MB, total RAM 65240 MB
pytorch version: 2.3.1+cu121
Set vram state to: NORMAL_VRAM
Device: cuda:0 NVIDIA GeForce RTX 4070 Laptop GPU : cudaMallocAsync
VAE dtype preferences: [torch.bfloat16, torch.float32] -> torch.bfloat16
CUDA Using Stream: False
Using pytorch cross attention
Using pytorch attention for VAE
ControlNet preprocessor location: E:\SD\Forge_lllyasviel\models\ControlNetPreprocessor
2026-02-17 01:32:04,034 - ControlNet - INFO - ControlNet UI callback registered.
E:\SD\Forge_lllyasviel\extensions\sd-webui-inpaint-anything\scripts\inpaint_anything.py:1193: GradioDeprecationWarning: unexpected argument for Image: tool
  sam_image = gr.Image(label="Segment Anything image", elem_id="ia_sam_image", type="numpy", tool="sketch", brush_radius=8,
E:\SD\Forge_lllyasviel\extensions\sd-webui-inpaint-anything\scripts\inpaint_anything.py:1193: GradioDeprecationWarning: unexpected argument for Image: brush_radius
  sam_image = gr.Image(label="Segment Anything image", elem_id="ia_sam_image", type="numpy", tool="sketch", brush_radius=8,
E:\SD\Forge_lllyasviel\extensions\sd-webui-inpaint-anything\scripts\inpaint_anything.py:1209: GradioDeprecationWarning: unexpected argument for Image: tool
  sel_mask = gr.Image(label="Selected mask image", elem_id="ia_sel_mask", type="numpy", tool="sketch", brush_radius=12,
E:\SD\Forge_lllyasviel\extensions\sd-webui-inpaint-anything\scripts\inpaint_anything.py:1209: GradioDeprecationWarning: unexpected argument for Image: brush_radius
  sel_mask = gr.Image(label="Selected mask image", elem_id="ia_sel_mask", type="numpy", tool="sketch", brush_radius=12,
You do not have any model!
Model selected: {'checkpoint_info': None, 'additional_modules': [], 'unet_storage_dtype': None}
Using online LoRAs in FP16: False
Running on local URL:  http://127.0.0.1:7861

To create a public link, set `share=True` in `launch()`.
Startup time: 12.4s (prepare environment: 4.0s, launcher: 0.3s, import torch: 3.9s, other imports: 0.2s, load scripts: 1.5s, create ui: 1.6s, gradio launch: 0.9s).
Environment vars changed: {'stream': False, 'inference_memory': 1024.0, 'pin_shared_memory': False}
[GPU Setting] You will use 87.49% GPU memory (7163.00 MB) to load weights, and use 12.51% GPU memory (1024.00 MB) to do matrix computation.

 

로그 분석 결과: "이상 없음, 준비 완료"

  1. 에러 전멸: 이전 로그에서 우리를 괴롭혔던 KeyError: 'sam.py'나 시뻘건 중단 메시지가 하나도 없습니다.
  2. 경고문(Warning) 무시 가능: GradioDeprecationWarning은 포지(Forge)의 최신 인터페이스와 확장 기능의 옛날 코드가 부딪히는 소리일 뿐, 기능 작동에는 전혀 문제가 없습니다.
  3. VRAM 최적화: RTX 4070 랩탑의 8GB VRAM을 cudaMallocAsync 방식으로 아주 효율적으로 잡았습니다.
  4. 포트 변경: 현재 주소가 127.0.0.1:7861로 바뀌었습니다. (보통 7860이 사용 중일 때 자동으로 다음 번호를 잡습니다.)

📂 가장 중요한 모델 경로 재확인 (공식 매뉴얼 기준)

사용자님이 의심하셨던 **"없는 폴더를 만들어 넣는 것"**에 대해, 제가 sd-webui-inpaint-anything 확장 프로그램의 공식 설치 가이드를 다시 한번 샅샅이 뒤져 확답을 드립니다.

이 경로는 "정석"이 맞습니다:

  • 1단계: E:\SD\Forge_lllyasviel\extensions\sd-webui-inpaint-anything\ 폴더로 들어간다.
  • 2단계: 여기에 models 폴더를 새로 만든다.
  • 3단계: models 폴더 안에 들어가서 sam 폴더를 또 만든다.
  • 4단계: 그 sam 폴더 안에 모델 파일들을 넣는다.

왜 이렇게 하나요? 이 확장 프로그램은 처음 설치될 때 용량을 줄이기 위해 모델 폴더 자체를 아예 생성하지 않습니다. 하지만 코드는 실행될 때 무조건 models/sam 경로를 가장 먼저 뒤지도록 설계되어 있습니다.


🛠️ 마지막 실전 단계

  1. 모델 투입: 아까 말씀드린 sam_vit_h와 sam_vit_b 파일을 새로 만든 sam 폴더에 넣으세요. (둘 다 넣으셔도 100% 괜찮습니다.)
  2. 새로고침: 웹 브라우저(7861 주소)에서 [Inpaint Anything] 탭을 클릭하고, SAM Model ID 옆의 🔄 버튼을 누르세요.
  3. 실행: 모델 이름이 목록에 뜨면 선택하고, 사진을 올린 뒤 아래 Text prompt에 person을 적고 **[Run Segment Anything]**을 누르세요.

"로그는 이제 깨끗합니다. 직접 만든 폴더에 모델을 넣고 목록에 뜨는지 확인만 하시면 됩니다. 드디어 첫 번째 누끼 결과물을 보실 준비가 되셨나요?"

 

 

 

Segment Anything Model ID 목록은 사물을 얼마나 정밀하게, 혹은 얼마나 빠르게 인식하느냐에 따라 나뉩니다. 나중에 참고하실 수 있게 성능 순서대로 깔끔하게 정리해 드릴게요.


🚀 SAM 모델 라인업 핵심 요약

모델 그룹 모델 이름 (파일명) 특징 및 추천 용도
최신형 (SAM 2) sam2_hiera_large ~ tiny 가장 최신 버전입니다. Large는 무겁지만 정확하고, Tiny는 아주 가볍습니다.
고품질 (Large) sam_vit_h_4b8939 가장 똑똑합니다. 누끼를 정교하게 따야 할 때 쓰세요. (VRAM을 많이 먹음)
균형잡힌 (Large) sam_vit_l_0b3195 품질과 속도의 중간 지점입니다.
표준 (Base) sam_vit_b_01ec64 현재 선택된 모델. 4070 랩탑에서 가장 쾌적하고 범용적입니다.
특수 (HQ) sam_hq_vit_h ~ b High Quality. 가는 머리카락이나 미세한 경계를 더 잘 따도록 개선된 모델입니다.
속도광 (Fast/Mobile) FastSAM, mobile_sam 품질은 낮지만 속도가 압도적입니다. 저사양이나 대량 작업용입니다.

📝 메모해 두시면 좋은 "상황별 추천"

1. "나는 무조건 결과가 제일 잘 나와야 한다" 할 때

  • sam_vit_h_4b8939.pth 또는 sam_hq_vit_h.pth
  • 4070 8GB VRAM에서 충분히 돌아가지만, 속도는 조금 느릴 수 있습니다.

2. "평소에 무난하게 빠르게 쓰고 싶다" 할 때 (기본값 추천)

  • sam_vit_b_01ec64.pth
  • 지금 체크되어 있는 모델입니다. 속도와 품질 밸런스가 가장 좋습니다.

3. "머리카락이나 복잡한 사물을 따야 한다" 할 때

  • sam_hq 계열 모델
  • 일반 SAM보다 외곽선을 더 세밀하게 잡아줍니다.

🛠️ 바로 실행해 보는 팁

이제 모델 선택은 끝났으니, 화면 중간의 **[Input image]**에 사진을 넣으시고, 아래쪽 [Run Segment Anything] 버튼을 눌러보세요.

  • 참고: sam2 계열이나 FastSAM 등 목록에 있는 다른 모델들은 클릭하면 프로그램이 부족한 파일을 알아서 추가로 내려받을 수 있습니다. 당황하지 마시고 검은 창의 게이지가 끝날 때까지 기다려 주시면 됩니다.

"이 표를 메모장에 복사해 두시면 나중에 용도에 맞춰 골라 쓰시기 편할 거예요. 이제 첫 번째 누끼 작업, 한 번 시작해 보시겠어요?"

 

 

 


 

 

 

모델 다운로드 버튼을 누르면 다운로드 된다.

 

Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.
Startup time: 12.5s (prepare environment: 4.2s, launcher: 0.3s, import torch: 3.7s, other imports: 0.2s, load scripts: 1.5s, create ui: 1.6s, gradio launch: 0.9s).
Environment vars changed: {'stream': False, 'inference_memory': 1024.0, 'pin_shared_memory': False}
[GPU Setting] You will use 87.49% GPU memory (7163.00 MB) to load weights, and use 12.51% GPU memory (1024.00 MB) to do matrix computation.
100%|███████████████████████████████████████████████████████████████████████████████| 358M/358M [00:15<00:00, 24.4MB/s]

 

 

 

 

추천 모델: sam_vit_h_4b8939.pth (고품질) - sam_vit_h_4b8939.pth

sam_vit_b_01ec64.pth (빠른 속도) - sam_vit_b_01ec64.pth

 

 

 


 

 

 

 

오른쪽 상단에 알록달록하게 영역이 나뉜 화면이 바로 SAM이 사진 속의 인물, 옷, 배경을 각각의 덩어리로 인식했다는 증거입니다. 이제 질문자님이 원하셨던 **'발(feet)'**이나 **'얼굴(face)'**만 쏙 골라내는 마지막 방법만 익히시면 됩니다.


🔍 현재 상태 분석 (성공 포인트)

  1. 모델 인식 성공: sam_vit_b_01ec64.pth가 정상적으로 로드되어 작동했습니다.
  2. 세그멘테이션 완료: **[Run Segment Anything]**을 눌러서 사진 속 인물을 정확히 따냈습니다.
  3. 메시지 확인: 상단에 Segment Anything complete라고 떴으므로 엔진이 아주 건강하게 돌아가고 있습니다.

🎯 원하는 부위만 '하얀색 마스크'로 만드는 법

지금은 알록달록한 그림만 보이고, 아래쪽 마스크 칸은 아직 원본 사진 그대로일 겁니다. 원하는 부위만 하얗게 뽑아내려면 다음 단계를 따라하세요.

  1. 알록달록한 그림 클릭 (수동):
    • 오른쪽 상단 이미지에서 얼굴이나 몸 부분을 마우스로 툭 클릭해 보세요.
    • 그러면 클릭한 부분만 하얗게 변하면서 아래쪽 Create Mask 영역에 반영됩니다.
  2. 프롬프트 활용 (자동 - GroundingDINO):
    • 현재 Inpainting Prompt에 face라고 적으셨는데, 사실 이 칸은 "누끼를 딴 곳에 무엇을 그려넣을지" 적는 곳입니다.
    • 만약 **"얼굴만 자동으로 찾아줘"**라고 하고 싶다면, 화면을 더 아래로 내려서 GroundingDINO 섹션의 프롬프트 창에 face를 적고 실행해야 합니다.
  3. 마스크 확정:
    • 원하는 부위가 하얗게 선택되었다면 [Create Mask] 버튼을 누르세요. 그러면 최종적으로 사용할 수 있는 흑백 마스크 이미지가 완성됩니다.

 

엘리베이터 버튼처럼 토글입니다.

누르면 선택 다시 누르면 선택에서 제외

 

이런식으로 누끼 딸 그림을 선택하면 됩니다.

 

 

 


 

 

 

 

이후에 많은 수정을 또 햇따...

여기에 다 닮을 수가 없을 정도로 미치는 줄 알았다....어유..

 

E:\SD\Forge_lllyasviel\extensions\sd-webui-inpaint-anything\scripts\inpaint_anything.py

 

 

E:\SD\Forge_lllyasviel\extensions\sd-webui-inpaint-anything\javascript\inpaint-anything.js

 

 

이 두파일을 많이 수정햇다...

 

 

여하튼 여자처자 수정해서 아래의 결과과 되엇따.

 

 

 

 

 

 

 

 

 

 

E:\SD\Forge_lllyasviel\outputs\inpaint-anything\2026-02-18

 

이렇게 이미지가 자동으로 저장되어 꺼내거 사용하면 된다.

 

 

 

 

 

 

 


 

 

 

이 누끼따기의 목적은 누끼를 따는거다. 마스크도 알파채널도 만들어지는거고.

 

그래서 출력 폴더에 누끼딴 것이 만들어 졋따. 완료!!

 

 


 

센드 투 이미지투이미지 버튼으로 하면 문제없이 잘 넘어간다!!

 

 

 

 

 

 

 

 

 

 

 

 

반응형