안녕하세요! 브라이언트입니다 :)
오늘은 스테이블 디퓨전으로 CivitAI에 올라와 있는 이미지를 만들어 볼 시간입니다!
CivitAI는 이미지 생성 관련 정보들과 이미지들을 공유하는 커뮤니티라고 이해하시면 되겠습니다.

CivitAI에 접속했습니다.
저는 그 중 왼쪽의 붉은 사람 일러스트가 맘에 들어, 저 이미지를 기준으로 작업해 보겠습니다.

다운로드 버튼을 눌러 Checkpoint를 다운로드합니다.
체크포인트란?
스테이블 디퓨전에서는 특정 이미지 데이터를 학습한 '모델'을 기준으로 이미지를 생성할 수 있습니다.
모델은 우리가 저번 시간에 알아보았듯이 모델은 특정 알고리즘을 가지고 있는 인공지능이라고 생각하면 쉽게 이해할 수 있습니다.
바로 그 모델이 스테이블 디퓨전에서는 체크포인트라고 불립니다 :)
저는 m1 맥에서 로컬로 스테이블 디퓨전을 실행하고 있습니다.
그래픽카드가 좋은 분들은 로컬로 돌리시면 되며, 그렇지 않은 분들은 구글에서 제공하는 서비스인 코랩 Colab을 사용하시면 됩니다.
스테이블 디퓨전을 실행하는 방법에 대해서는 많은 정보들이 이미 있으니 따로 언급하지는 않고 넘어가도록 하겠습니다.
우리가 원하는 저 붉은 이미지를 한번 더 클릭하면, 어떤 프롬프트를 사용하여 이미지를 생성하였는지 상세하게 확인할 수 있습니다. 클릭해보겠습니다.

우측을 보시면 어려운 용어들이 등장하고 있습니다. 하나하나 설명하겠습니다 ㅎㅎ
프롬프트 Prompt
~~이런 단어들에 해당하는 이미지를 뽑아줘
네거티브 프롬프트 Negative prompt
~~에 해당하는 단어들은 이미지를 생성할 때 등장하지 않게 해줘
샘플링 메소드 Sampler
해당하는 알고리즘으로 이미지를 생성해줘
주로 Euler a, DPM++ SDE Karras가 자주 사용됩니다.
모델 Model
A느낌의 이미지를 생성할 건데, A와 비슷한 이미지를 학습한 모델을 사용할거야
CFG scale
사용자가 전달한 프롬프트를 얼마나 따를 것인지
기본값 7
샘플링 스텝 Steps
몇 번의 단계로 이미지를 생성할지
주로 20~30을 설정합니다.
시드 Seed
그림의 고유 번호입니다.
같은 프롬프트를 사용하더라도 시드값에 따라 조금씩 다른 결과가 나올 수 있습니다.
거의 비슷한 이미지를 생성하기 위해서는 동일한 시드값을 입력해야 합니다.
기본값은 -1 이고 랜덤으로 시드값을 설정합니다.
Clip Skip
여러 개의 레이어를 이용해 텍스트 모델의 정확도를 높임
예를 들어 프롬프트가 '갈색 털의 강아지가 공원에 있다' 라면
1단계에서는 '강아지가 공원에 있다'에서
2단계에서는 '갈색 털의 강아지가 공원에 있다'처럼 정확도가 올라가는 것입니다.
주로 2 사용
저장 경로는 다음과 같습니다.
stable-diffusion-webui/models/Stable-diffusion
FastNegativeV2,(low quality:1.3), (worst quality:1.3),(monochrome:0.8),(deformed:1.3),(malformed hands:1.4),(poorly drawn hands:1.4),(mutated fingers:1.4),(bad anatomy:1.3),(extra limbs:1.35),(poorly drawn face:1.4),(watermark:1.3),((long neck)),(blurry:1.4)
네거티브 프롬프트를 보니 FastNegativeV2가 사용되었다는 걸 확인했습니다.
다운받도록 합시다.

저장 경로는 다음과 같습니다.
stable-diffusion-webui/embeddings
Prompt, Negative Prompt, Sampler, Model, CFG scale, Steps, Clip Skip 값을 그대로 입력해줍니다.
Sampler같은 경우 DPM++ 2M Karras, DPM++ SDE Karras가 사용되는데 CivitAI에서 오타가 난 것 같아 DPM++ SDE Karras로 사용하도록 하겠습니다.
Seed값은 -1을 사용합니다.

가로 세로는 보통 512 768을 주로 이용하기에 해당 값을 적용시켜주었습니다.

^ DPM++ SDE Karras로 generate 생성했을 때의 결과물입니다.
비슷하지는 않으나, 나름대로 개성있는 이미지를 생성할 수 있었습니다.
이미지를 생성해 내는 것이기 때문에 매번 결과가 달라질 수 있습니다.
Seed 값이 -1으로 설정해 두었는데, 매번 시드값이 랜덤으로 생성되기 때문이죠.
또한 시드값을 고정시켜서 생성한다고 하더라도 결과는 달라질 수 있습니다!

^ DPM++ 2M Karras로 생성한 결과물입니다.
조금 더 시크해 보이는 이미지를 생성했습니다.

^ 원본과 같은 시드값으로 DPM++ SDE Karras를 사용한 결과입니다.

^ 원본과 같은 시드값으로 DPM++ 2M Karras를 사용한 결과입니다.
축하합니다. 여러분은 CivitAI에 올라와있는 어떤 이미지든 유사하게 생성해낼 수 있는 능력을 갖추게 되셨습니다.
이는 매우 중요한 시사점이며, 이미지 생성 분야에 거대한 한 발을 내딪게 된 것을 의미합니다.
CivitAI에 올라와 있는 데이터들을 그대로 Stable Diffusion에 가져와서 이미지를 생성해 보았으나 완전히 유사한 그림을 얻기는 힘들었습니다.
시드값 조절을 통해 보완이 가능한 부분이지만, 이 또한 비슷한 그림이 나올 확률이 높아지는 것이지 똑같은 그림이 나온다는 뜻은 아닙니다.
기본적으로 이미지를 생성하는 것이기에 원하는 이미지가 있다면 계속해서 이미지를 생성해보는 수밖에 없습니다.
좋습니다!
다음 시간에 뵙겠습니다. 감사합니다, 브라이언트였습니다.