반응형
다른 사람들과 함께 음악을 만드는 플랫폼에 관한 프로젝트 진행 중 음악을 만드는 것에 그치지 않고 사용자를 위해 세상 단 하나뿐인 앨범커버를 만들주자라는 생각에서 Text To Image에 관한 내용을 다뤄보았다.
앨범커버 생성 아키텍처는 아래와 같다.
사용자가 자신이 만든 음악에 대한 제목, 내용, 장르를 입력하면 결과로 앨범커버가 생성된다.
먼저, KAKAO에서 제공하는 이미지생성 모델인 karlo를 이용하기 위해서는 아래와 같은 인풋이 필요하다.
이번 프로젝트에서는 사용자에게 한글로된 앨범 제목, 내용, 장르만을 인풋으로 받기 때문에 이를 이용해 앨범커버의 모양을 묘사하고 영어로 바꾸는 과정이 필요했고 이를 위해서 ChatGPT를 사용하기로했다.
ChatGPT를 통한 문장(단어) 생성
아래와 같이 ChatGPT를 사용하기 위한 기본 셋팅을 한다.API_KEY는 .env를 통해 따로 빼서 사용하였다.
import os
import openai
from dotenv import load_dotenv
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
model = "gpt-3.5-turbo"
그 후 아래와 같이 ChatGPT에 역할을 부여해주었다.
def create_text(query):
messages = [
{
"role": "system",
"content": "You are an assistant who is good at creating prompts for image creation."
}
]
messages.append(
{
"role": "user",
"content": create_text__query + query + ", concept art" + ", music" + ", album"
})
response = openai.ChatCompletion.create(
model=model,
messages=messages
)
return response['choices'][0]['message']['content']
create_text__query는 다음과 같다
create_text__query = "Tell me exactly the list of 6 English words centered on adjectives and nouns, don't respond other than the list of words. Based on the following sentence, imagine the appearance that will go into the album cover, and let me know the list of 6 English words separated by comma. "
아무래도 ChatGPT는 한국어보다 영어를 사용했을 때 더 좋은 결과를 보여줬고 내가 원하는 결과만을 얻기 위해서 "Tell me exactly the list of 6 English words"라는 문장을 넣거나 하는 과정을 거쳤다.
그 후 아래와 같이 title, content, tag를 넘겨주면
왼쪽에 보이는 것처럼 6개의 영어 문장을 생성해준다.
이미지생성
그 후 Karlo를 통해 이미지를 생성하면 오른쪽과 같은 사진을 얻을 수 있다.
반응형
'💻 > etc' 카테고리의 다른 글
zsh 깔려있지 않은 패키지 안내 메세지 command-no-found (0) | 2024.07.31 |
---|---|
윈도우환경 파이참에서 리눅스 터미널 사용하기 (0) | 2022.05.26 |
tmux 사용법 (0) | 2022.04.26 |
쥬피터랩 자동완성 (0) | 2022.04.15 |
코랩(colab)에서도 쥬피터처럼 독스트링 확인하는 법 (0) | 2022.02.02 |