Veni AI
Yapay Zeka

Multimodal AI Sistemleri: Görüntü, Metin ve Ses Analizi

Multimodal yapay zeka sistemlerinin teknik mimarisi, vision-language modelleri, ses işleme ve çoklu modalite füzyonu hakkında kapsamlı teknik rehber.

Veni AI Teknik Ekibi9 Ocak 20255 dk okuma
Multimodal AI Sistemleri: Görüntü, Metin ve Ses Analizi

Multimodal AI Sistemleri: Görüntü, Metin ve Ses Analizi

Multimodal AI, birden fazla veri tipini (metin, görüntü, ses, video) anlayıp işleyebilen yapay zeka sistemleridir. GPTV, Gemini ve Claude 3 gibi modeller bu alanda çığır açmıştır.

Multimodal AI Temelleri

Modalite Tipleri

  1. Metin (Text): Doğal dil, kod, yapılandırılmış veri
  2. Görüntü (Vision): Fotoğraf, diagram, ekran görüntüsü
  3. Ses (Audio): Konuşma, müzik, çevresel sesler
  4. Video: Hareketli görüntü + ses kombinasyonu

Neden Multimodal?

  • İnsan iletişimi doğası gereği multimodal
  • Tek modalite ile kaçırılan bağlam bilgisi
  • Daha zengin anlam çıkarımı
  • Gerçek dünya uygulamalarına uygunluk

Vision-Language Modelleri

Mimari Yaklaşımlar

1. Contrastive Learning (CLIP tarzı)

1Image Encoder → Image Embedding 2Text Encoder → Text Embedding 3Contrastive Loss: Match(image, text)

2. Generative (GPTV tarzı)

Image → Vision Encoder → Visual Tokens Visual Tokens + Text Tokens → LLM → Response

3. Cross-Attention Fusion

Image Features ←Cross-Attention→ Text Features

Vision Encoder Türleri

EncoderMimariÇözünürlükÖzellik
ViTTransformer224-1024Patch-based
CLIP ViTTransformer336Contrastive
SigLIPTransformer384Sigmoid loss
ConvNeXtCNNFlexibleEfficient

Image Tokenization

Patch Embedding:

224×224 görüntü → 14×14 patch grid → 196 visual token Her patch: 16×16 pixel → Linear projection → Embedding

Variable Resolution:

1Anyres yaklaşımı: 21. Görüntüyü tile'lara böl 32. Her tile'ı ayrı encode et 43. Global thumbnail ekle 54. Concatenate all tokens

Multimodal LLM Implementasyonu

GPTV Kullanımı

1from openai import OpenAI 2import base64 3 4client = OpenAI() 5 6def encode_image(image_path): 7 with open(image_path, "rb") as f: 8 return base64.b64encode(f.read()).decode('utf-8') 9 10response = client.chat.completions.create( 11 model="gpt-4-vision-preview", 12 messages=[ 13 { 14 "role": "user", 15 "content": [ 16 {"type": "text", "text": "Bu görüntüyü analiz et"}, 17 { 18 "type": "image_url", 19 "image_url": { 20 "url": f"data:image/jpeg;base64,{encode_image('image.webp')}", 21 "detail": "high" # low, high, auto 22 } 23 } 24 ] 25 } 26 ], 27 max_tokens=1000 28)

Claude 3 Vision

1from anthropic import Anthropic 2import base64 3 4client = Anthropic() 5 6with open("image.webp", "rb") as f: 7 image_data = base64.standard_b64encode(f.read()).decode("utf-8") 8 9message = client.messages.create( 10 model="claude-3-opus-20240229", 11 max_tokens=1024, 12 messages=[ 13 { 14 "role": "user", 15 "content": [ 16 { 17 "type": "image", 18 "source": { 19 "type": "base64", 20 "media_type": "image/jpeg", 21 "data": image_data 22 } 23 }, 24 {"type": "text", "text": "Bu görüntüde ne var?"} 25 ] 26 } 27 ] 28)

Ses İşleme (Audio Processing)

Speech-to-Text (STT)

Whisper Modeli:

1from openai import OpenAI 2 3client = OpenAI() 4 5with open("audio.mp3", "rb") as audio_file: 6 transcript = client.audio.transcriptions.create( 7 model="whisper-1", 8 file=audio_file, 9 language="tr" 10 ) 11 12print(transcript.text)

Text-to-Speech (TTS)

1response = client.audio.speech.create( 2 model="tts-1-hd", 3 voice="alloy", # alloy, echo, fable, onyx, nova, shimmer 4 input="Merhaba, ben bir yapay zeka asistanıyım." 5) 6 7response.stream_to_file("output.mp3")

Real-time Audio Pipeline

1Microphone → VAD → Chunking → STT → LLM → TTS → Speaker 23 Voice Activity 4 Detection

Video Anlama

Frame Sampling Stratejileri

1. Uniform Sampling:

1def uniform_sample(video_path, num_frames=8): 2 cap = cv2.VideoCapture(video_path) 3 total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) 4 indices = np.linspace(0, total_frames-1, num_frames, dtype=int) 5 6 frames = [] 7 for idx in indices: 8 cap.set(cv2.CAP_PROP_POS_FRAMES, idx) 9 ret, frame = cap.read() 10 if ret: 11 frames.append(frame) 12 13 return frames

2. Keyframe Extraction:

1def extract_keyframes(video_path, threshold=30): 2 # Scene change detection ile keyframe bulma 3 pass

Video-LLM Pipeline

1Video → Frame Sampling → Per-frame Encoding → Temporal Aggregation → LLM 23 Audio Extraction → STT → Text

Modalite Füzyonu

Early Fusion

Modaliteleri model girişinde birleştirme:

[CLS] [IMG_1] ... [IMG_N] [SEP] [TXT_1] ... [TXT_M] [SEP]

Late Fusion

Her modaliteyi ayrı işleyip sonuçları birleştirme:

1Image → Image Model → Image Features ─┐ 2 ├→ Fusion Layer → Output 3Text → Text Model → Text Features ────┘

Cross-Modal Attention

Modaliteler arası attention:

1Q = Text Features 2K, V = Image Features 3Cross_Attention(Q, K, V) = softmax(QK^T/√d)V

OCR ve Document Understanding

Document AI Pipeline

1def process_document(image_path): 2 # 1. Layout Detection 3 layout = detect_layout(image) # Başlıklar, paragraflar, tablolar 4 5 # 2. OCR 6 text_regions = ocr_extract(image) 7 8 # 3. Structure Understanding 9 structured_doc = parse_structure(layout, text_regions) 10 11 # 4. LLM Analysis 12 analysis = llm_analyze(structured_doc) 13 14 return analysis

Table Extraction

1response = client.chat.completions.create( 2 model="gpt-4-vision-preview", 3 messages=[{ 4 "role": "user", 5 "content": [ 6 {"type": "image_url", "image_url": {"url": table_image_url}}, 7 {"type": "text", "text": "Bu tabloyu JSON formatında çıkar"} 8 ] 9 }] 10)

Kurumsal Multimodal Uygulamalar

1. Belge İşleme

  • Fatura/makbuz OCR
  • Sözleşme analizi
  • Form veri çıkarma

2. Görsel Arama

  • Ürün görüntüsünden arama
  • Benzer görsel bulma
  • Görsel soru-cevap

3. İçerik Moderasyonu

  • Uygunsuz görüntü tespiti
  • Marka logo kontrolü
  • Metin + görüntü tutarlılık

4. Müşteri Desteği

  • Ekran görüntüsü analizi
  • Görsel troubleshooting
  • Sesli destek

Performance Optimizasyonu

Image Preprocessing

1def optimize_image(image_path, max_size=1024, quality=85): 2 img = Image.open(image_path) 3 4 # Resize 5 if max(img.size) > max_size: 6 ratio = max_size / max(img.size) 7 new_size = tuple(int(d * ratio) for d in img.size) 8 img = img.resize(new_size, Image.LANCZOS) 9 10 # Compress 11 buffer = io.BytesIO() 12 img.save(buffer, format="JPEG", quality=quality) 13 14 return buffer.getvalue()

Batch Processing

1async def batch_image_analysis(images, batch_size=5): 2 results = [] 3 for i in range(0, len(images), batch_size): 4 batch = images[i:i+batch_size] 5 tasks = [analyze_image(img) for img in batch] 6 batch_results = await asyncio.gather(*tasks) 7 results.extend(batch_results) 8 return results

Maliyet Yönetimi

Token Hesaplama (Vision)

1GPTV Token Maliyeti: 2- Low detail: 85 token/image 3- High detail: 85 + 170 × tile_count 4 5Örnek (2048×1024, high): 6Tiles: ceil(2048/512) × ceil(1024/512) = 4 × 2 = 8 7Tokens: 85 + 170 × 8 = 1445 token

Optimizasyon Stratejileri

  1. Detail seviyesi ayarla: Gerekmedikçe "high" kullanma
  2. Görüntü boyutunu küçült: Token sayısını azaltır
  3. Caching: Aynı görüntü için tekrar analiz yapma
  4. Batch işlemler: API call sayısını azalt

Sonuç

Multimodal AI, yapay zekanın insan benzeri anlama kapasitesine en yakın yaklaşımdır. Görüntü, metin ve ses modalitelerinin birleşimi, daha güçlü ve kullanışlı AI uygulamaları oluşturmayı mümkün kılar.

Veni AI olarak, multimodal AI çözümleri geliştiriyoruz. Projeleriniz için bizimle iletişime geçin.

İlgili Makaleler