스테이블 디퓨전(StableDiffusion)

로라(Lora)를 만들어 봅시다.

물범쌤 2024. 8. 3. 14:00

안녕하세요 여러분, 물범쌤입니다 :)

 

여러가지 스테이블 디퓨전의 기능들을 전해드리면서

이미지를 제작하는 과정에서 필요한 대부분의 기능들은 전해드린것 같네요,

하지만 이미지에 영향을 미치는 확장 모델링 기능중에

로라(Lora)는 의외로 제작하기 쉽다는 사실, 알고 계셨나요?

 

오늘은 이 로라를 제작하는 과정을

최대한 쉽게 알려드리도록 하겠습니다.


로라를 제작하는 과정은 크게 3가지 단계로 나뉘어 집니다.

 

1. AI를 학습시키기 위한 샘플링 이미지 수집

 

2. 로라 제작을 위한 데이터 셋 제작

 

3. 로라 트레이닝을 통한 로라파일 제작

 

여기에서 1번은 사용자가 쉽게 할 수 있는 부분이고

2,3번은 쉽게 진행이 가능한 코랩파일이 있습니다.

유료버전 필요없이,

무료버전으로 충분히 제작 가능하니까 걱정하지 않으셔도 됩니다 :)

 

1. 그렇다면 먼저 AI를 학습시키기 위한 샘플링 이미지를 수집해 봅시다.

저는 여러분께 알려드리기 위해 카리나 님의 이미지로 로라를 제작했었는데,

연예인 분들의 얼굴같은 경우 이미지 생성시 초상권등의 문제가 생길수 있으니

혼자서 학습하는 용도로만 사용하시길 바랍니다.

 

이번에는 아이유님의 사진으로 한번 제작 예시를 보여드리겠습니다.

(해당 연예인의 사진은 교육 예시 용도로만 사용합니다,

2차 창작을 통한 수익 창출 및 허위사실을 생성하는 용도로 사용되어서는 안됩니다.)

 

먼저 로라 제작을 위한 샘플링 이미지에는 몇가지 조건이 필요합니다.

 

● 최대한 얼굴이 잘 보이고, 다양한 각도가 좋습니다.

● 고 해상도의 이미지일수록 좋습니다.

● 타인이나 소품이 적을수록 좋습니다.

 

먼저 구글에서 '아이유'님을 검색합니다.

 

 

 

큰 해상도를 모아보기 위해서

도구-큰사이즈를 클릭해주세요!

 

 

 

이제부터 샘플 이미지를 수집해주세요.

로라 트레이닝을 위한 최소 이미지는 15장입니다.

하지만 당연히, 최대한 많이 수집할수록 더 좋은 품질이 만들어집니다 :)

파일에서 이미지를 전체 선택 후에 '이름바꾸기'를 진행해 주세요

그러면 이렇게 동일한 네임패턴을 가진 이미지 이름으로 생성됩니다.

 


2. 다음은 데이터셋 제작입니다.

 

https://colab.research.google.com/github/hollowstrawberry/kohya-colab/blob/main/Dataset_Maker.ipynb#scrollTo=HuJB7BGAyZCw

반응형

위 URL로 이동하시면 데이터 셋 에디터 코랩파일을 보실 수 있는데요.

현재 파일은 제작자가 공유한 공유파일이므로

우리 드라이브로 가져와서 우리 소유로 만들어야 합니다.

 

파일-드라이브에 사본저장을 눌러서

우리만의 파일로 만들어 줍시다.

 

후후후 이제 이 파일은 제겁니다.

이름 수정을 통해 제 이름을 추가해주겠습니다.

헷갈리시는 분들은 파일명을 한글로 바꾸거나

lora_DataSet 이런식으로 바꾸셔도 좋습니다.

 

본격적으로 데이터 셋을 제작해 보겠습니다.

Start Here 메뉴에서 프로젝트 네임을 입력해주세요

저는 IU_lora로 지어봤습니다.

 

 

그 다음은 Start Here 밑에 재생버튼 보이시죠?

 

'▶'버튼을 눌러서 실행시켜 주세요!

맨 처음 실행시 GPU 연결을 위해 시간이 소요될 수 있고

데이터셋 파일이 구글 드라이브에 생성되기 때문에

드라이브 접근 권한을 허용하라고 알림창이 뜰겁니다.

 

활성이 다 되었다면

내 드라이브-Loras 경로 밑에

제작하신 프로젝트 이름의 파일이 생성되어 있을겁니다.

 

 

 

안으로 들어가면, dataset이라는 폴더가 있는데,

그 안에 다운받은 이미지들을 넣어주셔야 합니다.

 

 

 

다시 파일로 돌아와서 ,

2번(Scrape images from Gelbooru)은 건너뛰고,

3번(Curate your images)을 실행해주세요

 

2번은 이미지 데이터셋이 없을경우 자체적으로 수집하는 기능인데,

직접 이미지를 수집하는것보다 느리고, 좋지 않습니다.

 

3번은 우리가 선택한 이미지 중에 삭제할 이미지나

로라 트레이닝을 진행할 이미지를 선택하는 과정입니다.

(*실험을 위해서 webp나 jfif 파일을 섞어봤는데 오류가 뜨네요.

png,jpg,jpeg형식의 파일만 인식하는것 같습니다.)

 

이런식으로 이미지를 선택할 수 있는데

저는 전부 트레이닝 후보로 넣을 예정이니

그대로 진행을 위해서

상단 입력창에 바로 엔터를 치겠습니다.

요부분 입니다.

 

 

 

다음은 4번으로 넘어와서

method 를 선택해 주세요.

 

지금은 실사 기반이기 때문에 'photo captions'를 선택하지만

애니메이션 기반의 'Anime tags'도 선택 가능합니다.

다른 옵션을 건드릴 필요가 없습니다.

바로 실행버튼을 눌러주세요!

 

5번(Curate your tags)도 굳이 실행하지 않습니다.

내용을 보면 태그를 설정하는 부분인데

아마도 우리가 로라 사용을 할때 활성화 키워드를 넣는것처럼

제작하는 로라를 사용하기 위한 키워드를 설정할건지 묻는것 같습니다.

하지만 우리는 대부분 로라를 직접 클릭해서 설정하기 때문에

크게 설정할 필요를 느끼지 못했습니다 :)

 

바로 6번을 진행해 주세요!

6번은 아주 빨리 진행되고

로라 트레이너 파일로 자연스럽게 이동할 수 있습니다.

 


 

 

3. 로라 트레이너 파일 또한 파일-드라이브에 사본 저장을 통해서

따로 소유하시는게 좋습니다.

데이터셋 파일에서 넘어온 상태가 아니어도 로라 제작에 큰 문제가 없으니

걱정하지 않으셔도 좋습니다.

 

https://colab.research.google.com/drive/14s2enkZ5gdqXafZDf1GD9tCR4ZqK8PoG

 

로라 트레이너를 실행시키기 위해서 GPU연결이 실행되어야 하는데,

아마 누르면 세션을 종료하라면서 편집창이 뜰겁니다.

우리는 데이터셋 파일에 활성화 되어있던 GPU세션을 종료시키고

로라 트레이너 파일의 GPU를 활성화 시키면 됩니다.

 

 

 

 

StartHere를 보시면, 데이터셋 파일과 동일하게

프로젝트 네임을 설정하는 부분이 있습니다.

이 부분은 실제로 로라 파일의 이름이 되는 부분이니까

직관적인 네이밍을 지어주시는게 좋습니다.

 

실행하면 바로 로라 파일 제작이 들어가기 때문에 아직은 실행하지 마세요

아래로 내려서 트레이닝 모델을 Stable Diffusion으로 설정해 주세요

 

 

 

 

 

 

다음은 'Steps' 단계입니다.

설명을 하나하나 살펴봅니다.

 

첫번째 num_repeats의 설명은

설정한 숫자와 이미지 갯수를 곱한 값이 200~400이 되면 좋다고 합니다.

전문적인 로라 생성을 위해 샘플링 이미지를 400장 이상 확보하시는 분은 드물테니,

보통 이미지를 20~40장사이로 수집한다는 전제하에 수치를 10으로 작성합니다.

 

 

 

두번째 옵션은 설명에 대놓고

10Epochs나 2000Step을 추천합니다.

우리는 그대로 10Epochs로 설정해 주겠습니다.

 

 

 

 

배치 사이즈 또한 설명에 2나 3을 추천한다고 합니다.

배치사이즈를 늘리면 훈련이 빨라지지만

품질이 저하될수 있다고 하니 2로 설정해줍니다.

 

 

 

그 다음 아래로 내려와서 'Structure'메뉴에서

lora type이 lora로 되어있는지 확인해주시고

표에 맞춰서 dim과 alpha값을 설정해 주세요

 

 

 

이제 모든 준비가 끝났습니다.

실행 버튼을 눌러주세요!

 

로라 트레이닝에 소요되는 시간은 편차가 꾀 있습니다.

어떤 때에는 5분 내외, 어떤때에는 10분이상 소요될때도 있습니다.

실행파일을 계속 지켜보시기 보다
다른 일을 하시다가 한 번 들여다 보시는것을 추천드립니다 :)

 

로그를 자세히 보면, Steps의 편차(%)에 따라서

총 10개의 로라 파일이 만들어지는것을 볼 수 있습니다

 

 


이제 로라를 사용해볼 차례입니다.

구글 드라이브-loras-프로젝트파일(저의 경우는 IU_lora)-output 폴더로 들어오면

생성된 로라 파일들이 보입니다.

이 파일들을 다운로드 받습니다.

 

이 파일들은 이제 많이들 아시는 models-lora폴더에 추가해주시고

스테빌리티 매트릭스 사용자 분들께서는 확장 모델파일 추가 메뉴에 넣어주세요

만일 초보자라서 어디에 파일을 넣어야 할지 모르시는 분들은

확장 모델에 대한 포스팅을 먼저 참고해 주세요

(https://healtable.tistory.com/7)

 

 

 

 

이번 실습은 web-ui Forge로 진행해 보겠습니다.

Lora탭에서 새로고침을 하면

이번에 추가한 로라 파일들이 보일겁니다.

 

간단하게 프롬프트를 작성하고,

이미지 생성을 눌러봅시다.

 

 

느낌이 있는지는 잘 모르겠네요?

로라 별로 느낌이 강하게 나오는 파일과 약한 파일이 있는데,

우리는 이 중에서 사용할 파일들을 솎아내야 합니다.

이때에 팁을 드리도록 하겠습니다.

 

최하단 스크립트 메뉴에서 x/y/z plot을 선택합니다.

x_type을 prompt S/R로 두고,

X values에 다음과 같이 로라 넘버를 입력합니다.

 

이대로 이미지를 생성하면,

로라 수치별로 생성된 이미지를 한 눈에 볼 수 있습니다.

 

저는 좀 더 정확한 분별을 위해

샘플 이미지에 많았던 단발머리와 시드를 고정하고 다시 뽑아보겠습니다.

 

확실히 단발로 뽑아보니까

조금 더 느낌있는 이미지들이 나오는것 같습니다.

 

이렇게 스타일을 바꿔가면서

가장 알맞는 로라 파일을 선정하시면 되겠습니다.

 

최종 생성물


오늘은 로라 제작법에 대해 알아보았습니다.

 

처음에도 말씀드렸지만,

학습 용도 외에 다른 용도로 연예인이나 유명인의 이미지를 사용할때에는

초상권 등의 문제가 발생할 수 있으니 유의해주시기 바랍니다.

 

이 컨텐츠가 유익하셨다면

커피값은 기업들에게 받을테니

광고 한번씩만 눌러주시면 감사드리겠습니다 :)

 

그럼 모두 좋은 하루 되세요! ^^

반응형