ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Automatatic1111 DreamBooth Simple Training Tutorial
    StableDiffusion 2023. 3. 25. 19:24
    반응형
    Automatic1111 DreamBooth extension을 학습 하는 과정을 소개하겠습니다.

    아래 DreamBooth Extention wiki 에서 제공하는 튜토리얼을 참고하여 작성한 글입니다.

    ELI5 Training
    Contribute to d8ahazard/sd_dreambooth_extension development by creating an account on GitHub.
    https://github.com/d8ahazard/sd_dreambooth_extension/wiki/ELI5-Training

    0. DreamBooth란?

    아래의 예시처럼 어떤 특정한 ObjectAI 모델(Stable Diffusion)에게 학습 시키는 tranfer learning입니다.

    출처: https://dreambooth.github.io

    앞서 설명한 AI, Stable Diffusion은 Stability AI라는 회사에서 방대한 양의 데이터로 학습한 거대한 생성 AI입니다. 따라서 sunglasses 가 무엇인지, backpack이 무엇인지 이미 알고 있습니다.

    DreamBoothInput images로 주어진 아래와 같은 갈색 선글라스와 보라색 가방을 AI가 이해하고 이를 생성하도록 하는 방법입니다.

    1. 모델 준비

    본 튜토리얼에서는 Stable Diffusion v1.5 를 사용합니다.

    기본 모델 사용

    1. 아래 링크에 접속합니다.
      runwayml/stable-diffusion-v1-5 at main
      We’re on a journey to advance and democratize artificial intelligence through open source and open science.
      https://huggingface.co/runwayml/stable-diffusion-v1-5/tree/main
    1. 아래와 같이 버튼을 눌러 모델을 다운로드 받습니다.

      [optional] Linux, mac 환경이라면 화살표에서 오른쪽 마우스를 클릭해 링크를 복사하고 wget 명령어로 직접 다운로드 받을 수 있습니다.

      wget -O <file name> <copied link>
      
      # e.g. 
      wget -O v1-5-pruned-emaonly.ckpt https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt
    1. 다운로드 받은 파일을 models/Stable-diffusion 폴더에 넣습니다.

    커스텀 모델 사용하기

    Stability AI가 강력한 모델을 무료로 배포하였기에 수많은 사람들이 본인이 원하는 이미지를 생성하기 위해 각자 모델을 더 학습을 시켰습니다.

    그 중엔 기본 모델보다 더 뛰어난 모델들이 많습니다. 또한 이를 아래와 같은 사이트에서 공유하기도 합니다.

    💡
    AI는 도덕적이지 않습니다. 따라서 얼마든지 나쁜 이미지를 생성할 수 있습니다. 아래 사이트도 마찬가지 입니다. NSFW(후방주의) 이미지들이 있으니 이를 피해 사용하시기 바랍니다.
    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.
    https://civitai.com/

    그 중 DreamShaper라는 모델을 사용하도록 하겠습니다. 선정 기준은 제 마음😃 입니다.

    앞서 설명한 1. 2. 3. 을 차례대로 따라오면 됩니다. 이 또한 역시 wget으로 같은 방법으로 다운로드 받을 수 있습니다.

    2. 데이터 준비

    💡
    가장 중요한 파트입니다. 아무리 좋은 모델, 좋은 학습을 해도 데이터가 좋지 않으면 제대로 학습할 수 없습니다. 틀린 답안지를 가지고 학습한 학생은 공부를 잘할 리가 없습니다.
    좋은 데이터셋의 특징나쁜 데이터셋의 특징
    고해상도저해상도
    학습하는 Object를 가리지 않는 이미지Object가 다 나오지 않게 엉망으로 잘린 이미지
    단순한 이미지여러 Object가 나오는 이미지, (e.g. 요정, 초콕, 양말이등 다양한 고양이 등장)
    다양한 이미지 (배경/빛/옷/표정/포즈 등등)반복되거나 아주 비슷한 이미지들
    학습하고자 하는 Object가 메인이 아닌 이미지

    상명대학교에 사는 귀여운 고양이, 요정이를 학습 시켜보겠습니다.

    데이터 준비 단계준비 과정
    1.학습 데이터 준비 (이미지 구하기)
    2.전처리 (해상도 512x512 사이즈로 통일)
    3.Caption(이미지에 대한 설명) 준비
    1. 학습 데이터 준비 (이미지 구하기)
      학습 데이터는 총 12장의 요정이 사진입니다. 상냥행 공유 드라이브에서 다운로드 받았습니다.

    1. 전처리 (해상도 512x512 사이즈로 통일)

      아래 링크에 접속하여 1. 에서 준비했던 이미지들을 업로드 합니다. (드래그 앤 드롭)

      BIRME - Bulk Image Resizing Made Easy 2.0 (Online & Free)
      BIRME is a flexible and easy to use bulk image resizer. It can resize multiple images to any specific dimension and crop images if necessary. It's an online tool and you don't need to download or install on your computer. BIRME is absolutely free to use. It works on both Mac and Windows machines.
      https://www.birme.net/?target_width=512&target_height=512

      아래 사진과 같이 Width, Height를 512, 512로 맞춥니다.

      각 사진의 선명한 부분은 남길 부분, 하얗게 블러 처리된 부분은 정사각형 이미지를 만들기 위해 잘라낼 부분입니다. 적절히 선명한 부분을 움직여 요정이가 잘 나오도록 조정합니다.

      그리고 우측 메뉴에서 SAVE AS ZIP 을 눌러 전처리된 이미지를 다운로드 받습니다.

      위와 같이 zip 파일이 다운로드 되고 이를 압축해제합니다.

      압축 해제한 위 이미지들을 학습3. Caption 에 사용합니다.

    1. Caption(이미지에 대한 설명) 준비
      💡
      요정이라는 고양이를 학습시키기 때문에 Caption에 반드시 “Instance word”, yojeong (=object) 이라는 단어가 중복돼야합니다. (e.g. a yojeong sitting on the ground)

      이미지의 캡셔닝을 도와주는 고마운 툴이 있습니다. 아래 링크에 접속하여 이를 활용합니다.

      Comparing Captioning Models - a Hugging Face Space by nielsr
      Discover amazing ML apps made by the community
      https://huggingface.co/spaces/nielsr/comparing-captioning-models

      각 이미지를 아래에 드래그 앤 드롭합니다. 그리고 Submit 을 클릭합니다.

      그러면 아래와 같이 오른쪽에 Caption이 생성됩니다.

      저는 여기서 a cat laying on the ground next to a metal pole 이 가장 디테일 하여 이를 사용하도록 하겠습니다.

      여기서 cat 앞에 yojeong 을 추가하겠습니다.

      해당 text를 아래와 같이 이미지의 이름과 같은 .txt 파일을 생성하여 저장합니다.

      위와 같이 파일명을 동일하게 맞춥니다. 다른 파일에 대해서도 똑같이 적용해줍니다.

      최종 caption의 예시는 아래와 같습니다.

      캡션
      a yojeong cat laying on the ground next to a metal pole
      a yojeong cat laying under a car
      a yojeong cat is standing on a stone
      a yojeong cat is sitting on a concrete block
      a yojeong cat sitting on a concrete road.
      💡
      반드시! <Instance Token><Class Token>이 들어가야합니다.

    3. 학습 파라미터 셋팅

    단계과정
    1.DreamBooth Extension 설치
    2.학습할 DreamBooth model 생성
    3.파라미터 설정

    1. DreamBooth Extension 설치

      Pass

    1. 학습할 DreamBooth model 생성
      1. 상단 Tabs 에서 Dreambooth를 클릭합니다.
      1. Name을 설정합니다. 본인이 하고싶은 이름을 정합면 됩니다.
      1. 512x Model을 선택합니다. (SD v1.5를 사용하기 때문)
      1. 앞서 설치한 모델, DreamShaper를 선택합니다. (확장자명은 safetensors, ckpt 상관없습니다.)
      1. Create Model 버튼을 눌러 모델을 생성합니다.

      우측 Output tab에 아래와 같이 출력되면 모델이 잘 생성된 것입니다.

    1. 파라미터 설정
      1. 먼저 앞서 생성한 Dreambooth 모델을 선택합니다.
      1. 가운데 Input tab 에서 Settings를 선택하고 기본 셋팅을 자동으로 맞춰주는 Performance Wizard (WIP)를 클릭합니다.
      1. Settings tab 셋팅 값
        General

        LoRA를 사용할 것이 아니기 때문에 아무것도 선택하지 않습니다.

        Intervals
        파라미터설명
        Training Steps Per Images (Epochs)100몇 Epochs 학습 시킬지?
        Pause After N Epochs0몇 Epoch 학습 이후에 일시 중지할지? (정지하지 않기에 0)
        Amount of time to pause between epochs0각 epoch 마다 쉬는 시간 (안쉬기 때문에 0)
        Save Model Frequency (Epochs)5몇 epoch 마다 모델을 저장할지?
        Save Previews Frequency (Epochs)5몇 epoch 마다 preview(학습 중 생성하는 이미지 결과)를 저장할지
        Batching, Learning Rate, Image Processing

        기본 셋팅 그대로

        Advanced

        아래 파란 박스 안에 있는 부분을 변경하는 것 외에 모두 기본 값 사용

        Memory Attentiondefault
        Step Ratio of Text Encoder Training0
        Scale Prior Losscheck & 0.75
      1. Concepts 셋팅 값
        Directories
        파라미터설명
        Dataset Directory데이터셋의 폴더 경로앞서 생성한 요정 데이터셋의 경로를 주면 된다.
        Classification Dataset DirectoryClass 이미지가 저장될 경로 비워놔도 괜찮다.
        Filewords
        파라미터설명
        Instance Tokenyojeong 이라는 단어를 고양이 요정이와 매칭시켰었다. 그 yojeong 이라는 단어yojeong
        Class Token요정이는 cat 이다. 모델을 이미 이를 알고 있다. 모델이 이미 알고 있는 catyojeong 을 구분하기 위해 학습시 사용하는 이미지를 생성하기 위해 사용하는 단어cat

        A yojeong cat sitting on the ground 라는 prompt 로 요정이를 학습한다고 했을 때 Class Token이 cat 이라면 A cat sitting on the ground 라는 prompt로 class 이미지를 생성한다.

        Prompts
        파라미터설명
        Instance Prompt학습 데이터를 표현하는 prompt. 여기선 직접 생성한 prompt를 사용하기 때문에 [filewords] 를 사용한다.[filewords]
        Class Promptclass image(yojeong은 cat 이기 때문에 cat 이미지)를 표현하는 prompt. 자동으로 Instance Prompt에서 앞서 정의한 Instance Token, yojeong을 뺀 prompt를 사용하기 때문에 [filewords] 로 둔다.[filewords]
        Sample Image Prompt학습 중간 중간 이미지 생성을 얼마나 잘하는지 파악하기 위해 사용하는 promptA yojeong cat wearing hat, by Tomer Hanuka
        Classifiction Image Negative Promptclass image를 사용하는데 사용하는 negative promptlow quality, worst quality
        Sample Prompt Template File--
        Sample Negative Prompt--
        Image Generation
        파라미터설명
        Class Images Per Instance Image각 instance image 별 생성한 class image의 수4 (Class Batch Size의 배수)
        Classification CFG Scaleclass 이미지를 생성할 때 얼마나 프롬프트를 강하게 따라갈지에 대한 값7.5 (default)
        Classification Steps얼마나 많은 Step으로 이미지를 생성할지40 (default)
        Number of Samples to Generate학습 중 얼마나 많은 샘플 이미지를 생성할지4 (크게 상관 X)
        Sample Seed--1
        Sample CFG Sclae-7.5 (default)
        Sample Steps-20

    4. 학습

    Train 버튼 클릭.

    우측 Output tab을 보면 중간중간 모델이 생성하는 이미지들을 확인할 수 있다.


    Uploaded by N2T

    반응형

    'StableDiffusion' 카테고리의 다른 글

    Stable Diffusion 드림부스 학습 튜토리얼  (0) 2023.03.23
Designed by Tistory.