1. Giới thiệu về Mô hình GPT-4 Vision
Mô hình GPT-4 Vision (GPT-4V) là một mô hình trí tuệ nhân tạo đa dạng (multimodal) được giới thiệu bởi OpenAI, tích hợp khả năng hiểu hình ảnh dựa trên GPT-4. Khác với các mô hình xử lý văn bản truyền thống, GPT-4V có thể nhận và phân tích nội dung hình ảnh, cung cấp mô tả, trả lời câu hỏi và tham gia vào tương tác liên quan đến hình ảnh.
Các Ứng Dụng Mẫu:
- Nhận Dạng và Phân loại Sản phẩm: Các nền tảng thương mại điện tử có thể sử dụng GPT-4V để nhận dạng và cung cấp mô tả cho hình ảnh sản phẩm, giúp cải thiện hệ thống tìm kiếm và đề xuất.
- Hỗ Trợ Quyết Định Y Khoa: Mặc dù GPT-4V không phù hợp cho việc chẩn đoán hình ảnh y học chuyên nghiệp trực tiếp, nhưng nó có thể hỗ trợ nhân viên y tế trong việc hiểu ban đầu về hình ảnh và tổ chức dữ liệu.
- Giáo Dục và Nghiên Cứu: Trong giảng dạy và nghiên cứu khoa học, GPT-4V có thể được sử dụng để phân tích biểu đồ, kết quả thử nghiệm và giải thích tự động dữ liệu hình ảnh khoa học.
- Giám Sát và Phân Tích Giao Thông: Bằng việc phân tích hình ảnh giám sát giao thông, GPT-4V có thể hỗ trợ hệ thống quản lý giao thông trong báo cáo điều kiện thời gian thực và nhận diện tai nạn.
2. Ví Dụ Đơn Giản
Dưới đây là một ví dụ đơn giản sử dụng yêu cầu CURL để minh họa cách sử dụng Mô hình GPT-4 Vision để phân tích hình ảnh:
Tham Số Yêu Cầu API:
-
model
: Chỉ định phiên bản mô hình sẽ sử dụng, trong trường hợp này là "gpt-4-vision-preview". -
messages
: Bao gồm định nghĩa vai trò và nội dung, trong đó nội dung có thể bao gồm văn bản và liên kết hình ảnh. -
max_tokens
: Chỉ định giới hạn độ dài tối đa cho việc tạo văn bản.
Ví Dụ Yêu Cầu CURL:
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Trong hình ảnh này có gì?"
},
{
"type": "image_url",
"image_url": {
"url": "Đường liên kết Hình ảnh của Bạn"
}
}
]
}
],
"max_tokens": 300
}'
Với yêu cầu trên, chúng ta đã gửi một hình ảnh đến Mô hình GPT-4 Vision và đặt một câu hỏi đơn giản: "Trong hình ảnh này có gì?" Mô hình sẽ phân tích nội dung hình ảnh và cung cấp câu trả lời dựa trên nội dung hình ảnh.
3. Tải lên Hình Ảnh bằng mã hóa Base64
Trong một số trường hợp, bạn có thể cần tải lên một tệp hình ảnh cục bộ vào Mô hình GPT-4 Vision. Trong trường hợp đó, chúng ta có thể nhúng dữ liệu hình ảnh vào yêu cầu API bằng cách sử dụng mã hóa base64.
Ví dụ Mã Ngôn Ngữ Python:
import base64
import requests
api_key = "YOUR_OPENAI_API_KEY"
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
image_path = "đường dẫn đến tập tin hình ảnh của bạn.jpg"
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": "Trong hình ảnh này có gì?"
},
{
"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())
Trong đoạn mã trên, chúng ta đầu tiên chuyển đổi một tệp hình ảnh cục bộ thành một chuỗi được mã hóa base64, sau đó gửi chuỗi này như một phần của yêu cầu đến API. Phản hồi của mô hình chứa mô tả về nội dung hình ảnh.
4. Xử lý Đầu Vào Nhiều Hình Ảnh
Đôi khi cần phải phân tích nhiều hình ảnh cùng một lúc. Mô hình GPT-4 Vision hỗ trợ nhận đầu vào từ nhiều hình ảnh cùng một lúc và cho phép người dùng đặt câu hỏi về những hình ảnh này hoặc so sánh sự khác biệt của chúng.
Ví dụ nhập nhiều hình ảnh:
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Có điểm gì khác biệt ở những hình ảnh này không?"
},
{
"type": "image_url",
"image_url": {
"url": "URL của hình ảnh thứ nhất",
}
},
{
"type": "image_url",
"image_url": {
"url": "URL của hình ảnh thứ hai",
}
}
]
}
],
"max_tokens": 300
}'
Trong yêu cầu này, chúng ta gửi hai hình ảnh đến API. Mô hình sẽ phân tích mỗi hình ảnh một cách riêng lẻ và cung cấp mô tả và so sánh dựa trên các câu hỏi đặt ra. Phương pháp này rất lý tưởng để phân tích tổng thể một bộ sưu tập hình ảnh.
5. Thiết lập Cấp độ Chi tiết Phân Tích Hình Ảnh
Khi sử dụng mô hình tầm nhìn GPT-4 cho phân tích hình ảnh, bạn có thể thiết lập cấp độ chi tiết theo nhu cầu của bạn. Bằng cách điều chỉnh tham số detail
, bạn có thể chọn một trong các tùy chọn thấp
, cao
, hoặc tự động
. Dưới đây là một giải thích chi tiết về mỗi tùy chọn và cách thiết lập:
-
thấp
: Chọn cấp độ chi tiết thấp sẽ tắt "mô hình độ phân giải cao". Mô hình này sẽ nhận một phiên bản hình ảnh có độ phân giải thấp là 512 pixel x 512 pixel và sử dụng một ngân sách của 65 mã thông báo để biểu diễn hình ảnh. Điều này phù hợp cho các tình huống không yêu cầu chi tiết cao, giúp tăng thời gian phản hồi nhanh hơn và tiêu tốn ít mã thông báo nhập. -
cao
: Cấp độ chi tiết cao cho phép mô hình trước tiên nhìn thấy một hình ảnh có độ phân giải thấp, sau đó tạo ra một phiên bản cắt chi tiết dựa trên lưới 512 pixel dựa trên kích thước của hình ảnh đầu vào. Mỗi cắt chi tiết được biểu diễn với một ngân sách gấp đôi là 129 mã thông báo (tức là 65 mã thông báo cho mỗi cắt mặc định). -
tự động
: Cấp độ chi tiết tự động sẽ xác định xem có sử dụng cấp độ chi tiếtthấp
haycao
dựa trên kích thước của hình ảnh đầu vào.
Đoạn mã dưới đây cho thấy cách thiết lập cấp độ chi tiết:
import base64
import requests
api_key = "khóa_API_OPENAI_của_bạn"
đường_dẫn_hình_ảnh = "đường_dẫn_đến_hình_ảnh_của_bạn.jpg"
hình_ảnh_base64 = base64.b64encode(open(đường_dẫn_hình_ảnh, "rb").read()).decode('utf-8')
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Trong hình ảnh này có gì?"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{hình_ảnh_base64}",
"detail": "cao" # Đặt cấp độ chi tiết là cao
}
}
]
}
],
"max_tokens": 300
}
response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)
print(response.json())
6. Hiểu Rõ Hạn Chế của Mô hình và Quản Lý Hình Ảnh
6.1. Hạn Chế của Mô hình
Mặc dù mô hình tầm nhìn GPT-4 mạnh mẽ, nhưng nó cũng không thiếu hạn chế, và việc hiểu những hạn chế này rất quan trọng khi sử dụng nó cho việc hiểu hình ảnh. Dưới đây là một tổng quan về một số hạn chế đã biết:
-
Hình ảnh Y tế: Mô hình không phù hợp để diễn giải hình ảnh y tế chuyên nghiệp, như CT scan, và không nên được sử dụng để tư vấn y tế.
-
Văn bản không phải tiếng Anh: Mô hình có thể không hoạt động tốt khi xử lý hình ảnh chứa văn bản không phải chữ cái Latin, như tiếng Nhật hoặc tiếng Hàn.
-
Địa lý Không gian: Hiệu suất của mô hình không tối ưu trong các nhiệm vụ yêu cầu quan hệ vị trí chính xác, như xác định vị trí của các quân cờ trên bàn cờ vua.
-
Chi Tiết Hình Ảnh: Mô hình có thể gặp khó khăn trong việc hiểu biểu đồ hoặc văn bản với biến đổi màu sắc và kiểu dáng (ví dụ: đường nét mass, đường nét đứt) trong hình ảnh.
-
Xoay Hình Ảnh: Mô hình có thể hiểu lầm văn bản và hình ảnh bị nghiêng hoặc lộn ngược.
6.2 Quản lý Hình ảnh trong Phiên làm việc
Vì API Hoàn thiện Trò chuyện là không có trạng thái, bạn cần tự quản lý các tin nhắn (bao gồm cả hình ảnh) được chuyển đến mô hình của mình. Nếu bạn muốn sử dụng cùng một hình ảnh nhiều lần, bạn cần gửi lại dữ liệu hình ảnh với mỗi yêu cầu API.
additional_payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Dựa trên hình ảnh này, bạn có những gợi ý gì không?"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}"
}
}
]
}
],
"max_tokens": 300
}
new_response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=additional_payload)
print(new_response.json())
7. Tính toán Chi phí
Mỗi hình ảnh sử dụng tùy chọn detail: low
sẽ tiêu thụ cố định 85 ký tự. Đối với hình ảnh có tùy chọn detail: high
, hình ảnh được co dãn theo tỷ lệ để vừa với kích thước 2048px x 2048px, sau đó bên cạnh ngắn hơn của hình ảnh được đảm bảo là 768px. Hình ảnh sau đó được chia thành nhiều hình vuông 512px, mỗi hình vuông tiêu tốn 170 ký tự, và thêm 85 ký tự vào tổng số ký tự cuối cùng.
Ví dụ, nếu một hình ảnh có kích thước 1024px x 1024px và chọn tùy chọn detail: high
, chi phí ký tự sẽ là:
- Đầu tiên, vì 1024 nhỏ hơn 2048, không có điều chỉnh kích thước ban đầu.
- Sau đó, với bên cạnh ngắn là 1024, hình ảnh được thay đổi kích thước thành 768 x 768.
- Cần 4 hình vuông 512px để biểu diễn hình ảnh, vì vậy chi phí ký tự cuối cùng sẽ là 170 * 4 + 85 = 765.
Để hiểu rõ phương pháp tính toán chi phí, vui lòng tham khảo tài liệu cho mô hình GPT-4 Vision.
8. Các Câu hỏi Thường gặp
Dưới đây là một số câu hỏi phổ biến và câu trả lời mà người dùng có thể gặp khi sử dụng mô hình GPT-4 Vision:
Q: Tôi có thể điều chỉnh thông tin hình ảnh của gpt-4
được không?
A: Hiện tại, chúng tôi không hỗ trợ việc điều chỉnh thông tin hình ảnh của gpt-4
.
Q: Tôi có thể sử dụng gpt-4
để tạo hình ảnh không?
A: Không, bạn có thể sử dụng dall-e-3
để tạo hình ảnh và sử dụng gpt-4-vision-preview
để hiểu hình ảnh.
Q: Những loại tệp tải lên nào được hỗ trợ?
A: Hiện tại, chúng tôi hỗ trợ các tệp PNG (.png), JPEG (.jpeg và .jpg), WEBP (.webp), và các tệp GIF không hoạt ảnh (.gif).