1. GPT-4 Vision Modelının Tanıtımı
GPT-4 Vision modelı (GPT-4V), görsele dayalı anlayış yeteneklerini GPT-4 üzerine entegre eden OpenAI tarafından sunulan çoklu modal yapay zeka modelidir. Geleneksel metin işleme modellerinin aksine, GPT-4V görüntü içeriğini alabilir ve analiz edebilir, görüntülerle ilgili açıklamalar yapabilir, soruları yanıtlayabilir ve etkileşimde bulunabilir.
Örnek Uygulamalar:
- Ürün Tanıma ve Sınıflandırma: E-ticaret platformları, ürün görüntülerini tanımlamak ve açıklamalar sağlamak için GPT-4V'yi kullanarak arama ve öneri sistemlerini iyileştirebilir.
- Tıbbi Kararları Destekleme: GPT-4V doğrudan profesyonel tıbbi görüntü teşhisi için uygun olmasa da, tıbbi personeli başlangıçta görüntü anlayışı ve veri düzenlemede yardımcı olabilir.
- Eğitim ve Araştırma: Öğretim ve bilimsel araştırmalarda, GPT-4V grafikleri, deney sonuçlarını analiz etmek ve bilimsel görüntü verilerini otomatik olarak yorumlamak için kullanılabilir.
- Trafik İzleme ve Analizi: Trafik izleme görüntülerini analiz ederek, GPT-4V trafik yönetim sistemlerine gerçek zamanlı durum raporlama ve kaza tespiti konularında yardımcı olabilir.
2. Basit Örnek
Aşağıda, GPT-4 Vision modelini görüntüleri analiz etmek için nasıl kullanacağımızı gösteren bir CURL isteğiyle basit bir örnek bulunmaktadır:
API İsteği Parametreleri:
-
model
: Kullanılacak model sürümünü belirtir, bu durumda "gpt-4-vision-preview". -
messages
: Rol tanımını ve içeriği içerir, içerik metin ve görüntü bağlantılarını içerebilir. -
max_tokens
: Metin oluşturmak için maksimum uzunluk sınırını belirtir.
CURL İsteği Örneği:
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": "Bu görüntüde ne var?"
},
{
"type": "image_url",
"image_url": {
"url": "Görüntü Bağlantınız"
}
}
]
}
],
"max_tokens": 300
}'
Yukarıdaki istek ile, bir görüntüyü GPT-4 Vision modeline gönderdik ve basit bir soru sorduk: "Bu görüntüde ne var?" Model, görüntü içeriğini analiz edecek ve görüntü içeriğine dayalı bir cevap verecektir.
3. Base64 Kodlaması Kullanarak Görüntü Yükleme
Bazı durumlarda, yerel bir görüntü dosyasını GPT-4 Vision modeline yüklemeniz gerekebilir. Bu tür durumlarda, görüntü verisini base64 kodlaması kullanarak API isteğine gömebiliriz.
Python Kod Örneği:
import base64
import requests
api_key = "SİZİN_OPENAI_API_KEY'İNİZ"
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
image_path = "görüntü_yolunuz.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": "Bu görüntüde ne var?"
},
{
"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())
Yukarıdaki kodda, ilk olarak bir yerel görüntü dosyasını base64 kodlanmış bir dizeye dönüştürüyoruz ve bu dizesini API'ye göndermek için isteğin bir parçası olarak kullanıyoruz. Modelin yanıtı, görüntü içeriğinin bir açıklamasını içermektedir.
4. Birden Fazla Görüntü Girişini İşleme
Bazı durumlarda aynı anda birden fazla görüntüyü analiz etmek gerekli olabilir. GPT-4 Vision modeli, aynı anda birden fazla görüntü girişini almayı destekler ve kullanıcıların bu görüntüler hakkında soru sormasına veya farklılıklarını karşılaştırmasına izin verir.
Çoklu Görüntü Girişi Örneği:
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": "kullanıcı",
"content": [
{
"type": "text",
"text": "Bu görüntüler arasındaki fark nedir?"
},
{
"type": "image_url",
"image_url": {
"url": "İlk görüntünün URL'si",
}
},
{
"type": "image_url",
"image_url": {
"url": "İkinci görüntünün URL'si",
}
}
]
}
],
"max_tokens": 300
}'
Bu istekte, API'ye iki görüntü gönderiyoruz. Model, her bir görüntüyü ayrı ayrı analiz edecek ve sorulara dayalı olarak açıklamalar ve karşılaştırmalar sunacaktır. Bu yaklaşım, bir görüntü koleksiyonunun genel analizi için idealdir.
5. Görüntü Analiz Detay Seviyesini Ayarlama
Görüntü analizi için GPT-4 görsele modelini kullandığınızda, ihtiyacınıza göre detay seviyesini ayarlayabilirsiniz. detail
parametresini ayarlayarak low
, high
veya auto
seçeneklerinden birini seçebilirsiniz. Her bir seçeneğin ayrıntılı bir açıklaması ve nasıl ayarlanacağı aşağıda verilmiştir:
-
low
: Düşük detay seviyesini seçmek, "yüksek çözünürlük" modelini devre dışı bırakacaktır. Bu model, 512 piksel x 512 piksel boyutundaki bir düşük çözünürlüklü bir görüntü alacak ve görüntüyü temsil etmek için 65 jetonluk bir bütçe kullanacaktır. Bu, yüksek detaylara ihtiyaç duyulmayan senaryolar için uygundur, daha hızlı bir yanıt süresi elde etmeye ve daha az giriş jetonu tüketmeye yardımcı olur. -
high
: Yüksek detay seviyesi, modele öncelikle düşük çözünürlüklü bir görüntü gösterir ve ardından giriş görüntüsünün boyutuna dayalı olarak 512 piksellik bir ızgara üzerinde detaylı bir kırpma yapar. Her detaylı kırpma, 129 jetonluk (yani, varsayılan kırpma başına 65 jeton) bir bütçe ile temsil edilir. -
auto
: Otomatik detay seviyesi, giriş görüntüsünün boyutuna bağlı olaraklow
veyahigh
detay seviyesinin kullanılıp kullanılmayacağına karar verir.
Aşağıdaki kod örneği, detay seviyesinin nasıl ayarlanacağını göstermektedir:
import base64
import requests
api_key = "YOUR_OPENAI_API_KEY" # Sizin OPENAI_API_KEY'iniz
image_path = "görüntü_yolunuz.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": "kullanıcı",
"content": [
{
"type": "text",
"text": "Bu görüntüde ne var?"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}",
"detail": "high" # Yüksek detay seviyesine ayarla
}
}
]
}
],
"max_tokens": 300
}
response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)
print(response.json())
6. Model Sınırlamalarını Anlama ve Görüntü Yönetimi
6.1. Model Sınırlamaları
GPT-4 görsele modelinin güçlü işlevselliğine rağmen, bazı sınırlamalara sahiptir ve bu sınırlamaları anlamak, görüntü anlayışı için kullanırken oldukça önemlidir. Bilinen bazı kısıtlamaların genel bir incelemesi aşağıda verilmiştir:
-
Tıbbi Görüntüler: Model, bilgisayarlı tomografi taramaları gibi profesyonel tıbbi görüntüleri yorumlamak için uygun değildir ve tıbbi tavsiye vermek için kullanılmamalıdır.
-
İngilizce Olmayan Metin: Model, Japonca veya Korece gibi Latin olmayan alfabe metin içeren görüntüleri işlerken iyi performans göstermeyebilir.
-
Mekansal Konumlama: Modelin performansı, satranç tahtasındaki parçaların kesin mekansal konum ilişkilerini belirlemek gibi hassas görevlerde alt düzeyde olabilir.
-
Görüntü Detayları: Model, görüntülerde renk ve stil varyasyonları içeren grafikleri veya metinleri anlamakta zorlanabilir (örneğin, düz çizgiler, kesik çizgiler).
-
Görüntü Döndürme: Model, eğik veya baş aşağı metin ve görüntüleri yanlış yorumlayabilir.
6.2 Oturumlarda Görüntü Yönetimi
Sohbet Tamamlama API'si durumsuz olduğu için, model tarafından iletilen mesajları (görüntüler dahil) kendiniz yönetmeniz gerekmektedir. Aynı görüntüyü birden fazla kez kullanmak istiyorsanız, her API isteği ile görüntü verisini yeniden göndermeniz gerekmektedir.
ek_payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Bu görüntüye dayanarak hangi önerileriniz var?"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_görüntü}"
}
}
]
}
],
"max_tokens": 300
}
yeni_cevap = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=ek_payload)
print(yeni_cevap.json())
7. Maliyet Hesaplama
detay: düşük
seçeneği kullanılarak her görüntü 85 sabit token tüketir. detay: yüksek
seçeneği olan görüntüler için ise, görüntü önce orantılı bir şekilde 2048px x 2048px boyutuna getirilir, ardından görüntünün kısa kenarı 768px olacak şekilde boyutlandırılır. Görüntü daha sonra 512px kareler halinde bölünür ve her kare 170 token tüketir, son toplam değere ek olarak 85 token eklenir.
Örneğin, bir görüntünün boyutları 1024px x 1024px ve detay: yüksek
seçeneği seçilmişse, token maliyeti şu şekilde olacaktır:
- İlk olarak, 1024 2048'den küçük olduğu için başlangıçtaki boyut ayarlaması yapılmaz.
- Daha sonra, kısa kenar 1024 olduğu için, görüntü 768 x 768 boyutuna yeniden boyutlandırılır.
- Görüntüyü temsil etmek için 4 adet 512px kareye ihtiyaç duyulur, bu nedenle son token maliyeti 170 * 4 + 85 = 765 olacaktır.
Maliyet hesaplama yönteminin detaylı anlaşılması için lütfen GPT-4 Vision modeli belgelerine başvurunuz.
8. Sıkça Sorulan Sorular
GPT-4 Vision modelini kullanırken kullanıcıların karşılaşabileceği bazı ortak sorular ve yanıtları aşağıda verilmiştir:
S: gpt-4
'ün görüntü yeteneklerini ince ayar yapabilir miyim?
Y: Şu anda, gpt-4
'ün görüntü yeteneklerini ince ayarlamayı desteklemiyoruz.
S: gpt-4
'ü görüntü oluşturmak için kullanabilir miyim?
Y: Hayır, görüntü oluşturmak için dall-e-3
'ü kullanabilir ve görüntüleri anlamak için gpt-4-vision-preview
'ü kullanabilirsiniz.
S: Hangi tür dosya yüklemeleri desteklenmektedir?
Y: Şu anda PNG (.png), JPEG (.jpeg ve .jpg), WEBP (.webp) ve hareketsiz GIF (.gif) dosyalarını desteklemekteyiz.