실행 정책은 신뢰하지 않는 스크립트로부터 사용자를 보호합니다. 실행 정책을 변경하면 about_Execution_Policies 도움말
항목(https://go.microsoft.com/fwlink/?LinkID=135170)에 설명된 보안 위험에 노출될 수 있습니다. 실행 정책을
변경하시겠습니까?
[Y] 예(Y) [A] 모두 예(A) [N] 아니요(N) [L] 모두 아니요(L) [S] 일시 중단(S) [?] 도움말 (기본값은 "N"):"
2. 이번에는 윈도우 Powershell을 일반 모드로 실행합니다(관리자 모드 아님)
아래의 텍스트들을 한 줄씩 순서대로 입력해줍니다.
중간 중간에 패키지를 다운 받고 설치해서 시간이 좀 걸리니 기다려줍니다.
git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
python -m venv --system-site-packages venv
.\venv\Scripts\activate
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install --upgrade -r requirements.txt
pip install -U -I --no-deps https://github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl
cp .\bitsandbytes_windows\*.dll .\venv\Lib\site-packages\bitsandbytes\
cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site-packages\bitsandbytes\cextension.py
cp .\bitsandbytes_windows\main.py .\venv\Lib\site-packages\bitsandbytes\cuda_setup\main.py
accelerate config
마지막 accelerate config를 입력하면
잠시 뒤에 옵션 설정을 위한 메시지가 출력됩니다.
아래의 값을 순서대로 입력해줍니다.
0
0
NO
NO
All
fp16
나중에 최신버전으로 업데이트하려면 powershell이나 cmd를 실행하고 아래의 텍스트들을 순서대로 입력합니다.
cd kohya_ss
git pull
.\venv\Scripts\activate
pip install --upgrade -r requirements.txt
3. 학습에 사용할 이미지들을 준비합니다.
학습에 사용할 이미지들은 무조건 많기보다는 일정한 퀄리티로 10~100장 정도를 준비하는 것이 권장됩니다.
학습용 이미지에 다른 캐릭터나 물건이 있을 경우 캐릭터만 잘라내는 것이 좀 더 학습에 도움이 됩니다.
4. 정규화 이미지를 준비합니다.
정규화 이미지는 학습할 대상이 속한 클래스의 이미지를 사용합니다.
정규화 이미지를 사용하는 이유는 학습 대상이 다른 영역을 침범해서 모든 그림이 학습 이미지를 따라하는 것을 방지하기 위함입니다.
이번에는 미소녀 캐릭터니 'girl' 클래스의 이미지가 필요합니다. 'person'도 좋습니다.
정규화 이미지는 학습에 사용할 베이스 모델(ckpt)를 사용해서 생성합니다.
webui나 다른 도구들을 사용해서 베이스 모델에 프롬프트로 'girl' 을 입력해서 이미지를 생성합니다.
퀄리티가 높을 필요는 없으니 낮은 스텝으로 생성해도 문제 없습니다.
비슷한 클래스의 학습 대상에 재활용이 가능하니 넉넉하게 생성해줍니다.
정규화 이미지의 숫자는 일반적으로 학습 이미지 x 100이 권장됩니다만 일반적으로 1000~2000 장 정도를 주로 사용합니다.
직접 생성하기 귀찮으시면 아래 링크에서 이미지를 다운받아서 사용하셔도 됩니다.
Nai 기반 정규화 이미지(girl) : https://mega.nz/file/9kcUTbyT#DKgM5nI91L5UrIRoEwsvwFlwd61ZjQXbAzWWyhccxIg
학습 이미지와 정규화 이미지는 모두 짝수로 준비하는 것을 권장합니다.
이제 준비한 이미지들을 아래와 같이 폴더별로 분리합니다.
각각의 폴더의 이름은 다음과 같이 지정합니다.
my_asd_dog_dreambooth : 프로젝트 이름을 지정합니다. 적당히 아무거나 넣으셔도 됩니다.
reg_dog : 정규화 이미지 폴더들이 위치하는 폴더입니다. reg_dog 같이 형식으로 학습할 대상의 이름을 reg_ 다음에 입력합니다.
1_dog : 정규화 이미지가 위치하는 폴더입니다. reg_dog/1_dog 순입니다. 위와 마찬가지로 1_ 다음에 학습할 대상의 클래스를 입력합니다.
앞의 1은 정규화 이미지 반복 횟수입니다. 기본값은 1입니다.
train_dog : 학습 이미지 폴더들이 위치하는 폴더입니다. train_dog 같은 형식으로 학습할 대상의 이름을 train_ 다음에 입력합니다.
20_asd dog : 학습 이미지가 위치하는 폴더입니다. 20_asd dog와 같은 형식으로 20_ 다음에 학습 대상의 토큰(프롬프트에 입력할 태그)와 학습할 대상의 클래스를 입력합니다.
20에 정규화 이미지의 숫자를 입력합니다.
<임의의 학습 프로젝트 폴더 이름> 예 : train_shiroko
\<임의의 정규화 이미지 폴더 이름> 예 : reg_girl
\\<반복횟수>_<클래스> 예 : 1_girl (정규화 이미지)
\<임의의 학습 이미지 폴더 이름> 예 : train_shiroko
\\<반복횟수>_<토큰> <클래스> 예 : 1000_ba-shiroko girl (학습 이미지)
이렇게 배치하시면 됩니다.
out 폴더는 학습이 완료된 ckpt 파일이 저장될 경로입니다. 필수는 아닙니다.
학습 이미지와 정규화 이미지 준비가 끝나면 학습이 가능합니다.
하지만 이번에는 학습 이미지를 설명하는 캡션을 사용하도록 합니다.
캡션은 각각의 학습 이미지를 분리해서 학습하는 효과가 있습니다.
예를 들면 위와 같은 이미지는 아래와 같은 캡션을 사용할 수 있습니다.
일반적으로 캐릭터, 복장, 배경, 소품, 아트 스타일 형식으로 지정합니다.
학습용 이미지와 동일한 이름의 .txt 파일을 만들고 캡션을 입력합니다.
학습 이미지 : ba_0512.png
캡션 : ba_0512.txt
webui의 기능을 사용해서 캡션을 자동으로 생성할수도 있지만 직접 수동으로 입력하는 것이 좀 더 정확합니다.
cmd를 열고 직접 타이핑해서 실행할 수도 있지만 이번에는 bat 파일을 사용해서 간편하게 진행하도록 합니다.
메모장을 열고 아래의 텍스트를 복사해서 .bat 확장자로 저장합니다. 예 : run.bat
아래 링크에서 다운받아서 사용하셔도 됩니다.
https://mega.nz/file/xgMwQCSI#frP7Cyx79sWiMPMlxgnOSfLQvIK2OqKGrEJGUMzYPTc
각 항목의 의미는 다음과 같습니다.
CALL C:\Users\kohya_ss\venv\Scripts\activate.bat
실행에 필요한 패키지들이 설치되어 있는 파이썬 가상환경을 활성화 합니다.
맨 처음에 git clone 했던 kohya_ss 폴더 안에 venv\Scripts\ 경로로 가면 activate.bat가 있습니다.
해당 bat 파일의 경로를 입력하시면 됩니다.
cd C:\Users\kohya_ss
학습 스크립트가 있는 경로로 이동합니다. kohya_ss 폴더의 경로를 입력하시면 됩니다.
accelerate launch --num_cpu_threads_per_process 6 train_db_fixed.py ^
학습 스크립트를 실행합니다. ^은 bat 파일에서 줄바꿈 없이 입력된다는 의미입니다.
--pretrained_model_name_or_path="C:\train\animefull-latest_FastDB.ckpt" ^
학습에 사용할 베이스 모델의 경로를 입력합니다.
--train_data_dir="C:\train\train_shiroko\train_shiroko" ^
위에서 준비해둔 학습 이미지 폴더들이 위치한 폴더의 경로를 입력합니다. 숫자가 앞에 있는 폴더가 아닙니다.
--reg_data_dir="C:\train\train_shiroko\reg_girl" ^
정규화 이미지 폴더들이 위치한 폴더의 경로를 입력합니다. 숫자가 앞에 있는 폴더가 아닙니다.
--output_dir="C:\train\train_shiroko\out" ^
학습이 끝난 모델이 저장될 경로를 지정합니다.
--prior_loss_weight=1.0 ^
이미지가 과도하게 학습되는 과적합을 막기 위한 설정입니다. 기본값인 1.0으로 설정합니다.
--resolution=512 ^
학습 이미지의 해상도를 지정합니다. 1:1비율이면 512, 아니면 512, 768 이런식으로 입력합니다.
--train_batch_size=1 ^
한 스텝당 학습에 사용되는 이미지의 숫자를 지정합니다. 1~4 을 주로 사용합니다.
--learning_rate=1e-6 ^
학습률을 지정합니다. 1e-6은 0.000001 입니다.
높을수록 학습이 빨라지지만 과적합이 발생하기 쉽습니다. 기본값은 1e-6 입니다.
--max_train_steps=3000 ^
학습 스텝을 지정합니다.
너무 높은 값을 지정하면 과적합이 발생해서 이미지가 깨집니다. 최적의 값은 직접 학습 해보면서 확인할 수 밖에 없습니다.
최적화와 관련된 설정입니다. 해당 텍스트들을 삭제하면 사용 vram이 20gb으로 증가합니다.
--enable_bucket ^
여러 해상도와 비율의 이미지를 학습할 때 사용하는 옵션입니다.
64의 배수의 해상도로 이미지를 분류하고 튀어나온 부분은 잘라냅니다.
해당 옵션을 활성화하면 학습 시작시 아래와 같이 이미지가 분류됩니다.
--caption_extention=".txt" ^
캡션 파일의 확장자를 지정합니다.
캡션 파일의 확장자를 입력하시면 됩니다. 텍스트 파일이면 .txt 입니다.
--clip_skip=2 ^
학습 베이스 모델이 학습된 clip skip 값과 동일하게 설정합니다,
Novel ai 같은 경우에는 2로 학습되었기 때문에 동일하게 2로 설정합니다.
--gradient_checkpointing
최적화와 관련된 옵션입니다.
pause
학습이 끝나면 cmd 창을 닫지 않고 대기합니다.
다음은 위의 bat 파일에 입력하지 않은 추가 옵션들입니다.
--save_precision="fp16" ^
학습이 끝난 모델 파일의 형식을 지정합니다. fp16을 사용하면 용량이 줄어드는 대신 약간 정밀도가 떨어집니다.
이외에도 옵션들이 더 있기는 하지만 다음 기회에 알아 보겠습니다.
이제 bat 파일을 실행하면 학습이 시작됩니다.
캡션을 사용한 드림부스와 그렇지 않은 경우의 차이는 아래의 이미지에서 보이는 것과 같이 복장, 배경 등의 변경이 용이하다는 것에 있습니다.
프롬프트에 흰색 셔츠, 청바지를 입력했지만 오른쪽 4개의 이미지는 교복과 파란 스카프, 가방, 자전거가 계속 생성되고 있습니다.
반면에 왼쪽 4개의 이미지는 프롬프트가 잘 반영되고 있습니다.
캡션에 아트 스타일을 추가하면 아래와 같이 스타일만 따로 프롬프트에 입력이 가능합니다.
다만 완벽하게 분리되는 것은 아니라서 캐릭터 프롬프트의 강도를 올리면 캡션으로 입력한 요소들이(가방, 교복 등) 생성될 수 있습니다.
캡션에서 헤일로를 분리하지 않았기 때문에 스타일을 프롬프트에 입력하면 모든 캐릭터의 머리 위에 헤일로가 생성됩니다.
마찬가지로 복장을 고정하고 싶으면 캡션에서 복장과 관련된 부분을 생략하시면 됩니다.
가끔씩 업데이트하다보면 모듈 버전이 틀리거나 충돌이 발생할 수 있는데 그럴 때는 필요한 것 이외의 것을 전부 지우고 repo만 깔끔하게 설치되면 해결됩니다.
powershell을 실행해서 아래 명령어를 입력합니다.
(주의! 컴퓨터에 설치된 패키지를 venv 이외에 전부 삭제합니다.)
pip freeze > uninstall_requirements.txt
(설치되어 있는 모듈들의 리스트를 텍스트로 저장)
pip uninstall -r uninstall_requirements.txt -y
(위에서 생성된 리스트를 기반으로 전부 삭제)
삭제가 끝나면 1번부터 다시 설치하시면 됩니다.
(IP보기클릭)183.98.***.***
이건 그냥 코딩아님?
(IP보기클릭)84.239.***.***
정보는 유용하지만 , 어제 유명일러 AI 터진것도 있어서 남의 일러를 학습용으로 사용하는것도 그다지 보기 좋지는 않음
(IP보기클릭)220.94.***.***
그림을 그린다는 개념에서 그림 코드를 짜버리는게 되어부럿어
(IP보기클릭)121.184.***.***
최근 AI학습을 그림 도용 사건이 하나 크게 터졌어서 비추를 받네...위로의 말씀을 드림 일단 자작그림 탭 말고 자작기타로 올린다음 뷸탄게 진정되면 다시 올려보자
(IP보기클릭)222.121.***.***
이게 왜 욕먹지 AI로 이미지만들어서 돈받고 팔라고 하는글도 아니고 0.1% 천재빼고 그림쟁이 99%는 기본적으로 남의 그림 따라 그리면서 시작하는거 아님? 남의 그림 따라그리는법 강의 올리면 그것도 욕먹을일? 남의 그림 따라그려서 돈받고 파는법 강의라면 욕먹겠지만 새로운 기술이 탄생해서 사용법 올려주면 감사한거지 그저 남의 그림 따라그린 그림쟁이를 트레이싱이라고 욕박는거랑 뭔차이지
(IP보기클릭)112.162.***.***
(IP보기클릭)175.123.***.***
헐... 복잡해
(IP보기클릭)14.52.***.***
(IP보기클릭)183.98.***.***
이건 그냥 코딩아님?
(IP보기클릭)121.162.***.***
좀 사용이 복잡하기는 합니다ㅜㅜ 그래도 지금까지 사용해본 도구 중에서는 사용이 간편한 축에 속합니다. | 22.12.02 00:29 | | |
(IP보기클릭)124.60.***.***
(IP보기클릭)211.209.***.***
(IP보기클릭)211.220.***.***
(IP보기클릭)121.162.***.***
노벨 AI 같은 경우에는 위에서 소개한 것과 비슷하지만 훨씬 더 많은 대량의 이미지와 단보루 태그를 기반으로 학습된 모델입니다. 이번에는 2D 일러스트를 예시로 소개했지만 드림부스는 실사 인물이나 물건, 장소 등을 학습해서 가상의 배우나 카탈로그 이미지를 생성하는데 활용할 수 있습니다. | 22.12.02 00:33 | | |
(IP보기클릭)112.162.***.***
(IP보기클릭)183.100.***.***
(IP보기클릭)211.246.***.***
(IP보기클릭)220.94.***.***
그림을 그린다는 개념에서 그림 코드를 짜버리는게 되어부럿어
(IP보기클릭)1.243.***.***
이과 놈들의 음모다~!! 이렇게 모두가 코딩에 빠져들도록 만드는 수작인다~!! | 23.02.13 03:33 | | |
(IP보기클릭)121.145.***.***
(IP보기클릭)119.206.***.***
(IP보기클릭)84.239.***.***
정보는 유용하지만 , 어제 유명일러 AI 터진것도 있어서 남의 일러를 학습용으로 사용하는것도 그다지 보기 좋지는 않음
(IP보기클릭)211.234.***.***
(IP보기클릭)121.162.***.***
사양이 부족한 경우에는 아직 테스트해보지는 않았지만 구글 콜렙 버전도 있습니다. https://github.com/Linaqruf/kohya-trainer | 22.12.02 00:36 | | |
삭제된 댓글입니다.
(IP보기클릭)211.52.***.***
11월 13일
저런거에 gui만 달아서 나오는게 요즘 사람들 접근하는 ai툴임.. 그냥 익숙한 버튼 인터페이스 뗏다고 이렇게 반응이 달라질줄이야 | 22.12.02 00:01 | | |
(IP보기클릭)116.46.***.***
(IP보기클릭)211.234.***.***
(IP보기클릭)119.192.***.***
(IP보기클릭)175.123.***.***
헐... 복잡해
(IP보기클릭)121.184.***.***
최근 AI학습을 그림 도용 사건이 하나 크게 터졌어서 비추를 받네...위로의 말씀을 드림 일단 자작그림 탭 말고 자작기타로 올린다음 뷸탄게 진정되면 다시 올려보자
(IP보기클릭)121.162.***.***
이전부터 시리즈로 정리해서 올리고 있는 중이라 나중에 관심있는 분들이 찾아보기 쉽도록 계속 같은 탭으로 게시하고 있었는데 그런 사건이 있었군요ㅜㅜ | 22.12.02 13:01 | | |
(IP보기클릭)222.121.***.***
이게 왜 욕먹지 AI로 이미지만들어서 돈받고 팔라고 하는글도 아니고 0.1% 천재빼고 그림쟁이 99%는 기본적으로 남의 그림 따라 그리면서 시작하는거 아님? 남의 그림 따라그리는법 강의 올리면 그것도 욕먹을일? 남의 그림 따라그려서 돈받고 파는법 강의라면 욕먹겠지만 새로운 기술이 탄생해서 사용법 올려주면 감사한거지 그저 남의 그림 따라그린 그림쟁이를 트레이싱이라고 욕박는거랑 뭔차이지
(IP보기클릭)110.70.***.***
(IP보기클릭)203.226.***.***
(IP보기클릭)14.35.***.***
(IP보기클릭)121.132.***.***
(IP보기클릭)121.162.***.***
루리웹-5075900102
로컬로 돌릴 경우는 그렇고 구글 콜랩이나 유료 서비스를 사용하면 사양이 낮아도 가능합니다. | 22.12.06 14:16 | | |
(IP보기클릭)118.35.***.***
(IP보기클릭)118.36.***.***
(IP보기클릭)121.162.***.***
사용하시는 컴퓨터의 사양이 어떻게 되시나요? 사양 부족일 가능성이 있습니다. | 23.01.07 13:20 | | |
(IP보기클릭)118.36.***.***
3060에 램은 16gb 사용하고 있습니다. 최소 사양 정도는 된다고 봤는데요. 아니면 저사양으로 돌리는 방법이 있을까요? | 23.01.07 13:24 | | |
(IP보기클릭)121.162.***.***
최소 사양이 그래픽카드 vram 12gb라서 약간 아슬아슬하기는 하네요. 일단 그래픽카드들 사용하는 다른 프로그램들을 전부 종료하시고 테스트해보세요. 학습 설정이 어떻게 되시나요? | 23.01.07 13:30 | | |
(IP보기클릭)118.36.***.***
| 23.01.07 13:49 | | |
(IP보기클릭)118.36.***.***
| 23.01.07 13:50 | | |
(IP보기클릭)118.36.***.***
위와 같이 세팅하였고, 올려주신 글 중에 9번 글에서 Train을 누르는 시점까지 그대로 따라하다가 누르고 나서 발생했습니다 본문) "설정이 끝나면 위쪽의 베이스 모델 리스트에서 맨처음에 생성한 것을 선택하고 오른쪽에 있는 Train 버튼을 누릅니다." (덧글을 9번 글에다가 단다는 것을 실수로 10번 글에 달았네요;) | 23.01.07 13:53 | | |
(IP보기클릭)121.162.***.***
개발자 코멘트를 보니까 학습 시작 전에 performance wizard 기능을 실행하면 해당 문제가 해결될 수 있다고 합니다. 아마 새로 업데이트되면서 추가된 옵션들 때문인 것같습니다. | 23.01.07 14:06 | | |
(IP보기클릭)118.36.***.***
답변 감사합니다. 해당 방법으로 바로 해결되었네요! 그런데 캐릭터 재현율이 올려주신 거에 비교하면 상당히 차이가 있더라구요. 올려주신 글 외에도 https://bbs.ruliweb.com/userboard/board/700315/read/2823 라는 글도 참고했는데 두 분처럼 깔끔하게 나오지는 않는 거 같습니다. 혹시 재현율을 높이려면 Dataset directory에 이미지를 여러 개 넣거나, 스텝수를 늘려야 할까요? WD tagger 같은 걸 사용하는 분도 계시더라구요. | 23.01.08 10:57 | | |
(IP보기클릭)121.162.***.***
일단 스텝 수를 올리면 재현률이 더 올라가기는 합니다. 과적합 증상이 나타나기 전까지 조금씩 올려보세요. 데이터셋은 숫자보다는 퀄리티가 위주로 준비하시면 됩니다. 본문에서는 공식 일러14장을 사용했습니다. | 23.01.08 16:51 | | |
(IP보기클릭)58.233.***.***
(IP보기클릭)121.162.***.***
데이터셋 숫자가 적을수록 이미지 한장의 영향이 커지기 때문에 되도록이면 그림체는 통일하는게 효과적입니다. | 23.04.09 11:00 | | |