Settings 끝났으니까 (https://cafe.naver.com/stablediffusionlab/50)
이제 Concepts 항목으로 갑시다! 다 왔습니다. 고고!
여기도 Training Wizard 클릭하면 되긴 하는데, 저거는 그냥 앞에 학습 횟수랑 아래쪽 범주 이미지 세팅만 잡기 때문에 별 도움이 안 됩니다. 그래도 뭐 눌러놓고 시작합시다. ㅋㅋ
다음 설정해야 할 것이 데이타셋 디렉토리Dataset Directory입니다. 학습시킬 이미지가 들어있는 폴더 경로를 넣어주면 됩니다. 간단~ 그리고 아래 Classification Dataset Directory 요거는 나중에 학습할 때 우리 이미지가 속한 범주Class의 이미지를 생성하게 되는데, 고것들을 저장할 폴더를 지정하는 겁니다. 해도 되고 안 해도 됩니다. 넘어갑시다.
이제부터 중요한 부분입니다. 1편에서 말했던 Dreambooth 작동 방식과도 연관이 있는 바로 그 부분입니다. 맨 위에 instance token이랑 class token은 기본 교육에 필요하지 않으니 그냥 넘어갑니다. 걍 비워둬도 됩니다. 중요한 건 훈련 프롬프트Training Prompt입니다.
처음에 뭐 얘기했죠? 드림부스 기능 설명 이미지 다시 봅시다.
내 귀여운 강아지[V]를 그것이 속한 범주Class인 "dog"와 함께 학습시킨다고 했죠? 그 효과는 다름이 아니라 기존의 모델이 dog라는 범주와 함께 가능하던 모든 이미지 생성이 가능해진다는 겁니다. 드림부스의 기능이 그거죠. 내 강아지[V]를 dog에 연결시키는 거죠.
자 위에서 인스턴스 프롬프트Instance Prompt와 클라스 프롬프트Class Prompt가 바로 그 부분을 정의하게 됩니다. Instance Prompt에는 우리의 오리지널 이미지를 가리키는 식별자(Unique Identifier) [V]를 포함해야 하고, Class Prompt는 범주인 "dog"를 포함해야 합니다.
중요한 거 하나 더 식별자 [V]는 원래의 모델에 포함되지 않은 새로운 단어여야 합니다. 상식적으로 겹치는 단어면 당연히 학습도 엉망이 되겠죠?
그래서 보통 다른 튜토리얼들 보면 sks니 owdf니 아무거나 막 치는데 그런 이유 때문입니다. 저는 bekko라는 제가 만든 단어와 범주class인 bekko boy를 instance prompt에 입력하고, Class prompt에는 boy를 썼습니다. 추가로 더 조합을 해도 됩니다.
아래쪽 샘플 이미지 프롬프트는 그냥 훈련하고 샘플로 뽑아볼 이미지 프롬프트 치면 됩니다.
자 이제 거의 다 왔습니다. 하나만 더 보겠습니다. 이거는 모델의 퀄리티에 영향을 주는 부분이라 짚고 넘어가겠습니다. 아래쪽 Class Image Generation을 봅시다.
다른 건 볼 거 없고 Class Images Per Instance Image를 봅시다. 이거는 우리가 제공한 훈련용 이미지instance image 한 장당 몇 장의 범주 이미지Class Image를 만들 거냐 묻는 겁니다. 참고로 이거 숫자가 올라갈수록 품질은 좋아집니다. 단 속도는 계속 느려지는데! 이 이미지들이 데이터셋, 그러니까 훈련횟수에 포함되기 때문입니다. ㅠㅠㅠ 즉 앞에 훈련횟수랑 이미지당 150으로 해놨고, 우리가 훈련용 이미지를 3장 제공하고, 거기에 저렇게 Class Images Per Instance Image를 5로 해두면 3장 + 3X5=15, 즉 18장을 장당 150번씩, 2700번 계산기를 돌리게 되는 겁니다. ㅋㅋㅋㅋ실제로 저 수치를 늘려가면서 퀄리티를 향상시키는 튜토리얼도 있습니다. (https://www.youtube.com/watch?v=Tb4IYIYm4os&t=698s&ab_channel=SECourses)
이미 모델에 존재하는 이미지를 함께 학습시키면 아무래도 과적합 같은 현상이 방지되고, 범주와 연결도 더 수월하게 되겠죠. + 나의 강아지[V]와 그냥 "dog"가 다르다는 것도 더 확실해질 테니까, 당연히 결과가 좋아지겠죠. 그러니까 이것도 내가 가진 데이터셋과 작동 환경에 맞추어서 잘 조절해보시기 바랍니다.
여기까지입니다. concepts는 최신버전의 경우 총 네 개까지 지원이 되니까 아주 세밀하게 다양한 훈련도 가능하겠습니다.
마지막 savings 탭은 걍 길게 설명 안 하겠습니다. 전 이렇게 세팅했습니다.
당장 훈련 시키는데 큰 영향은 없습니다. 이대로 가셔도 됩니다. 자 그럼 다 됐습니다. 이제 Save settings 버튼을 누른 다음! Train! 버튼을 누르면 훈련이 시작됩니다.
데이타셋과 설정에 따라 다르겠지만, 최하 30분 정도에서 몇 시간씩 걸릴 겁니다. 마음 편히 먹고 기다립시다. ㅋㅋㅋ
훈련이 다 끝나면 Prior loss, loss, Instance loss 따위가 그려진 그래프가 나올 것이고, 끝났다고 할 겁니다. 대충 그래프가 아래쪽으로 수렴되면 잘 됐는갑다 하시면 됩니다. ㅋㅋㅋ
자 이제 이미지 뽑아봅시다!
4. 테스트
아주 쉽습니다. 체크포인트 선택하는 거 새로고침 버튼 누른 후에 살펴보면 내가 훈련한 모델의 이름과 훈련횟수가 찍힌 safetensors 파일이 생성돼있을 겁니다. 그걸 선택합니다.
그 다음은 똑같습니다. 이미지 생성해보면 됩니다. 생성팁은 instance prompt의 식별자[V]에 가중치를 줘가면서 뽑아보세요~ 예를들어 저는 boy라는 범주class에 묶었잖아요? 그럼 이렇게 쳐봅니다.
Van gogh style painting of (bekko) boy 혹은 Van gogh style painting of boy, (bekko) 뭐 이런 식이죠. 그럼 이런 사진이 나온 답니다.
당연히 프롬프트, 샘플러에 따라서 결과는 천차만별이니까요. 이것저것 테스트해보시기 바랍니다. 참고로 모델의 추가 교육은 드림부스Dreambooth의 Model 탭에 가서 select에서 내가 생성한 모델을 선택한 후 데이터셋을 바꿔가며 지금까지 과정 반복하면 됩니다~ 또 이게 무조건 많이 돌린다고 결과물이 좋은 게 아니고, 데이터셋이랑 여러 조건이 잘 맞아떨어지면 학습횟수 3000번이 5000번보다 나은 결과 보여줄 때도 있습니다. (경험담ㅋㅋ)
그럼 이제 나만의 모델을 만들어봅시다!!! 고고!!
출처-대망의 모델 훈련 기초 마지막 편! 반 고흐가 내 초상화를!??! <Dreambooth -3-> : 네이버 카페 (naver.com)
'ai 만들어보기(feat ai artwork lab)' 카테고리의 다른 글
자연어 처리 (Natural Language Processing, NLP)의 개념 (0) | 2023.10.06 |
---|---|
거대 언어 모델 (LLM): 자연어 처리의 혁신 (0) | 2023.10.06 |
[튜토리얼]갬동실화~ 반 고흐가 내 초상화를!?!?!!!!! <dreambooth 깨부수기 -2-> (0) | 2023.09.19 |
스테이블 디퓨전 버전 업데이트(SDXL) (0) | 2023.09.12 |
[튜토리얼]성능 폐급 컴퓨터로 인공지능 이미지 생성기 돌려보기 (0) | 2023.08.07 |