5. AI/>> 딥러닝

말하는대로 그림 그려주는 AI 앱을 내 손으로 직접 만들기

블록메타 2023. 1. 6. 15:41

빵형의 개발도상국

 

코랩에서 작업하도록 하겠습니다.  구글 아이디만 있다면 코딩 초보도 바로 따라 할 수 있습니다. 

keras_cv를 이용합니다. 

 

keras_cv가 이미지 어그멘테이션, 이미지를 증강시킬때 컴퓨터 비전을 사용하는 레이어들 컨버션 블록들 매트릭 로스들 이런 것들을 다 내용하고 있어서 편리하게 이용할 수 있습니다. 

 

 

자, 진행하겠습니다. 

 

코랩에서 실행할 때는 마우스 플레이 버튼을 클릭하시거나  Shift + Enter 를 입력하시면 됩니다.  

 

런타임 유형변경에서 하드웨어 가속기를 GPU로 선택하세요.

!nvidia-smi를 실행하면 우리가 어떤 gpu를 할당 받았는지 볼 수 있어요

코랩에는 케라스는 설치되어 있지만 케라스 cv는 설치 되어 있지 않아서 설치해 주어야 됩니다. 

!pip install --upgrade keras-cv 입력 후 실행해 주세요. 

우리가 사용할 패키지 케라스cv, 케라스, 그림을 보여주기 위한 맷플롯립 3가지를 이용해서 만들어 보도록 하겠습니다.  

우리가 사용할 첫 번째 코드는 스테이블 디퓨저 모델을 로드 하는 거에요.  그리고 내가 생성할 이미지 가로사이즈 , 세로사이즈를 2개를 파라미터로 지정해 줍니다.  1080 x 1920 이미지를 생성하도록 하겠습니다.  그러면 캐라스cv가 오픈 ai랑  허깅페이스에서 스테이블 디퓨저 클립 이런 모델들을 다 다운로드 받을 거에요. 3~5분정도 걸리는데 잠시 기다리시면 됩니다. 

모델은 한번 로드한걸 계속 사용하니 이 과정은 딱 한번만 실행됩니다. 

 

이제 이미지를 plot 이미지로 보여주는 부분입니다.  그래서 plot_images를 호출하고 이미지를 넣어주면 알아서 이미지를 보여 주는 겁니다. 

모델이 생성하고 난 후 text_to_image 메소드로 2가지 파라미터를 넣어줍니다.  첫번째 어떤 그림을 생성할건지 텍스트로 설명, 몇개를 생성할 것인지 넣어 주면 됩니다.   우주인이 말을 타고 있는 사진을 요청해 봅시다.  요청한 다음 plot_images를 호출하여 화면에 그려봅시다.  한 1분 정도 걸리네요 

 

images = model.text_to_image("photograph of an astronaut riding a horse", batch_size=3)
plot_images(images)

코랩 Tesla T4 기준으로 cold start (처음실행시) 83초 정도 걸리고 Warm Start에는 30초정도 걸리네요. 

 

굉장히 깔끔하게 나왔네요. 

여기는 영어로 입력을 해야 됩니다.   그래서 번역기를 넣어서  한글을 입력하면 영어로 번역해서 그 영어를 스테이블 디퓨전에 넣는 부분으로 바꾸어 보겠습니다.  코랩에서도 간단하게 만들 수 있습니다. 

 

한글 -> 영어번역

 

translate 패키지를 설치합니다. 

Translator를 사용하기 위해서 imfort 해주고  from_lang를 "ko", to_lang="en" 으로 설정해 줍니다.  한글을 영어로 바꾸어서 translation 저장이 됩니다. 

Peng Kwon kiessea a bear로 결과가 나왔네요. 

 

generate_images  함수를 하나 만들었어요. 한글로 입력하면 바로 이미지가 나올 수 있도록 만들었습니다.  이제부터는 generate_images 함수만 호출하면 됩니다. 

이렇게 나왔네요.  조금 어려웠나 보네요. 

 

지금까지 한 부분을 웹앱으로 만들어 보겠습니다. 

gradio 를 코랩에서 사용하기 위해서는 인스톨을 해야 됩니다. 

gradio를 gr로 임포트 해 주고 인퍼런스라는 함수에 text를 넣으면 이미지를 리턴하는 그런 함수입니다.  이미지는 1개만 생성하겠다. gradio 인터페이스를 만들어서 인퍼런스라는 함수를 실행, inputs은 text이고 outputs는 이미지를 돌려주는 그런 간단한 구조로 되어 있어요  이렇게 하고 demo를 런치 시키면 굉장히 쉽게 앱을 만들 수가 있어요. 

실행시키면 코랩에서도 이런 화면을 볼 수가 있고, 여기 주소에서 스마트폰으로 접속하시면 핸드폰으로도 보고 실험을 하실수가 있어요 

주의할 점은 gradio로 앱을 만들게 되면 72시간 지속이 된다는거 72시간 이후에는 도메인이 만료가 됩니다. 

 

이세계의 소녀가 사과를 먹는 일러스트로 검색해 보았어요.

오늘은 여기까지 진행하겠습니다. 감사합니다. 

 

Reference

https://www.youtube.com/watch?v=JTw4WNC1Dy4&t=4s
https://colab.research.google.com/drive/18_YS3Cf479zGC_W_rgdP7PPce30ht7aV?hl=ko#scrollTo=dhTALhsJwo3F