본문 바로가기

AI & Big Data/Image

[AI Image] 메타코드M '생성형 AI 입문 완성강의ㅣ스테이블 디퓨전 프로젝트 실습 + 프롬프트 엔지니어링 Skills' 강의 후기 #3 - 생성AI 실습 (Dreambooth, Google Colab 실습)

728x90
반응형

  이번 메타코드M '생성형 AI 입문 완성강의ㅣ스테이블 디퓨전 프로젝트 실습 + 프롬프트 엔지니어링 Skills' 강의에서는 지난 시간에 배운 이론을 바탕으로 본격적으로 실습을 하는 시간을 갖는다. 이 과정에서 Dreambooth와 Lora 등을 사용해 모델을 만든다. 자기만의 모델을 만들어 이미지를 보다 쉽고 편리하게 생성할 수 있다고 생각하면 된다. 

※ 이전글1: 2024.03.11 - [AI & Big Data/Image] - [AI Image] 메타코드M '생성형 AI 입문 완성강의ㅣ스테이블 디퓨전 프로젝트 실습 + 프롬프트 엔지니어링 Skills' 강의 후기 #2 - 스테이블 디퓨전 이론 및 기능 (text to image, image to image, inpaint)

 

메타코드M

빅데이터 , AI 강의 플랫폼 & IT 현직자 모임 플랫폼ㅣ메타코드 커뮤니티 일원이 되시기 바랍니다.

mcode.co.kr

 

Index

    3강. 생성AI 실습

    Dreambooth를 사용한 모델 생성

      모델을 만든다는 것은 기존에 AI가 가지고 있던 학습 내용에 더해 자신이 원하는 객체, 그림을 만들어 내는 것을 뜻한다. 모델을 직접 만들어두면 추후 새로운 이미지를 학습하여 모델이 가진 스타일에 신규 이미지가 들어간 기존에 없었던 이미지를 생성할 수 있다. 예를 들자면, 스노우 AI처럼 원하는 스타일, 배경으로 내 이미지가 추가된 새로운 이미지를 얻을 수 있는 것을 들 수 있겠다.

    Dreambooth 설치

      가장 먼저 Dreambooth를 설치해야 한다. 2가지 방법이 있는데 우선, [Extentions] - [Available]에서 Load From 버튼을 클릭해 Dreambooth를 다운받는 방법이 있다. 다른 방법은 [Install from URL]에 깃허브 주소 (링크)를 넣은 뒤, Install 버튼을 눌러주는 것이다. 

    Model 설정

       Dreambooth 설치가 완료됐다면, 해당 탭에서 모델 생성을 위해 이것저것 설정해줘야 한다. 모델의 이름을 적고 소소 체크포인트 파일 등을 고르면 된다. Source Checkpoint는 학습시키고자 하는 이미지와 비슷한 특성을 가진 것으로 선택하는 것이 좋다. 

      Extract EMA Weights를 체크하면 인퍼런스를 잘 수행하지 못할 수 있으므로 체크 해제를 권장한다고 한다. 다 정했으면 Create Model 버튼을 클릭한다.

    Input 설정 1

       다음으로 화면의 중앙에 있는 Input을 조작해야 한다. Training Steps Per Image에서 에폭 (Epochs)을 과도하게 높이면, 모델이 기존에 학습한 내용을 반영하지 못할 수 있다 (오버피팅). 그래서 기본값인 100이 적당하나 학습시키려는 이미지 수가 증가한다면 에폭을 올려야 한다. 100장 정도 학습한다면, 150 정도로 조정할 수 있겠다. 

       Save Model Frequency는 얼마의 빈도로 모델을 저장할 것인지 묻는 것이다. 위 이미지에서는 25장 단위로 저장한다고 지정했다. 

    Input 설정 2

      밑으로 내려가면 해상도 등을 설정할 수 있다. 해상도는 512를 유지하는 것이 좋다고 한다. 만일 컴퓨터 사양이 지원하지 않는다면 Google Colab에서 테스트하면 될 것이다. 

      Mixed Precision은 3가지 옵션이 있는데 본 강의에서는 fp16을 선택했다. bf16이 가장 성능이 뛰어나지만 그만큼 요구하는 자원도 많기에 현실과 타협한 것으로 보인다.

    Input 설정 3

      Settings 탭에서의 설정을 끝냈다면 Concepts로 넘어가자. Trainig Wizard (Object / Style)를 선택한다. Dataset Directory에 학습할 이미지가 들어간 폴더의 경로를 입력한다. 학습할 이미지는 다양한 관점에서 다채로운 자세로 찍힌 것이 좋다. 배경으로 소파, 꽃, 나무 등 잡다한 것이 들어가면 학습에 방해가 될 수 있다. 사진크기는 전처리되어 들어가므로 신경쓰지 않아도 된다고 한다. 최대 4개까지 콘셉트를 정할 수 있다. 

     

    Input 설정 4

      Filewords에서는 Instance와 Class Token을 구별하여 넣어주는 것이 중요하다. 전자는 세부 카테고리, 후자는 상위 카테고리로 이해하면 된다. Training Prompts에도 동일하게 입력하고, Negative Prompt도 필요에 따라 지정한다. 

    Input 설정 5

      마지막으로 Saving 탭에서 모델의 이름을 정하고 위쪽에서 Train 버튼을 눌러 학습을 시작하면 된다. 강의에서는 약 20분 정도 소요되었다.

      이것으로 모델을 만드는 과정은 마무리됐다. 정상적으로 모델이 만들어졌다면 화면 좌측 상단 (txt2img 위쪽)에서 모델을 선택하고 프롬프트를 입력해 이미지를 생성할 수 있다. 

    Dreambooth 이미지 생성 1
    Dreambooth 이미지 생성 2

      수업에서는 수영장에 있는 강아지, 고양이 등을 만들어내며 테스트했다. 프롬프트가 너무 길면 퀄리티가 떨어질 수 있기에 점진적으로 프롬프트를 늘려가면서 이미지를 만들어보는 것이 좋을 것 같다. 

    Dreambooth 실습 (Google Colab)

      위에서는 본인의 PC에 탑재된 Stable Diffusion을 사용했다. 지금부터는 저사양의 PC를 보유했거나 가볍게 실습해보고자 하는 사람을 위해 Google Colab으로 진행해보고자 한다. 메타코드 강의에서는 Dreambooth를 활용한 모델 생성은 Colab에서, 만들어진 모델로 이미지를 생성하는 것은 개인 PC에서 시행했다. Colab에서 이미지 생성까지 하기를 원한다면 Colab에서 WebUI를 실행했던 지난 글을 보고 따라하면 될 것이다.

    ※ 이전글2: 2024.02.29 - [AI & Big Data/Image] - [AI Image] 메타코드M '생성형 AI 입문 완성강의ㅣ스테이블 디퓨전 프로젝트 실습 + 프롬프트 엔지니어링 Skills' 강의 후기 #1 - 생성 AI 종류, Stable Diffusion 설치 및 실행

      먼저 pdf 교재에 있는 링크를 따라가 코드를 실행한다. 런타임 유형 변경에서 T4 GPU로 설정돼있는지 확인한다. 모델은 Realisticvision으로 선택한다. 

    Dreambooth Colab 1

      이어서 준비된 이미지가 있는 폴더의 경로를 입력한다. 이 때, 파일명을 일괄적으로 변경해 맞춰야 하는데 폴더에서 전체 선택 (Ctrl + A)을 하고 하나의 파일명을 바꿔주면 모두 바뀐다.

    Dreambooth Colab 2

      UNet_Training_Steps이미지 수 * 150의 값으로 넣어준다. start dreambooth까지의 코드가 정상적으로 실행되면 Fast-Dreambooth라는 폴더와 ckpt 파일이 만들어질 것이다 (1시간 가량 소요). 

    safetensor 변환

      ckpt로 이미지를 만들 때, no attribute 'pop'과 같은 에러 메시지가 뜨면 파일 형식을 safetensor로 바꿔야 한다. 다음 URL (링크) 로 이동해 DOWNLOAD 항목에서 ZIP파일을 내려받아 압축을 해제한다.그 다음, run_app_gui.exe를 실행해 ckpt를 변환한다. 만들어진 safetensor 파일을 [models] - [Stable-Diffusion]에 넣어주면 WebUI에서 이상없이 이미지를 만들 수 있을 것이다.


      지금까지 메타코드M '생성형 AI 입문 완성강의ㅣ스테이블 디퓨전 프로젝트 실습 + 프롬프트 엔지니어링 Skills' 강의 중 Dreambooth를 활용한 모델 생성을 학습하였다. 다음은 Lora를 사용한 모델 생성을 배울 것인데 아마 오늘 내용과 비슷하여 쉽게 이해할 수 있지 않을까 생각해본다. 

    728x90
    반응형