나도 막 엄청 잘 아는건 아닌데, 그냥 지금까지 해보면서 알아낸거 공유하려함.

-준비물

https://arca.live/b/aiart/60472214 내가 쓴 코랩. ngrok으로 써라. gradio는 지금 불안정함. 그리고 에러뜨면 xformers는 끄고해라.

https://arca.live/b/aiart/60520760 이미지 512x512로 잘라주는 프로그램(이거 안되는 사람들은 그냥 다른 툴 아무거나 써도 됨)

학습 시키려는 거에 따라서, 특정 작가의 그림 or 특정 오브젝트(캐릭터, 사물)의 그림. (찍먹할거면 10장 정도만 준비해. 아니면 개 오래걸림)


소요시간 5시간~10시간. 무료버전 코랩은 해보니까 4시간정도 하고 12시간 쿨타임 걸리더라.


1. 그림 받아오기.


그림은 원하는 작가의 그림을 알아서 받아라. 


그리고 바탕화면에 영어로 된 폴더를 하나 만든다. 거기에 사진을 다 넣음.


2. 그림 자르기.


그림 잘라주는 프로그램을 받고 압축을 풀면


이렇게 나올건데 setup -> launch 순으로 실행.


아까 만든 폴더를 선택하고, OK를 누름.


사진을 자른다. 자르는법은 말 안해도 알지?


다 자르고 나면 프로그램이 자동으로 꺼지고, 아까 만든 폴더 안에 outputs 폴더에 잘라진 사진들이 들어간다.


3. 드라이브에 업로드


코랩을 실행하고 나면, 구글 드라이브에 SD라는 폴더가 생긴다. 


이 폴더 안에 img 라는 폴더를 만든다.


 


img 폴더 안에 outputs폴더에 있던 512x512 사진들을 다 업로드한다.


4. 코랩 실행, 태그 추출.


코랩을 실행한 후, Train에 preprocess image를 누른다.


  

source directory에 /content/drive/MyDrive/SD/img

그 밑에 /content/drive/MyDrive/SD/Trainimg 를 입력한다.


주황색 Preprocess 버튼 위에 Use 딥부루 어쩌구가 있다. 그걸 체크한다.

태그들을 정리해서 텍스트 파일로 같이 추출해준다.


끝나고 나면, SD폴더 내에 Trainimg라는 폴더가 생기고, 여기에 단부루 태그 텍스트 파일과 함께 사진들이 담긴다.


학습할때 이 텍스트 파일에 적힌 태그를 기반으로 학습하므로 수정 할 수 있으면 수정하는게 좋다.(귀찮으면 안해도됨)


5. 학습 시작


이제 준비는 끝났다


다시 코랩에 들어가서, 이번엔 Train탭의 Create hypernetwork를 연다.

이름은 반드시 작가의 이름(오브젝트는 오브젝트 이름)을 입력한다. (예를들어, abc작가의 그림체를 학습할거면 이름을 abc로, 애니 캐릭터 aqua를 학습할거면 aqua로 입력한다)

만들고 나면, 이번엔 Train으로 이동한다.


우린 하이퍼네트워크를 학습시킬 것이기에 Hypernetwork에서 방금 만든 파일을 선택한다.


Learning rate는 0.0000005를 추천한다. 이 이상으로 올리면 Loss값이 높아져서 학습이 제대로 되지 않을 가능성이 높다.


Dataset directory에는 /content/drive/MyDrive/SD/Trainimg 를 입력한다. 아까 태그들이 출력된 폴더다.


Log directory는 학습된 파일의 미리보기 그림들과 백업 파일들이 생성된다. /content/drive/MyDrive/SD/Log 를 입력해준다.


prompt templates file은 특정 그림체 학습이라면 놔두고, 오브젝트(특정 캐릭터 또는 사물) 학습이라면 /usr/local/content/repo/textual_inversion_templates/subject_filewords.txt 로 바꿔준다.


Max steps는 학습 시킬 데이터셋의 양에 따라서 기하급수적으로 늘어난다. 우린 일단 10~40장 정도를 학습시킬 것이므로, 20000~60000 정도로 설정한다.(사실 이정도도 굉장히 오래걸린다. 글카 좋으면 차라리 로컬로해라..)


그 밑에칸은 미리보기 사진을 몇 스탭마다 저장할 것인가를 묻는 것이다. 나는 귀찮으니 5000으로 설정했다. 보통 1000으로 설정한다.


그 밑에칸은 몇 스탭마다 백업할지 묻는 것이다. 2000 정도로 설정해두면 된다.


맨 밑에 Preview prompt는 큰 의미가 없으니 art by (작가 이름)을 적어두면 된다. 오브젝트는 a photo of a (오브젝트 이름)으로 하면 된다.


이제 Train Hypernetwork 버튼을 누르자. 이제 끝이다. 기다리기만 하면 된다.


6. 링크 켜기


학습이 완료되면, setting 탭으로 이동해서 밑으로 내리다보면

이렇게 나와있는 곳이 있다.


None부분을 클릭해서 아까 만든 파일로 바꾸고, 저장한다. 이제 t2i나 i2i에서 쓰면 된다. 프롬프트에 art by (작가이름), 오브젝트는 a photo of a (오브젝트 이름)을 입력하면 된다.


7. 자주 묻는 질문


CUDA뭐시기 오류가 뜬다 : 코랩 사본 받아서 써라.


런타임 중간에 끊겨도 저장되냐? : 되긴 한다. 그래도 혹시 모르니, 구글드라이브에 SD/Log 폴더속을 뒤져서 가장 최근 백업파일을 찾아서, SD/models/hypernetworks 폴더에 뒤에 -스탭수치 지워서 집어넣고 다시 학습하면 이어서 된다.


학습창에 에러가 뜬다 : 재시작 하거나, xformers끄고 재시작한다. 또는 자신이 ngrok을 안 쓰고 있는건 아닌지 확인한다.


악용은 하지 말자