위: 임베딩 훈련 후 제일 이상한 것만 추리기

중간: 일부로 과적합한 드림부스

아래: 드림아티스트중에 제일 잘나온거


내가 논문 리뷰어였으면 이 그림만으로도 ㅈ나 깠을거다ㅋㅋㅋㅋ

적어도 코드만 봤을때는 드림아티스트는 학습의 토대가 너무 빈약함.


드림부스는 3가지 모드가 있음.


기본 옵션대로 위에 두개 다 안켜면 그냥 임베딩 훈련이랑 똑같음.

Train with DreamArtist를 켜면 이제 네가티브 임베딩을 같이 훈련하는 거다... 근데 방식이 그냥 지금 네거티브 프롬프트로 이미지 만드는 방식이랑 완전히 똑같음.

프롬프트의 임베딩을 c, 네거티브 임베딩을 uc라고 하면

우리가 이미지를 만들 때 모델에 들어가는 임베딩은 uc + CFG * (c - uc)임. CFG는 우리가 아는 그 CFG 스케일이고, CFG가 커질수록 임베딩이 c에 가까워진다는걸 알 수 있음.

문제는 이거다. 기존 Textual Inversion은 그냥 훈련 이미지와 가장 잘 맞는 c를 찾기만 하면 되는데,

드림아티스트는 훈련 이미지와 잘 맞는 uc + 5(c - uc) = 5c - 4uc를 찾아야 한다는 거다. c 찾는것도 힘든데 uc까지 찾는다고? 겉으로만 보면 c와 uc가 잘 나뉘어질 것 같지만 내가 코드 구현한걸로 봤을때는 그러기엔 힘들어보임. 왜인지는 안알랴줌. 만약에 드림아티스트가 논문 등재되고 인기가 생긴다면 바로 저격논문 쓰러간다.


Train with reconstruction을 켜면... loss function에 훈련 이미지와 생성 이미지 사이의 F1 loss를 추가한다. 픽셀 사이의 차이가 적어지도록 만든다는건데, 이게 왜 ㅄ같은지는  이미지 사이의 유사도를 어떻게 구하는 것일까? - AI그림 학습 채널 (arca.live) 에 설명해뒀다.

훈련 이미지를 1장 넣고 Train with reconstruction을 켜면 임베딩으로 훈련 이미지와 유사한 스타일을 만들 수 있는것도 이것 때문이겠지만, 훈련 이미지가 늘어날수록 임베딩으로 만들어지는 그림도 점점 퍼져서 인간의 형태를 유지 못하게 될거임.

pre-trained라고 작자가 올려놓은 ani-nahida 임베딩. 나히다 ㅇㄷ?


그리고 Classifier path에 들어가는건...  7eu7d7/pixiv_AI_crawler: 基于深度学习的p站高质量涩图AI爬虫,可以学会你的XP (github.com) 아마 이거인것 같다. 뭐냐면 자기가 좋아하는 이미지를 분류해주는 모델같은데, 이걸 추가하면 그냥 그 분류 모델의 점수가 잘 나오게 하도록 (=내 취향에 맞는 그림이 나오도록) 임베딩을 훈련하는 듯하다. 근데 그냥 softmax 점수를 loss function으로 쓰는 것부터 병신짓이라 설마 이걸로 논문을 썼겠어 에이