외부 API 사용

Ai 모델 Dall-e 사용해보기 (with API)

kidmillionaire1998 2022. 8. 26. 22:13

Open Ai에서 텍스트를 이미지로 변환해주는 AI 모델을 제공한 바가 있다.
https://www.craiyon.com/ 링크는 Dall-e mini이고 아래 그림 처럼 텍스트를 영어로 입력하면 관련된 이미지를 생성하는데, 대기시간이 약 2분 가량 걸린다.

2분이 지나면,

위와 같이 성능이 매우 괜찮은 이쁜 이미지가 생성된다. 저번에 진행했던 내 팀프로젝트에서도 해당 모델을 사용할 수 있는 API를 이용하려 했으나... Open AI에서는 관련 API를 제공하지 않는다고 해서 눈물을 머금고 구글링을 해서 다른 비슷한 성능의 모델을 사용해볼 수 있을까 찾아봤다. 결국 사용 가능한 API가 있긴 했다.
Phil Wang 님이 공개한 DALL-E의 pytorch 버전이다.
데모 사이트

 

Streamlit

main-dalle-client-scy6500.endpoint.ainize.ai

API관련 문서

 

scy6500/DALLE-server

Instantly run or deploy any open source projects for free.

ainize.ai

데모사이트에서 직접 성능을 시험해봤는데,

약간 난해..하다

성능이 그리 좋아보이진 않았다. 하지만 프로젝트에서 관련 모델을 쓸 수 밖에 없어서 성능이 아쉽지만 일단 프로젝트에 구현해보려고 노력했다.
API 관련 사이트에 가면 사용법이 나와있다.

대략적인 원리는 내가 생성하고 싶은 이미지의 단어와 생성하고 싶은 이미지의 개수를 파라미터로 넘겨주면 이미지를 생성해 Base64코드로 응답을 받는다.
요청코드 예시는 다음과 같다.

Post방식으로 이루어지며, 다음과 같은 base64코드를 전송 받는다. 나는 프로젝트에서 HTTP통신방식을 Axios로 구현했기 떄문에 위에 있는 curl 코드를 axios로 변환할 필요가 있었다.
https://curlconverter.com/node-axios 해당 사이트에서 curl 코드를 입력하면 다양한 언어 및 방식의 HTTP 통신 명령어로 바꿔준다.

 

Convert curl commands to code

GitHub is matching all contributions to this project on GitHub Sponsors. Contribute Now

curlconverter.com

curl 명령어를 직접 복사 붙여넣기 해도 된다. 하지만 첫째줄 generate 뒤와 둘째줄 POST 뒤에는 직접 \를 입력해주자. (그냥 복붙하면 \와 ₩변환이 제대로 입력이 안되는 것 같다. 직접 \을 입력하면 ₩로 바뀐다.)

변환된 axios코드를 그대로 사용하되, text 인자에 넣고 싶은 문자를, num_images에 생성하고 싶은 이미지 숫자를 자유롭게 입력을 한 뒤 실행을 해주면 다음과 같은 매우 긴 Base64 코드를 리턴 받을 수 있다.

이 Base64를 이용해서 이미지로 변환해서 나타내면

 

나오긴 나왔다

다음과 같이 나온다.
이미지 - Base 64 인코딩/ 디코딩 하는 방식에 관한 내용은 다음 블로그를 참고하길 바란다.
https://studyingpingu.tistory.com/36

 

[javascript] 이미지 base64 인코딩하는법, 인코딩된 이미지 보여주는법

클라이언트에서 서버로 이미지를 보낼때 방법이 몇가지 있는데 그중 base64로 인코딩하여 이미지를 보내는 방법을 사용해본 내용이다 ※ base64란? 8비트 이진 데이터(예를 들어 실행 파일이나, ZI

studyingpingu.tistory.com



참고 자료: https://medium.com/ai-networkkr/ai-%EB%AA%A8%EB%8D%B8-%ED%83%90%ED%97%98%EA%B8%B0-18-%EA%B7%B8%EB%A6%BC-%EA%B7%B8%EB%A6%AC%EB%8A%94-ai-dall-e-d982209ba995

 

[AI 모델 탐험기] #18 그림 그리는 AI, DALL-E

[편집자주] 본 글은 커먼컴퓨터에서 Developer Relations Engineer를 맡고 있는 성창엽님이 오픈소스 AI모델을 정리하고 인사이트를 공유하는 글로 시리즈로 기획돼 발행되고 있습니다. 열여덟 번째 글

medium.com