1. chatGPT-4를 이용한 이미지 해석
이미지를 이해하고 설명할 수 있는 기능
1.1 개요
지금까지 언어 모델 시스템은 단일 입력 양식인 텍스트로만 입력할 수 있다는 한계
이미지 해석 모델 : 비전 기능이 있는 GPT-4에서 지원(GPT-4V, gpt-4-vision-preview)
비전 기능이 있는 GPT-4
이미지 입력을 지원하도록 업데이트된 gpt-4-vision-preview 모델 + Chat completion API를 통해 사용가능
특징
- 이 모델은 이미지에 무엇이 있는지에 대한 일반적인 질문에 가장 잘 응답함
- 이미지 속 사물 간의 관계는 이해
- 이미지 속 특정 사물의 위치, 세부적인 질문에는 부족
- 시각적 이해를 적용할 때 모델의 한계를 염두에 둘 것
1.2 이미지 해석 사용해 보기
GPT-4 Turbo with Vision 모델에 이미지를 전달하는 방법 2가지
- 이미지에 대한 링크를 전달
- Request에 Base64로 인코딩된 이미지를 직접 전달
1.2.1 이미지 url로 전달
실제 url 이미지
from openai import OpenAI
client = OpenAI()
#URL을 이용하여 이미지 전달 하기
response = client.chat.completions.create(
model="gpt-4-vision-preview",
messages=[
{
"role": "user",
"content": [
#{"type": "text", "text": "What’s in this image?"},
{"type": "text", "text": "이 그림을 한글로 설명해줘"},
{
"type": "image_url",
"image_url": {
},
},
],
}
],
max_tokens=300,
)
print(response.choices[0])
'''
이 그림은 아름다운 자연 풍경을 보여주고 있습니다. 앞쪽에는 녹색의 풀로 뒤덮인 넓은 초원이 있으며,
그 가운데로 나무로 만들어진 좁은 데크 길이 뻗어 있습니다. 데크는 매우 직선적으로 놓여 있어서 멀리까지 뻗어 있는 것처럼 보입니다.
초원은 여러 가지 녹색 톤으로 이루어져 있고 더 멀리에는 덤불과 나무들이 자리 잡고 있습니다.
하늘은 구름이 약간 떠 있는 맑은 날을 나타내며, 아주 푸른 색을 띄고 있어 전체적인 풍경에 환한 느낌을 주고 있습니다.
이 곳은 자연이 잘 보존된 들판 또는 습지와 같은 곳으로 보입니다. 매우 평화롭고 아름다운 자연의 한 모습을 보여주는
'''
1.2.2 이미지 파일을 업로드
업로드 이미지
#파일을 직접 업로드 하기
import base64
import requests
import os
# OpenAI API Key
#api_key = 자신이 사용하는 key
api_key = os.environ.get('OPENAI_API_KEY')
print(api_key)
# Function to encode the image
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
# Path to your image
image_path = "dog.png"
# Getting the base64 string
base64_image = encode_image(image_path)
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
#"text": "What’s in this image?"
"text": "이 그림을 한글로 설명해줘"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}"
}
}
]
}
],
"max_tokens": 300
}
response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)
print(response.json())
'''
'이 그림은 파란색 개와 주황색 고양이가 있는 애니메이션 스타일의 이미지입니다.
개는 크고 푸른색 털을 가지고 있으며, 목에는 주황색 목걸이와 하트 모양의 꼬리표가 달려 있습니다.
개는 입을 크게 벌리고 혀를 내밀며, 매우 행복하고 즐거워 보이는 표정을 하고 있습니다.
반면에 고양이는 작고 주황색 줄무늬 털을 가지고 있으며, 파란색 목걸이를 하고 있습니다.
두 동물 모두 매우 기뻐하며 뛰어노는 모습을 하고 있으며, 배경은 흰색으로 표현되어 있어서 두 캐릭터가 더욱 돋보입니다.
'''
OpenAI Image API를 이용한 이미지 생성,수정,변형 참고
https://yongeekd01.tistory.com/144
https://yongeekd01.tistory.com/145
참고 :
https://platform.openai.com/docs/guides/vision
'IT > 개발' 카테고리의 다른 글
파이썬으로 날자별로 생성되는 로그 파일 만들기(logging 모듈) (0) | 2024.03.14 |
---|---|
파이썬에서 ffmpeg 사용하기(ffmpeg-python, 각종 예제) (0) | 2024.02.21 |
DALLI-E 모델을 이용한 이미지 수정 및 유사이미지 만들기(chatGPT, OpenAI API) (0) | 2023.11.28 |
chatGPT, OpenAI API, DALLI-E 모델을 이용한 이미지 생성 기초 (0) | 2023.11.28 |
OpenAI Audio API를 이용한 STT 구현 기초(whisper-1, transcription, English translation) (0) | 2023.11.28 |