1편 : https://www.clien.net/service/board/cm_aigurim/18000175CLIEN
신윤복 화백님의 로라를 사용해 그럭저럭 동양화 화풍을 끌어내고 있습니다만, 역시 자체 모델도 있으면 좋겠다는 생각이 들어 이전에 실패한 V1을 개량하는 작업을 진행중입니다.
https://civitai.com/models/27670/shinyunbok
과거 모델에서 학습에 사용한 샘플은 신윤백 화백님의 그림 전체를 사용했기에, 인물들의 모습 디테일을 묘사하지 못하는 문제가 있었습니다. 로라에서는 인물들의 클로즈업 70%와 배경 및 동물 30%를 사용해 학습을 진행하여 만족스러운 결과를 얻었기에 동일한 방법을 적용하였습니다. 그 과정에서 새로 알게 된 사실이 있어 공유차원에서 정보글을 적어봅니다.
이전글에서 과적합 판단용으로 "apple shinyunbok painting"을 사용했습니다만, 그보다는 실제로 사용을 염두에 두고 있는 prompt를 쓰는 것이 더 나아보입니다. 아래는 현재 제가 사용하고 있는 prompt값입니다.
Instant Token : shinyunbok painting
Class Token : painting
Instant Prompt : shinyunbok painting
Class Prompt : painting
Sanity Sample Prompt : best quality, portrait of a lady holding a cat
Sanity Sample Negative Prompt : worst quality, low quality
Sample Image Prompt : best quality, portrait of a lady holding a cat, shinyunbok painting
Sample Negative Prompt : worst quality, low quality
이렇게 해두면 각 학습 단계별로 기본 모델이 어떻게 변화해가는지 관찰할 수 있게 됩니다. 만약 trigger word를 사용하지 않는 모델을 목표로 한다면 Sanity Sample의 결과가 원하는 스타일인지를 보면 되고, trigger word를 사용하는 모델을 목표로 한다면 일반 Sample의 결과를 주시하면 되겠습니다.
학습 하기 전의 기본 모델에서 동일한 seed로 생성한 Sanity Sample(상)과 Sample(하)의 예시입니다.
아래는 기본 Learning Rate로 1370 step (5 epoch) 학습한 상태의 모델로 그린 Sanity Sample(상)과 Sample(하)입니다.
trigger word를 사용하지 않는 것을 염두에 두고 있다면, 아직 효과가 많이 약하기 때문에 좀 더 학습이 필요한 상황입니다.
trigger word를 사용할 경우에는 이미 이 시점에서 충분히 해당 스타일이 학습된 것을 확인할 수 있습니다. Learning Rate가 낮을수록 좀더 세밀한 학습이 가능하기에, 이 경우에는 이 지점을 목표로 Learning Rate를 낮추고 학습을 재시도해보는 것이 좋습니다.
예를들어 Learning Rate를 현재의 절반값으로 조정한다면, 5 epoch의 결과를 10 epoch정도에 맞출 수 있다는 계산이 나옵니다.
아래는 1644 step (6 step)의 결과입니다.
trigger word를 사용하지 않은 경우는 고양이가 제대로 묘사되지 않기 시작하였기 때문에 이 시점을 목표로 Learning Rate를 낮춰서 다시 학습을 진행하는 것이 좋아보입니다. 만약 원하는 스타일이 나오지 않았다면 기본 모델을 바꿔보는 것도 좋습니다.
trigger word를 사용한 경우는 이미 고양이가 사라져서 과적합이 발생하고 있는 것으로 볼 수 있습니다.
마지막으로 3014 step (11 epoch)의 결과입니다.
이 단계는 극단적인 예시로, 양쪽 모두 과적합 상태로 판단됩니다. 이 상태에서는 어떠한 prompt를 넣더라도 원하는 결과를 얻기는 힘들 것입니다.
저는 언제쯤 이런 거 고민하는 고수의 반열에 오를 수 있을라나요...