AI 모델 생성 - Stable Diffusion

2023. 3. 30. 22:45IT

최신 기술이니 그냥 넘어갈 수 없었다. AI가 대세가 되다보니 chatGPT를 비롯해서 여러가지를 사용해 보고 있다. 뒤쳐지면 안되니까. 그 중에서도 재미가 있는 것은 Stable Diffusion을 이용해서 모델을 생성해 보는 것이 아닐까 싶다. 인공지능이 정말 대단하다는 생각을 갖게 되는 것 같다. 흥미를 위해 모델을 생성하는 것을 따라해 보고 있지만 많은 경우에 슬라이드에 들어갈 이미지들을 생성하고 있다. 

오늘은 모델을 만들어 봐야겠다. 생성을 이미 해 놓은 모델들을 보면 대단하다 하지 않을 수 없다. 

 

우선 모델 생성을 하기 위해서는 Stable Diffusion이 기본적으로 준비가 되어 있어야 한다. 워낙 설명해 놓은 사이트들이 많으니 그건 건너뛴다. 나도 이미 노트북에 설치가 되어 있다. 강력한 CPU도 GPU도 없기 때문에 속도는 상당히 느리다. Google Cloud를 이용해서 하는 방법이 있기는 한데 속도는 빠르지만 저장 용량도 한계가 있고 문제는 하루에 돌려볼 수 있는 횟수에 제한이 있는게 아쉬웠다. 그래서 난 느리지만 내 노트북에서 하는 것이 좋다.

 

참고를 해야 할 사이트가 있는게 좋기 때문에 검색을 해 보니 다음의 사이트가 좋더라.

https://civitai.com/

 

Civitai | Stable Diffusion models, embeddings, hypernetworks and more

Civitai is a platform for Stable Diffusion AI Art models. We have a collection of over 1,700 models from 250+ creators. We also have a collection of 1200 reviews from the community along with 12,000+ images with prompts to get you started.

civitai.com

 

가입을 하지 않아도 필요한 자료는 다운로드가 가능했다. 어떤 제약이 있는지는 모르겠다.

둘러보면 이미 다양하게 생성되어 있는 모델들을 볼 수 있었는데 그 중에서도 모델 사진을 정해 놓고 따라해 보면서 비슷한 결과가 나오는지를 보는게 좋을 것 같았다. 찾다보니 실제 인물들을 학습시켜 놓은 모델들이 있었는데 한국 모델로는 아이유가 눈에 띈다. 정말 아이유 사진인지 AI가 생성한 이미지인지 구분이 안될 정도이다. Stable Diffusion에서 비슷한 모델을 생성하기 위해서는 아래의 그림 우측 상단에 있는 모델을 다운로드 해야 한다. 300메가가 조금 안되는 사이즈이다. 

 

 

 

 

다운로드 받은 파일 iu_V35.safetensors는 stable diffusion이 설치되어 있는 폴더 하위의 model에 Lora라는 폴더에 복사를 해 넣는다.  다른 모델들을 둘러보면 1기가가 훨씬 넘고 큰 파일은 5기가 정도 되는 파일들도 있는데 이런 파일들은 체크포인트다. 

 

                      /stable-diffusion-webui/models/Lora

 

이건 나중에 좀더 보기로 하고 우선 타겟을 삼을 이미지는 아래의 모델을 찾았고 모델을 클릭해서 들어가면 자세한 내용을 볼 수 있다. 아이유와 많이 닯아 있다. 여기서 봐야 할 가장 중요한 것은 프롬프트이다.  오른쪽에서 볼 수 있는 Prompt.

 

 

 

 

이 프롬프트가 내가 디자인하고자 하는 내용을 AI, stable diffusion에 던지는 내용이고, 그 아래 Negative prompt는 AI에게 적용하지 말아야 할 사항을 던지는 내용이다. 이 두 가지 프롬프트 중에서 중요한 것이  < > 안에 들어가는 내용들이다. 프롬프트에서 보면 <lora:iu_v35:1>을 찾을 수 있을 것인데 앞서 다운로드 받아 Lora 폴더에 복사를 해 놓은 iu_V35.safetensors를 말하는 것이다. 그 외에 <lora:lightAndShadow_v10:0.7> 이라는 것도 보이는데 lightAndShadow라는 파일도 찾아서 넣어야 하는데 아쉽게도 출처를 찾을 수 없었다. 없어도 그냥 프롬프트에 넣어 두면 자동으로 무시 될 것이다. 파일 이름 뒤에 숫자가 있는데 각각 IU는 1, lightAndShadown는 0.7이다. 0에서 1까지의 값을 가질 수 있다고 하니 %로 계산하자면 모델을 0 ~ 100%까지의 적용 비율이라고 보면 된다.

 

네거티브 프롬프트에 보이는 설정들은 stable diffusion에서 하나씩 따라서 적용을 해 주면 된다. 기대를 갖고 실행을 했으나 다음과 같은 에러가 발생했다. 

 

modules.devices.NansException: A tensor with all NaNs was produced in Unet. Use --disable-nan-check commandline argument to disable this check.

 

Nan Exception 이 발생을 했고 해결책으로 --disable 옵션을 주라고 하는데 옵션을 주면 아얘 이미지가 생성이 되지 않는다. 한시간에 걸쳐 시도를 했으나 실패 !!! 그래서 다른 모델을 선택했다. ㅜㅜ

 

 

그래서 어쩔 수 없이 목표를 변경했다. 많이 본 얼굴인데 누군지는 기억이 안난다. 여기서 주의 할 것은 내가 받은 파일은  irene_V70인데 프롬프트에는 irene_v70으로 v가 대문자와 소문자로 달라서 에러가 발생했다. 파일 이름을 바꿔주거나 프롬프트를 바꿔줘야 한다. 이 모델의 이름은 이레네가 아니라 아이린인가보다. 

 

다음의 stable diffusion을 보면 다음과 같다. 

 

1. 맨 윗쪽에 check point를 지정해 놨다. 
    다운로드는 https://civitai.com/models/6424/chilloutmix에서 받을 수 있다.

    복사는 lora가 있는 상위 폴더를 보면 Stable-diffusion 폴더가 있으니 거기에 복사해

    넣으면 된다.

2. Prompt, Negative Prompt를 넣고

3. Sampleing method를 넣는다.

4. Sampling steps를 30으로 넣는다. 몇 번이나 샘플링을 할지를 정하는 것

5. 파일의 넓이와 높이를 정한다. 내 경우는 각각 512 x 768로 했다. 디폴트로는 둘다 512였다

6. 배치카운트는 몇 개의 파일을 생성할 것이냐이고 배치사이즈는 몇 번의 배치카운트를

    생성할 것이냐다.

    두 개를 곱한 값이 생성될 파일의 개수다. 하나만 실행해도 2시간 가깝게 걸리므로 둘다 1

7. CFG 스케일은 내가 준 모델을 어느 정도나 적용할 것인가인데 보통 7~9를 많이 넣더라.

    숫자를 키우면 키울수록 모델과 유사하게 나온다고 한다.

8. Seed는 -1일 경우는 랜덤으로 stable diffusion이 생성을 한다.

   생성이 된 이미지에서 자동생성된 seed 값을 갖고 있고, 그 값을 입력하면 생성했던 모델과

   아주 유사하게 나타난다고 한다. 

   여기 입력된 숫자는 앞의 예에서 그대로 복사를 해 왔다.  예와 비슷한 모델이 나올 것 같은데 koreanDollLikeness_v10 모델이 없어서 비슷하게 나올지 걱정된다.  검색을 해 보니 https://civitai.com/models/19356/koreandolllikenessv10에서 다운 받을 수 있다. 

 

 

짜잔~ 

모델이 생성되었다. 

 

 

실제 사진이라고 해도 무방할 정도의 품질이 나왔다. 

다양한 모델을 생성해 보기 위해서는 모델이나 체크아웃을 잘 선택하는 것도 중요하지만 멋진 프롬프트를 사용해 보는 것이 더 좋을 것 같다.  앞서 얘기한 사이트에서 다양한 인물의 모델을 받았고 그걸 가지고 다양한 프롬프트를 넣어보는 것이 재미 있을 것 같다.

 

다른 것은 하나도 건드리지 않고 프롬프트만 이렇게 바꿔봤다. 물론 koreanDollLikeness도 받아서 미리 설치했다.

 

hyper realistic lifelike texture dramatic lighting unrealengine trending on artstation, leica M9 RAW photo, 8k, masterpiece, best quality, realistic, photorealistic,ultra detailed,extremely detailed face, solo,1girl, irene1, <lora:irene_V70:1>, <lora:koreanDollLikeness_V10:0.2>,  8k portrait of beautiful cyborg with brown hair, intricate, elegant, highly detailed, majestic, digital photography, art by artgerm and ruan jia and greg rutkowski surreal painting gold butterfly filigree, broken glass, (masterpiece, sidelighting, finely detailed beautiful eyes: 1.2), hdr

 

결과물은 어떨까?

생각보다 훌륭하다. 다른 모델도 적용을 해 보자

 

 

 

 

 

이번엔 받아 놓은 다른 모델을 적용하기로 해 본다. 프롬프트의  <>에 내용을 모두 지우고 새로 받은 모델을 적용한다. 그리고 시드는 -1로 바꿔준게 전부이다. 각 출력마다 모델 정보를 아래에 표시했다. 

 

yurisaLora_v40:1 jangWonYoung_jwyV10:1 emmaWatson_v10:1

 

torpedoTits를 적용해서 모델을 생성하는데 중간에 중단을 할 수 밖에 없었다. 40% 진행된 흐릿한 사진을 보니 누드였다. 바로 중단!!! 그래서 Negative Prompt에 nude를 추가했다!!! 그래도 옷을 안입은 상반신이 나타난다. 다시 이것 저것 Negative에 추가해 본다.  참고로 NSFW는 찾아보니 Not Safe For Work이라는 의미라고 한다. 아무래도 받은 모델 파일자체가 헐벗은 것 같아서 모델을 변경했다. 일본 모델하나 유명한 한국모델  마지막으로 엠마왓슨까지다. 한국모델까지는 괜찮았는데 엠마왓슨은 어떻게 나타날지 궁금하다.

 

세 모델 모두 퀄리티가 대단하다.

 

"두 모델을 합하면 어떨까?"

이런 생각이 들었다. 그래서 아이린과 엠마왓슨을 합쳐 볼 수 있지 않을까?

 

                         <lora:emmaWatson_v10:0.5>,  <lora:irene_V70:0.5>

 

이렇게 하면 될 것 같았다. 그래서 해 봤다.

 

 

 

 

오늘은 여기까지만.......

하려고 했으나 장원영과 아이린을 정말 마지막으로 합쳐보기로 했다. 아래 출력을 마지막으로.....

 

반응형

'IT' 카테고리의 다른 글

공짜 유튜브 프라임?  (0) 2023.04.10
[뉴스-메일러] #1/? 프로그램 디자인하기  (0) 2023.04.01
Stable Diffusion  (0) 2023.03.27
[Python] Web Crawling - 다음 뉴스  (0) 2023.03.26
[Python] ChatGPT  (0) 2023.03.26