본문 바로가기
데이터&AI/LLM

AI모델(GPT4)로 그림 및 사진 읽기 with python

by 일등박사 2024. 3. 26.
728x90

오늘은 GPT로 그림및 사진읽기!!

에 대하여 알아보겠습니다!!

 

사용할 모델은 openai의 GPT 모델인

gpt-4-vision-preview

입니다!!

 

1. URL 기반으로 그림 읽기!!! 

target url을 설정하고 해당 이미지를 읽어와서 해석하게합니다!!

아래 URL의 이미지를 읽어보게하겠습니다

https://mblogthumb-phinf.pstatic.net/20110105_214/dapapr_1294200472447D2cs9_JPEG/noname08.jpg?type=w420

import openai
openai.api_key = '{내 openai key}'
my_image_url = 'https://mblogthumb-phinf.pstatic.net/20110105_214/dapapr_1294200472447D2cs9_JPEG/noname08.jpg?type=w420'
my_prompt = '이미지가 어떤 내용인지 해석해줘'
client = openai.OpenAI()

response = client.chat.completions.create(
  model="gpt-4-vision-preview",
  messages=[
    {
      "role": "user",
      "content": [
        {"type": "text", "text": my_prompt},
        {
          "type": "image_url",
          "image_url": {
            "url": my_image_url,
          },
        },
      ],
    }
  ],
  max_tokens=300,
)

print(response.choices[0].message.content)

 

그 결과는!? 아래와 같았습니다!!^^

이 사진은 편대를 이룬 여러 대의 전투기가 비행하는 모습을 포착한 것으로 보입니다. 
흑백 사진으로 판단해볼 때 과거의 군사 역사에서 중요한 시점을 나타내는 것 같습니다.
사진에 있는 전투기들은 2차 세계 대전 당시 사용되었던 것으로 보이는데, 
이는 전투기의 디자인과 마킹으로 추측할 수 있습니다. 
기체에 적힌 알파벳과 숫자 조합은 특정 부대와 항공기의 식별 번호를 나타낼 수 있습니다.
이러한 사진은 당시 전쟁의 공중전과 항공 기술, 그리고 군사 작전을 기록한 역사적 자료로 중요한 가치가 있을 수 있습니다.

 

2. 내 컴퓨터의 이미지 기반으로 그림 읽기!!! 

내 디렉토리 내의 이미지를 읽고싶자면!?

아래 패키지의 역할이 추가로 필요합니다! base64는 이미지를 encode하여 코드로 바꿔주는역할을 하지요~~

import base64

위 이미지를 jinshi.jpg로 저장하고 읽어보겠습니다~!

import base64
import requests
import openai

openai.api_key = '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'
image_path = 'jinshi.jpg'
my_prompt = '이미지가 어떤 내용인지 해석해줘'
client = openai.OpenAI()


    
# 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')

# Getting the base64 string
base64_images = [encode_image(image_path)]
# OpenAI에 요청 보내기
messages = [
    {
        "role": "user",
        "content": [
            {"type": "text", "text": my_prompt}
        ] + [{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}} for base64_image in base64_images]
    }
]

response = client.chat.completions.create(
    model="gpt-4-vision-preview",
    messages=messages,
    max_tokens=1000
)


print(response.choices[0].message.content)

 

그 결과!!! 아래와 같이 이미지를 잘 읽어오네요~!^^

제시된 이미지는 중국 시안에 위치한 유명한 병마용(兵馬俑)의 모습입니다. 
이 병마용은 중국 첫 번째 황제인 진시황의 무덤을 지키기 위해 만들어졌으며, 
대규모의 테라코타(점토로 만든) 병사, 말, 전차 등으로 구성된 병사들이 정렬해 있는 모습을 볼 수 있습니다. 
이 유적은 1974년에 농민들에 의해 우연히 발견된 이후로 중국 고대사의 중요한 증거이자 세계 유산으로 평가받고 있습니다.

 

 

ㅁ 참고 : https://platform.openai.com/docs/guides/vision

728x90

댓글