1. โมเดล GPT-4 Vision คืออะไร
โมเดล GPT-4 Vision (GPT-4V) คือโมเดลปัญญาประดิษฐ์แบบมัลติโมดัลที่ถูกนำเสนอโดย OpenAI ซึ่งผสานความสามารถในการเข้าใจภาพเข้ากับ GPT-4 โดยที่ GPT-4V สามารถรับและวิเคราะห์เนื้อหาของภาพได้ โดยสามารถให้คำบรรยาย ตอบคำถาม และมีปฏิสัมพันธ์ที่เกี่ยวข้องกับภาพ
การประยุกต์ใช้ตัวอย่าง
- การระบุและจำแนกสินค้า: แพลตฟอร์มอีคอมเมิร์ซสามารถใช้ GPT-4V เพื่อระบุและให้คำอธิบายสำหรับภาพสินค้า เพื่อช่วยปรับปรุงระบบค้นหาและแนะนำ
- ช่วยตัดสินใจทางการแพทย์: ขณะที่ GPT-4V ไม่เหมาะสำหรับการวินิจฉัยภาพการแพทย์อย่างเชี่ยวชาญโดยตรง มันสามารถช่วยเจ้าหน้าที่ทางการแพทย์ในการเข้าใจภาพในระดับเบื้องต้นและการจัดระเบียบข้อมูล
- การศึกษาและวิจัย: ในการสอนและการวิจัยทางวิทยาศาสตร์ GPT-4V สามารถใช้เพื่อวิเคราะห์กราฟ ผลการทดลอง และการอธิบายข้อมูลภาพทางวิทยาศาสตร์โดยอัตโนมัติ
- การติดตามและวิเคราะห์การจราจร: โดยการวิเคราะห์ภาพตรวจจับการจราจร GPT-4V สามารถช่วยในการรายงานเงื่อนไขแบบรายเวลาจริงและการระบุอุบัติเหตุทางถนน
2. ตัวอย่างการใช้งานง่าย
ด้านล่างนี้คือตัวอย่างง่ายๆ โดยใช้คำขอ CURL เพื่อสาธิตวิธีการใช้โมเดล GPT-4 Vision ในการวิเคราะห์ภาพ:
พารามิเตอร์ของคำขอ API:
-
model
: ระบุเวอร์ชันของโมเดลที่จะใช้ ในกรณีนี้คือ "gpt-4-vision-preview" -
messages
: มีการกำหนดบทบาทและเนื้อหา ซึ่งเนื้อหาสามารถรวมถึงลิงก์ข้อความและภาพ -
max_tokens
: ระบุขีดจำกัดความยาวสูงสุดสำหรับการสร้างข้อความ
ตัวอย่างคำขอ 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": "มีอะไรในภาพนี้?"
},
{
"type": "image_url",
"image_url": {
"url": "ลิงก์ภาพของคุณ"
}
}
]
}
],
"max_tokens": 300
}'
ด้วยคำขอข้างต้น เราได้ส่งภาพไปยังโมเดล GPT-4 Vision และถามคำถามง่ายๆ: "มีอะไรในภาพนี้?" โมเดลจะวิเคราะห์เนื้อหาของภาพและให้คำตอบโดยขึ้นอยู่กับเนื้อหาของภาพ
3. การอัปโหลดภาพโดยใช้การเข้ารหัส Base64
ในบางกรณีอาจจะต้องอัปโหลดไฟล์ภาพจากเครื่องคอมพิวเตอร์ไปยังโมเดล GPT-4 Vision ในกรณีเช่นนี้เราสามารถฝังข้อมูลภาพเข้าไปในคำขอ API โดยใช้การเข้ารหัส Base64
ตัวอย่างการเขียนโค้ดภาษา 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 = "path_to_your_image.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": "มีอะไรในภาพนี้?"
},
{
"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())
ในโค้ดด้านบน เราจะทำการแปลงไฟล์ภาพจากคอมพิวเตอร์เป็นสตริงที่เข้ารหัส Base64 จากนั้นส่งสตริงนี้เป็นส่วนหนึ่งของคำขอไปยัง API ข้อมูลที่ได้จากโมเดลจะประกอบด้วยคำอธิบายของเนื้อหาของภาพ
4. การจัดการข้อมูลภาพหลายภาพ
บางครั้งมันจำเป็นต้องวิเคราะห์ภาพหลายภาพพร้อมกัน โมเดล GPT-4 Vision รองรับการรับข้อมูลภาพหลายรูปพร้อมกันและอนุญาตให้ผู้ใช้สอบถามเกี่ยวกับภาพเหล่านี้หรือเปรียบเทียบความแตกต่างของพวกเขา
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": "มีอะไรต่างกันบนรูปภาพเหล่านี้?"
},
{
"type": "image_url",
"image_url": {
"url": "URL ของรูปภาพที่หนึ่ง",
}
},
{
"type": "image_url",
"image_url": {
"url": "URL ของรูปภาพที่สอง",
}
}
]
}
],
"max_tokens": 300
}'
ในคำขอนี้เราส่งรูปภาพสองภาพไปยัง API โดยโมเดลจะวิเคราะห์แต่ละรูปแยกต่างหากและให้คำอธิบายและเปรียบเทียบโดยข้อคำถามที่ถาม วิธีนี้เหมาะสำหรับการวิเคราะห์โดยรวมของชุดรูปภาพ
5. การตั้งระดับของการวิเคราะห์ภาพ
เมื่อใช้โมเดลทางภาพ GPT-4 สำหรับการวิเคราะห์ภาพ คุณสามารถตั้งระดับการละเอียดตามความต้องการของคุณได้ โดยการปรับพารามิเตอร์ detail
คุณสามารถเลือกใช้ low
, high
, หรือ auto
ได้ นี่คือคำอธิบายและวิธีการตั้งค่าของแต่ละตัวเลือก:
-
low
: เลือกระดับความละเอียดต่ำ จะปิดใช้ "โมเดลความละเอียดสูง" โมเดลนี้จะได้รับเวอร์ชั่นที่ลดขนาดของภาพที่ 512 พิกเซล x 512 พิกเซลและใช้งบประมาณ 65 token เพื่อแทนภาพ นี้เหมาะสำหรับสถานการณ์ที่ไม่จำเป็นต้องการรายละเอียดสูง ช่วยให้ได้เวลาตอบสนองที่เร็วขึ้นและใช้ token น้อยลง -
high
: ระดับความละเอียดสูง อนุญาตให้โมเดลเห็นภาพที่มีลักษณะละเอียดต่ำก่อน และจากนั้นสร้างรูปภาพที่ตัดออกละเอียดที่มีขนาด 512 พิกเซลตามขนาดของภาพเข้า ราคาค่าใช้จ่ายสำหรับการตัดละเอียดแต่ละรายละเอียดก็คือ 129 token (เช่น 65 token ต่อ crop) -
auto
: ระดับความละเอียดโดยอัตโนมัติ จะกำหนดว่าจะใช้ระดับความละเอียดlow
หรือhigh
อย่างไร ตามขนาดของภาพที่ส่งเข้าไป
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการตั้งระดับความละเอียด:
import base64
import requests
api_key = "your_OPENAI_API_KEY"
image_path = "path_to_your_image.jpg"
base64_image = base64.b64encode(open(image_path, "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": "มีอะไรในภาพนี้?"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}",
"detail": "high" # ตั้งเป็นระดับความละเอียดสูง
}
}
]
}
],
"max_tokens": 300
}
response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)
print(response.json())
6. ความเข้าใจขอบเขตของโมเดลและการจัดการภาพ
6.1 ข้อจำกัดของโมเดล
แม้ว่าฟังก์ชันที่มีประสิทธิภาพของโมเดลทางภาพ GPT-4 จะมีข้อจำกัด และการเข้าใจข้อจำกัดเหล่านี้นั้นสำคัญสำหรับการใช้ในการเข้าใจภาพ นี่คือภาพรวมของข้อจำกัดที่รู้จักบางอย่าง:
-
ภาพการแพทย์: โมเดลไม่เหมาะสำหรับการอ่านภาพทางการแพทย์เชี่ยวชาญ เช่น ภาพ CT scan และไม่ควรใช้เพื่อให้คำแนะนำทางการแพทย์
-
ข้อความภาษาอังกฤษ: โมเดลอาจทำงานไม่ดีเมื่อประมวลผลภาพที่มีข้อความที่ไม่ใช่อักษรละติน เช่น ญี่ปุ่น หรือ เกาหลี
-
การจำแนกพื้นที่ที่: ประสิทธิผลของโมเดลนี้นั้นไม่ดีในงานที่ต้องการการจำแนกพื้นที่ที่แน่นองอย่างเช่น การระบุตำแหน่งของเหล่งบนกระดานหมากรุก
-
รายละเอียดของภาพ: โมเดลอาจมีความยากที่จะเข้าใจแผนภูมิหรือข้อความที่มีความเปลี่ยนแปลงขอบแข็งและสไตล์ต่างๆ เช่น เส้นมัสตด์ และเส้นประ ในภาพ
-
การหมุนภาพ: โมเดลอาจเข้าใจข้อความและภาพที่เอียงหรือกลับคลัง ผิดได้
6.2 การจัดการรูปภาพในเซสชัน
เนื่องจาก API การเสริมคุยเชิงสถานะไม่มีสถานะ คุณต้องจัดการกับข้อความ (รวมถึงรูปภาพ) ที่ถ่ายทอดไปยังโมเดลเอง หากคุณต้องการใช้รูปภาพเดียวกันหลายครั้ง คุณต้องส่งข้อมูลรูปภาพกับคำขอ API ทุกครั้ง
additional_payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "จากรูปนี้ คุณมีคำแนะนำ?"
},
{
"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. การคำนวณค่าใช้จ่าย
การใช้รูปภาพด้วยตัวเลือก detail: low
ใช้ทรัพยากร 85 tokens คงที่ สำหรับรูปภาพที่ใช้ตัวเลือก detail: high
จะถูกปรับขนาดให้พอดีกับขนาด 2048px x 2048px ก่อน และทำให้ด้านที่สั้นที่สุดของรูปภาพมีขนาด 768px จากนั้นรูปภาพจะถูกแบ่งเป็นกล่องขนาด 512px หลาย ๆ กล่อง โดยที่แต่ละกล่องใช้ทรัพยากร 170 tokens และ tokens 85 เพิ่มเข้าไปในการคำนวณทั้งหมด
ตัวอย่างเช่น หากรูปภาพมีขนาด 1024px x 1024px และเลือกตัวเลือก detail: high
ค่า token จะเป็นดังนี้:
- ก่อนอื่น ๆ เนื่องจาก 1024 น้อยกว่า 2048 จึงไม่มีการปรับขนาดเริ่มต้น
- จากนั้น ด้านที่สั้นที่สุดคือ 1024 รูปภาพถูกปรับขนาดเป็น 768 x 768
- ต้องใช้กล่อง 512px 4 กล่องเพื่อแทนรูปภาพ ดังนั้นค่า token สุดท้ายจะเป็น 170 * 4 + 85 = 765
สำหรับคำอธิบายเพิ่มเติมเกี่ยวกับวิธีคำนวณค่าใช้จ่าย โปรดอ้างถึงเอกสารเพื่อ GPT-4 Vision model
8. คำถามที่พบบ่อย
ด้านล่างนี้เป็นคำถามที่พบบ่อยและคำตอบที่ผู้ใช้อาจพบเมื่อใช้โมเดล GPT-4 Vision:
ค: ฉันสามารถปรับปรุงความสามารถในการใช้ภาพของ gpt-4
ได้หรือไม่?
ค: ณ ปัจจุบันเราไม่รองรับการปรับปรุงความสามารถในการใช้ภาพของ gpt-4
ค: ฉันสามารถใช้ gpt-4
เพื่อสร้างรูปภาพได้หรือไม่?
ค: ไม่ คุณสามารถใช้ dall-e-3
เพื่อสร้างรูปภาพและใช้ gpt-4-vision-preview
เพื่อเข้าใจภาพ
ค: ประเภทของการอัปโหลดไฟล์ที่รองรับคืออะไร?
ค: ณ ปัจจุบันเรารองรับไฟล์ PNG (.png), JPEG (.jpeg และ .jpg), WEBP (.webp), และ non-animated GIF (.gif)