1. 파이썬(Python) 설치 (시스템 경로 미추가)
포지와 가장 호환성이 좋은 버전은 Python 3.10.6입니다. 최신 버전보다 이 버전이 에러가 가장 적습니다.
- Python 3.10.6 다운로드 (공식 링크)를 클릭하여 실행 파일을 받으세요.
- 설치 창이 뜨면 중요: 하단의 [ ] Add Python 3.10 to PATH 체크박스를 반드시 해제하세요. (요청하신 대로 시스템 경로에 넣지 않습니다.)
- Install Now를 눌러 설치를 완료합니다.
2. 깃(Git) 설치
포지 소스코드를 내려받기 위해 필요합니다.
- Git for Windows 다운로드 에서 64-bit 버전을 받아 설치하세요. (기본 설정 그대로 'Next'만 눌러도 충분합니다.)
3. 포지(Forge) 설치 및 경로 지정
이제 시스템 경로에 없는 파이썬을 포지가 스스로 찾아 쓰도록 설정하겠습니다.
- 설치 폴더 생성: C:\Forge 또는 D:\Forge와 같이 원하는 곳에 새 폴더를 만듭니다.
- 소스코드 가져오기: 해당 폴더 주소창에 cmd를 입력해 창을 띄운 후 아래 명령어를 입력합니다.
-
Bash
git clone https://github.com/lllyasviel/stable-diffusion-webui-forge.git . - 파이썬 경로 연결 (핵심):
- 설치된 폴더 내의 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) 설치
- 웹 브라우저에 뜬 포지 화면에서 상단 메뉴 중 Extensions 탭을 클릭하세요.
- 그 안에서 다시 Install from URL 하위 탭을 클릭하세요.
- URL for extension's git repository 칸에 아래 주소를 복사해서 붙여넣으세요.
- https://github.com/Uminosachi/sd-webui-inpaint-anything.git
- 주황색 Install 버튼을 누르고 잠시 기다리세요. (아래에 'Installed... restart' 문구가 뜰 때까지)
- 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.
로그 분석 결과: "이상 없음, 준비 완료"
- 에러 전멸: 이전 로그에서 우리를 괴롭혔던 KeyError: 'sam.py'나 시뻘건 중단 메시지가 하나도 없습니다.
- 경고문(Warning) 무시 가능: GradioDeprecationWarning은 포지(Forge)의 최신 인터페이스와 확장 기능의 옛날 코드가 부딪히는 소리일 뿐, 기능 작동에는 전혀 문제가 없습니다.
- VRAM 최적화: RTX 4070 랩탑의 8GB VRAM을 cudaMallocAsync 방식으로 아주 효율적으로 잡았습니다.
- 포트 변경: 현재 주소가 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 경로를 가장 먼저 뒤지도록 설계되어 있습니다.
🛠️ 마지막 실전 단계
- 모델 투입: 아까 말씀드린 sam_vit_h와 sam_vit_b 파일을 새로 만든 sam 폴더에 넣으세요. (둘 다 넣으셔도 100% 괜찮습니다.)
- 새로고침: 웹 브라우저(7861 주소)에서 [Inpaint Anything] 탭을 클릭하고, SAM Model ID 옆의 🔄 버튼을 누르세요.
- 실행: 모델 이름이 목록에 뜨면 선택하고, 사진을 올린 뒤 아래 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)'**만 쏙 골라내는 마지막 방법만 익히시면 됩니다.
🔍 현재 상태 분석 (성공 포인트)
- 모델 인식 성공: sam_vit_b_01ec64.pth가 정상적으로 로드되어 작동했습니다.
- 세그멘테이션 완료: **[Run Segment Anything]**을 눌러서 사진 속 인물을 정확히 따냈습니다.
- 메시지 확인: 상단에 Segment Anything complete라고 떴으므로 엔진이 아주 건강하게 돌아가고 있습니다.
🎯 원하는 부위만 '하얀색 마스크'로 만드는 법
지금은 알록달록한 그림만 보이고, 아래쪽 마스크 칸은 아직 원본 사진 그대로일 겁니다. 원하는 부위만 하얗게 뽑아내려면 다음 단계를 따라하세요.
- 알록달록한 그림 클릭 (수동):
- 오른쪽 상단 이미지에서 얼굴이나 몸 부분을 마우스로 툭 클릭해 보세요.
- 그러면 클릭한 부분만 하얗게 변하면서 아래쪽 Create Mask 영역에 반영됩니다.
- 프롬프트 활용 (자동 - GroundingDINO):
- 현재 Inpainting Prompt에 face라고 적으셨는데, 사실 이 칸은 "누끼를 딴 곳에 무엇을 그려넣을지" 적는 곳입니다.
- 만약 **"얼굴만 자동으로 찾아줘"**라고 하고 싶다면, 화면을 더 아래로 내려서 GroundingDINO 섹션의 프롬프트 창에 face를 적고 실행해야 합니다.
- 마스크 확정:
- 원하는 부위가 하얗게 선택되었다면 [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

이렇게 이미지가 자동으로 저장되어 꺼내거 사용하면 된다.
이 누끼따기의 목적은 누끼를 따는거다. 마스크도 알파채널도 만들어지는거고.
그래서 출력 폴더에 누끼딴 것이 만들어 졋따. 완료!!
센드 투 이미지투이미지 버튼으로 하면 문제없이 잘 넘어간다!!

'AI > Stable Diffusion' 카테고리의 다른 글
| AMD RADEON 그래픽카드 기반에 인공지능 Stable Diffusion 설치 (0) | 2023.08.25 |
|---|