GPT-4V(ision)를 이용한 이미지 기반 추론 - (Python)
이미지 기반 추론은 이미지 내의 객체나 요소들을 기반으로 논리적인 결론이나 추정을 도출하는 과정입니다. GPT-4V를 활용하면, 이미지 내의 정보를 분석하여 구체적인 추론을 수행할 수 있습니다.
#1. 필수 패키지 설치 및 준비
GPT-4V를 활용한 이미지 인식 프로젝트를 시작하기 전에, 필요한 Python 패키지들을 설치하고 준비하는 과정이 필요합니다.
1) 패키지 설치
먼저, 필요한 Python 라이브러리를 설치해야 합니다. 이를 위해 Python의 패키지 관리자인 pip를 사용합니다. 다음 명령어를 통해 필요한 패키지들을 설치할 수 있습니다.
pip install openai requests pillow matplotlib
이 명령어는 OpenAI의 API를 사용하기 위한 openai, 웹에서 이미지를 다운로드하기 위한 requests, 이미지 처리를 위한 Pillow (PIL의 업데이트된 버전), 그리고 이미지를 시각화하기 위한 matplotlib를 설치합니다.
2) 패키지 임포트
설치가 완료된 후, Python 스크립트나 Jupyter 노트북에서 다음과 같이 필요한 패키지들을 임포트 합니다.
import os import openai import requests from PIL import Image, ImageDraw import matplotlib.pyplot as plt import base64 import io
- os: 운영 체제와 상호 작용하기 위한 모듈입니다. 파일 경로를 관리하고 환경 변수를 읽는 데 사용됩니다.
- openai: OpenAI의 API를 사용하기 위한 모듈입니다. GPT-4V와의 통신을 위해 필요합니다.
- requests: HTTP 요청을 보내기 위한 모듈입니다. 웹에서 이미지를 다운로드하는 데 사용됩니다.
- PIL (Pillow): 이미지 처리를 위한 라이브러리입니다. 이미지를 열고, 수정하고, 저장하는 데 사용됩니다.
- matplotlib.pyplot: 데이터를 시각화하기 위한 모듈입니다. 이미지를 표시하고 분석 결과를 시각화하는 데 사용됩니다.
- base64: 이미지를 base64 인코딩 형식으로 변환하는 데 사용됩니다. 이는 이미지를 GPT-4V API에 전송하기 위해 필요합니다.
- io: 파일 입출력을 위한 모듈입니다. 이미지를 메모리에서 직접 읽고 쓰는 데 사용됩니다.
#2. OpenAI API 키 설정
GPT-4V를 사용하기 위해서는 OpenAI의 API 키를 설정하는 것이 필수적입니다.
1) OpenAI API Key 발급
OpenAI API 수행을 위해서는 먼저 API Key 발급이 필요합니다. OpenAI 계정이 필요하며 계정이 없다면 계정 생성이 필요합니다. 간단히 Google이나 Microsoft 계정을 연동할 수 있습니다. 이미 계정이 있다면 로그인 후 진행하시면 됩니다.

로그인이 되었다면 우측 상단 Personal -> [ View API Keys ]를 클릭합니다.

[ + Create new secret key ]를 클릭하여 API Key를 생성합니다. API key generated 창이 활성화되면 Key를 반드시 복사하여 두시기 바랍니다. 창을 닫으면 다시 확인할 수 없습니다. (만약 복사하지 못했다면 다시 Create new secret key 버튼을 눌러 생성하면 되니 걱정하지 않으셔도 됩니다.)
2) 환경 변수 설정
API 키를 직접 코드에 포함시키는 것은 보안상 좋지 않습니다. 대신, 운영 체제의 환경 변수에 API 키를 저장하고, 이를 코드에서 불러오는 방식을 권장합니다. 이를 위해 운영 체제의 환경 설정에서 OPENAI_API_KEY라는 이름으로 API 키를 저장합니다. 권장사항일 뿐 필수는 아닙니다
3) Open API 키 사용
Python 코드에서는 os 모듈을 사용하여 환경 변수에서 API 키를 불러옵니다. 다음과 같이 코드를 작성합니다. 환경변수에 저장하지 않았다면 openai.api_key 값에 직접 입력하셔도 됩니다.
openai.api_key = os.environ["OPENAI_API_KEY"] client = openai.OpenAI()
#3. Function Declaration
이미지 처리 및 GPT-4V 응답결과를 나타내기 위한 함수를 선언했는데 반복적인 내용을 줄이고 쉽게 사용하기 위한 목적입니다.
1) 이미지 로드 및 인코딩 함수 (load_and_encode_images)
이 함수는 이미지 소스(파일 경로 또는 URL)를 입력으로 받아, 해당 이미지를 PIL 이미지 객체로 변환하고, base64로 인코딩합니다. 이 과정은 GPT-4V에 이미지를 전송하기 위한 준비 단계입니다.
# 이미지를 base64로 인코딩하고 PIL 이미지 객체를 반환하는 함수 def load_and_encode_images(image_sources): encoded_images = [] pil_images = [] for source in image_sources: if source.startswith('http'): # URL인 경우 response = requests.get(source) image_data = response.content else: # 파일 경로인 경우 with open(source, "rb") as image_file: image_data = image_file.read() pil_images.append(Image.open(io.BytesIO(image_data))) encoded_images.append(base64.b64encode(image_data).decode('utf-8')) return encoded_images, pil_images
2) 응답결과 및 이미지를 출력하기 위한 함수 (display_response)
이 함수는 PIL 이미지 객체와 GPT-4V의 응답 텍스트를 입력으로 받아, 이미지를 시각화하고 응답을 출력합니다.
# 응답결과와 이미지를 출력하기 위한 함수 def display_response(pil_images, response_text): # 이미지 로딩 및 서브플롯 생성 fig, axes = plt.subplots(nrows=1, ncols=len(pil_images), figsize=(5 * len(pil_images), 5)) if len(pil_images) == 1: # 하나의 이미지인 경우 axes = [axes] # 이미지들 표시 for i, img in enumerate(pil_images): axes[i].imshow(img) axes[i].axis('off') # 축 정보 숨기기 axes[i].set_title(f'Image #{i+1}') # 전체 플롯 표시 plt.show() print(response_text)
3) 이미지 처리 및 GPT-4V 요청 함수 (process_and_display_images)
이 함수는 이미지 소스와 사용자의 프롬프트를 입력으로 받아, 이미지를 처리하고 GPT-4V에 요청을 보낸 후, 응답과 이미지를 표시합니다.
# 이미지 경로 또는 URL과 프롬프트를 처리하는 함수 def process_and_display_images(image_sources, prompt): # 이미지 로드, base64 인코딩 및 PIL 이미지 객체 생성 base64_images, pil_images = load_and_encode_images(image_sources) # OpenAI에 요청 보내기 messages = [ { "role": "user", "content": [ {"type": "text", "text": 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 ) response_text = response.choices[0].message.content # 응답과 이미지 표시 display_response(pil_images, response.choices[0].message.content) return response_text
#4. 이미지 기반 추론
1) 이미지 소스 설정
추론을 수행할 이미지의 소스를 설정합니다. 예를 들어, 다음과 같이 이미지 파일의 경로를 지정합니다.
image_paths = ["asset/images/test_11.png"]
2) 프롬프트 설정 및 추론 요청
GPT-4V에 전달할 프롬프트를 설정합니다. 이 프롬프트는 GPT-4V에게 이미지에서 자를 기반으로 펜의 크기를 추론하도록 요청합니다.
prompt = "이미지에서 자를 기반으로 펜의 크기를 추론하여 Cm로 알려줘"
3) 이미지 처리 및 GPT-4V 요청
process_and_display_images 함수를 사용하여 이미지를 처리하고 GPT-4V에 요청을 보냅니다. 이 함수는 이미지를 로드하고, 인코딩하며, GPT-4V에 요청을 보내고, 응답결과를 표시합니다.
response_text = process_and_display_images(image_paths, prompt)


실제 펜의 길이는 11Cm 입니다.
prompt = "이미지에서 자를 기반으로 장난감의 크기를 추론하여 Cm로 알려줘"

이미지 기반 추론은 이미지 내의 객체들 사이의 관계를 이해하고, 이를 바탕으로 유용한 정보를 도출하는 데 사용됩니다. GPT-4V를 이용한 이러한 추론 과정은 디자인, 건축, 공학 등 다양한 분야에서 중요한 응용을 찾을 수 있으며, 이미지 분석을 통한 정확한 정보 추출에 큰 장점을 제공합니다.
'Tech & Development > AI' 카테고리의 다른 글
Google Gemini API 사용하기 - Python (1) : 사전준비 (3) | 2023.12.15 |
---|---|
OpenAI Assistants API: 시작하기 (Python) (31) | 2023.12.07 |
GPT-4V(ision)를 이용한 얼굴 인식(Face Recognition) - (Python) (2) | 2023.11.27 |
GPT-4V(ision)를 이용한 OCR - (Python) (1) | 2023.11.26 |
GPT-4V(ision)를 이용한 객체 탐지(Object Detection) - (Python) (1) | 2023.11.26 |
댓글
이 글 공유하기
다른 글
-
Google Gemini API 사용하기 - Python (1) : 사전준비
Google Gemini API 사용하기 - Python (1) : 사전준비
2023.12.152023년 12월 6일, Google은 Gemini(제미나이)라는 Large Multimodal Model을 세상에 공개했습니다. 이 모델은 텍스트, 이미지, 오디오에 이르기까지 광범위하게 다양한 형태의 데이터 처리를 가능하게 합니다. 물론 발표 이후 시연 영상 편집 논란과 실제 사용자들 사이에서는 GPT-4와의 비교를 통해 기대에 못 미치는 것으로 평가되는 경우도 있었습니다. 구글의 제미나이(Gemini) 살펴보기: 우리 생활에 가져올 변화 구글이 현지시간 6일, GPT-4를 능가하는 새로운 AI 모델인 '제미나이(Gemini 또는 제미니)'를 발표했습니다. 이번 발표는 당초 내년 초로 예상되었던 출시 일정을 앞당겨 깜짝 발표를 했습니다. '제미 yunwoong.tistory.com 12월 13일 Go… -
OpenAI Assistants API: 시작하기 (Python)
OpenAI Assistants API: 시작하기 (Python)
2023.12.07OpenAI의 API를 활용하는 개발자 수가 200만 명을 넘어섰습니다. 이제 새로운 기술이 형성되고 활용되는 방식에 중대한 변화가 일어나고 있음이 분명해졌습니다. 지난 2023년 11월 6일에 있었던 OpenAI의 첫 개발자 컨퍼런스인 DevDay는 AI의 발전과 도구들에 대한 최신 정보를 소개하는 자리였습니다. 이 중에서도 특히 주목할 만한 것은 지능적이고 반응적인 AI 어시스턴트를 구축할 수 있는 OpenAI Assistants API였습니다. 이 API는 현재 AI 기술을 적용하고 이해하는 방식에 있어 중요한 역할을 하고 있으며, 개발자들에게 새로운 가능성을 열어주고 있습니다. 경험이 풍부한 개발자든, 이제 막 시작한 초보 개발자든, 오늘날의 기술 환경에서 OpenAI Assistants API를… -
GPT-4V(ision)를 이용한 얼굴 인식(Face Recognition) - (Python)
GPT-4V(ision)를 이용한 얼굴 인식(Face Recognition) - (Python)
2023.11.27얼굴 인식(Face Recognition)은 이미지 내의 인물을 식별하고 구별하는 기술입니다. GPT-4V를 활용하면, 다양한 이미지에서 특정 인물을 식별하고 관련 정보를 추출하는 것이 가능해집니다. #1. 필수 패키지 설치 및 준비 GPT-4V를 활용한 이미지 인식 프로젝트를 시작하기 전에, 필요한 Python 패키지들을 설치하고 준비하는 과정이 필요합니다. 1) 패키지 설치 먼저, 필요한 Python 라이브러리를 설치해야 합니다. 이를 위해 Python의 패키지 관리자인 pip를 사용합니다. 다음 명령어를 통해 필요한 패키지들을 설치할 수 있습니다. pip install openai requests pillow matplotlib 이 명령어는 OpenAI의 API를 사용하기 위한 openai, 웹에서… -
GPT-4V(ision)를 이용한 OCR - (Python)
GPT-4V(ision)를 이용한 OCR - (Python)
2023.11.26이번 글에서는 GPT-4V를 활용한 OCR에 대해 알아보겠습니다. OCR (Optical Character Recognition)은 이미지에서 텍스트를 추출하고 인식하는 기술입니다. 이 기술은 문서 스캔, 명함 인식, 자동 번호판 인식 등 다양한 분야에서 활용됩니다. GPT-4V를 이용하면, 이미지 내의 텍스트를 효과적으로 추출하고 처리할 수 있습니다. #1. 필수 패키지 설치 및 준비 GPT-4V를 활용한 이미지 인식 프로젝트를 시작하기 전에, 필요한 Python 패키지들을 설치하고 준비하는 과정이 필요합니다. 1) 패키지 설치 먼저, 필요한 Python 라이브러리를 설치해야 합니다. 이를 위해 Python의 패키지 관리자인 pip를 사용합니다. 다음 명령어를 통해 필요한 패키지들을 설치할 수 있습니다…
댓글을 사용할 수 없습니다.