본문 바로가기
개발/LLM

Diffusion 모델 종류 및 예제

by ▶ Carpe diem ◀ 2023. 10. 2.

Diffusion 모델 종류 및 예제

Diffusion 모델은 noisy한 이미지에서 시작하여 역확산(reverse diffusion)을 통해 이미지를 생성합니다. 아래 사진은 위에서 설명한 내용을 이해를 돕기 위해 시각화한 것으로 실제 동작 단계를 보여주는 것은 아닙니다.

noisy한 이미지에서 강아지 이미지 생성 예

 

Diffusion 모델을 fine-tuned 모델들은 많이 있지만, 여기에서는 아래 모델들에 대해 다루어보겠습니다.

  • Stable Diffusion v1.4
  • Stable Diffusion  v1.5
  • F222
  • Open Journey v4
  • Anything V3
  • Inkpunk-Diffusion

Fine tuning은 이미 학습된 모델을 새로운 데이터셋에 대해 재학습하는 기술입니다. 그러나, 미리 학습된 모델은 새로운 데이터셋의 특성을 반영하지 못할 수 있기 때문에 fine tuning을 통해 미리 학습된 모델을 새로운 데이터셋에 맞게 조정하여 성능을 향상시킬 수 있습니다.

 

아래에서 사용되어지는 이미지들은 다음 프롬프트를 이용해서 생성(seed: 3321949303)하였습니다.

light natural tones , pencil drawing , watercolor drawing, portrait of a woman with long curly hair and white shirt, detailed eyes, beautiful , highly detailed, soft color tones, soft lighting, detailed lines, sharp, realistic, brush strokes, light hints of paint drips

 

Stable Diffusion v1.4

Stable diffusion v1.4를 이용하여 생성한 이미지

Stable diffusion v1.4는 stable diffusion을 개발한 Stablility AI에서 2022년 8월에 공개한 모델로, 최초로 공개적으로 사용되기 시작한 stable diffusion 모델로 간주되며, 일반적으로 사용될 수 있는 범용 모델입니다.

 

Stable Diffusion v1.5

Stable diffusion v1.5를 이용하여 생성한 이미지

Stable diffusion v1.5는 Stability AI의 파트너인 Runway ML에서 2022년 10월에 공개한 모델로, v1.2를 기반으로 좀 더 학습시킨 모델입니다. 모델 페이지에는 어떤 점이 향상되었는지에 대한 언급이 없지만, v1.4와는 다른 이미지를 생산하는 것을 확인할 수 있습니다.

 

F222

F222를 이용하여 생성한 이미지

F222은 누드 이미지를 생성하기 위해 학습된 모델이었지만, 신체 부위 관계가 정확한 아름다운 여성 초상화를 생성한다는 것을 알게되었습니다. 누드 이미지가 생성되는 경향이 있어 옷 관련 키워드(dress, skirt, jeans 등)를 프롬프트에 포함하는 것을 권장합니다.

 

Hugging Face 사이트에서 F222 모델을 확인해보니 많이 사용되고 있는 모델은 아닌 듯 하니, 사용하실 때 참고하시면 좋을 것 같습니다.

F222 로 검색했을 때 결과

 

Openjourny v4

Openjourney v4를 이용하여 생성한 이미지

Midjourney v4 모델에서 생산된 124,000장 이상의 이미지로 학습시킨 모델로, PromptHero 사이트에서 v4 모델을 이용하여 생성한 많은 이미지들을 확인할 수 있습니다.

 

이전 모델까지는 "mdjrny-v4 style"을 프롬프트로 넣어줬어야 하는데, v4 모델부터는 "mdjrny-v4 style"을 프롬프트에 넣어주지 않아도 된다고 합니다.

 

Anything v3

Anything v3를 이용하여 생성한 이미지

Anything v3 는 애니메이션 스타일 이미지를 생성하도록 훈련된 모델입니다. 현재 v5 모델을 다운로드 받아 사용할 수 있습니다.

 

Inkpunk-Diffusion

Inpunk-Diffuion을 이용하여 생성한 이미지

dreambooth에서 훈련된 fine-tuned Stable Diffusion 모델입니다. Gorillaz, FLCL, Yoji Shinkawa로부터 영감을 받았다고 합니다. 프롬프트에 "nvinkpunk"를 넣어줘야 한다고 합니다.

dreambooth는 구글에서 발표한 논문에서 사용된 학습 방법의 이름으로 Imagen(text-to-image 생성 모델)을 어떤 subject 에 대해 소량(3~5장)의 사진으로 Fine-tuning하여  개인화된 text-to-image 생성 모델을 만들 수 있게 해주는 학습 방법으로 자세한 내용은 논문을 참고하세요.

 

아래 이미지는 프롬프트에서 "nvinkpunk"만 제외하고 동일한 프롬프트로 생성한 것입니다.

"nvinkpunk"를 제외하고 Inpunk-Diffuion을 이용하여 생성한 이미지

Triggering keyword 를 삭제하고 이미지를 생성해도 동일한 이미지가 생성되는 것으로 보아, Openjourney 모델처럼 triggering keyword가 삭제된 것 같지만, 더 많은 예제들을 만들어보면 확인해보아야 할 것 같습니다.

 

생성된 이미지 비교

동일한 프롬프트를 이용하여 6개의 모델로부터 생성된 이미지들을 비교해보니, 모델의 특성에 따라 다른 이미지들이 생성되는 것을 확인할 수 있습니다.

Stable diffusion
v1.4
Stable diffusion
v1.5
F222 Openjourney v4 Anything v3 Inkpunk-Diffuion

 

원하는 이미지를 생성하기 위해 프롬프트를 자세히 작성하는 것도 중요하지만, 그에 못지 않게 모델의 특성을 파악해서 모델에 맞는 프롬프트를 작성하는 것도 중요할 것 같습니다.

 

'개발 > LLM' 카테고리의 다른 글

Tree of Thoughts  (0) 2023.10.09
ControlNet 이란?  (2) 2023.10.04
QA using a search API  (0) 2023.09.24
Retrieval Augmented Generation(RAG)  (0) 2023.09.23
Chain of Thought Prompting  (0) 2023.09.20