본문 바로가기

IT/개발

chatGPT-4를 이용한 이미지 해석(Image Description, gpt-4-vision)

반응형

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 이미지

https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg

 

 

 

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": {

            "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",

          },

        },

      ],

    }

  ],

  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

 

chatGPT, OpenAI API, DALLI-E 모델을 이용한 이미지 생성 기초

1.1 Image Models 1.1.1 DALL-E 모델 설명 DALL-E는 자연어로 된 설명을 바탕으로 사실적인 이미지와 예술 작품을 만들 수 있는 인공지능 시스템 - dall-e-3 DALL-E : 3 2023년 11월에 출시된 최신 DALL-E 모델 - DALL-E

yongeekd01.tistory.com

 

https://yongeekd01.tistory.com/145

 

DALLI-E 모델을 이용한 이미지 수정 및 유사이미지 만들기(chatGPT, OpenAI API)

DALLI-E 모델 설명 참조 https://yongeekd01.tistory.com/144 chatGPT, OpenAI API, DALLI-E 모델을 이용한 이미지 생성 기초 1.1 Image Models 1.1.1 DALL-E 모델 설명 DALL-E는 자연어로 된 설명을 바탕으로 사실적인 이미지와

yongeekd01.tistory.com

 

참고 :

https://platform.openai.com/docs/guides/vision

 

 

반응형