[튜토리얼]대망의 모델 훈련 기초 마지막 편! 반 고흐가 내 초상화를!??! <Dreambooth -3->
본문 바로가기
ai 만들어보기(feat ai artwork lab)

[튜토리얼]대망의 모델 훈련 기초 마지막 편! 반 고흐가 내 초상화를!??! <Dreambooth -3->

by mement0mori 2023. 9. 19.

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 ARTWORK LAB : 네이버 카페

stable diffusion 기반 이미지 생성을 비롯한 자연어처리 인공지능을 연구합니다. 쉽고~ 재미있게~

cafe.naver.com