Karlo
졸업작품을 진행하며 웹페이지를 만들떄 카카오 맵 API를 사용하였고 카카오가 맵 뿐만 아니라 다른 API들도 많이 제공한다는 것을 알게 되어 한번 사용해보게 됐다.
Karlo
Karlo는 카카오에서 제공하는 여러 API중 하나로 이미지 생성 AI다.
사용자에게 문장이나 이미지를 입력받아 이를 기반으로 새로운 이미지를 만드는 기능을 제공한다.
kakao developers에서 활용 가이드와 사용 방법을 알려주기 때문에 아주 쉽게 접근할 수 있다. 퀄리티도 나쁘지 않다.
제공 기능
Karlo가 제공하는 기능은 이미지 생성, 확대, 변환, NSFW 검사가 있다. 생성, 확대, 변환은 알겠는데 NSFW가 뭔지 보니 Not Safe For Work 로 폭력적이거나 선정적인 콘텐츠인지 이미지를 검사하는 기능이었다. 다른 기능들 보단 이미지 생성이 흥미로워 보여 예시 코드를 사용해 이미지를 생성해 보았다.
실행 환경
- jupyter notebook
- python 3.11.4
API키 발급
- kakao developers에서 카카오톡 아이디로 로그인
- 상단바의 내 애플리케이션 클릭
- 애플리케이션 추가클릭
- 앱 이름과 사업자명 작성(맘대로)
- 생성된 애플리케이션을 클릭
- 생성된 REST API키 확인

라이브러리 설치
- 파이썬 이미지 처리 라이브러리 - pillow(PIL)
!pip install pillow
- 파이썬 HTTP 클라이언트 라이브러리 - reqeusts
!pip install requests
- 파이썬 JSON 라이브러리 - json
!pip install json
전체코드
# REST API 호출, 이미지 파일 처리에 필요한 라이브러리
import requests
import json
import urllib
from PIL import Image
# [내 애플리케이션] > [앱 키] 에서 확인한 REST API 키 값 입력
REST_API_KEY = 'API키'
# 이미지 생성하기 요청
def t2i(prompt):
r = requests.post(
'https://api.kakaobrain.com/v2/inference/karlo/t2i',
json = {
'prompt': prompt,
'image_quality':100,
'upscale':True
},
headers = {
'Authorization': f'KakaoAK {REST_API_KEY}',
'Content-Type': 'application/json'
}
)
# 응답 JSON 형식으로 변환
response = json.loads(r.content)
return response
# 프롬프트에 사용할 제시어
prompt = '제시어'
# 이미지 생성하기 REST API 호출
response = t2i(prompt)
# 응답의 첫 번째 이미지 생성 결과 출력하기
result = Image.open(urllib.request.urlopen(response.get("images")[0].get("image")))
result.show()
실행하기 위해
REST_API_KEY = 'API키'
부분에 발급받은 API키를 입력하고
prompt = '제시어'
부분에 영어로 문장으로 장면을 묘사 또는 단어들을 나열해도 된다.
선택사항
원하는 이미지에 더 가깝게 생성하기 위해 조건을 추가할 수 있다.
json = {
'prompt': prompt,
'image_quality':100,
'upscale':True
},
부분에
'negative_prompt': 'rainy'
'samples': 8
등을 추가하여 제외 사항을 넣는다던가 이미지를 한 번에 8개까지 생성할 수 있다.
추가적인 기능은 docs에서 확인할 수 있다.
이미지 저장
생성된 이미지를 저장하고 싶다면
result.save('test.jpg',"JPEG")
코드를 추가하여 파이썬 파일이 실행되고 있는 경로에 저장할 수 있다.
댓글남기기