Menggabungkan teks, gambar, dan audio dalam satu sistem: CLIP untuk menyatukan dua modalitas, vision-language model (VLM), Whisper untuk audio, plus pipeline VQA image+text dan fine-tune multimodal ringan.

Episode 15-18 membahas model yang bekerja pada satu modalitas: teks saja, gambar saja, atau audio. Tren 2025-2026 justru menghapus batas itu. Model seperti Gemini dan GPT-5-class menerima gambar, audio, dan teks dalam satu percakapan. Di balik tren ini ada fondasi yang bisa kalian pahami dan pakai hari ini: CLIP untuk menghubungkan gambar dan teks, Whisper untuk audio, dan VLM (vision-language model) yang menebak dari keduanya.
Kabar baiknya: sebagai engineer, kalian tidak perlu membangun multimodal dari nol. Kalian menyusun pipeline dari pretrained components yang sudah matang. Episode ini menunjukkan caranya — dan bagaimana memadukan semuanya untuk menyelesaikan masalah dunia nyata.
CLIP (Contrastive Language-Image Pre-training) dilatih dengan konsep sederhana yang kuat: untuk satu batch pasangan (gambar, teks), dorong embedding gambar dan teks yang berpasangan agar dekat, dan yang tidak berpasangan agar menjauh. Hasilnya: satu ruang vektor bersama untuk dua modalitas.
Konsekuensi luar biasa: kemampuan zero-shot classification. Kalian tidak perlu melatih classifier — cukup bandingkan gambar dengan kalimat deskripsi kelas:
from transformers import CLIPProcessor, CLIPModel
model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")
inputs = processor(
text=["foto seekor kucing", "foto seekor anjing", "foto sebuah mobil"],
images=image, return_tensors="pt", padding=True,
)
outputs = model(**inputs)
probs = outputs.logits_per_image.softmax(dim=-1)
print(probs)Ini adalah zero-shot learning dalam bentuk paling praktis: akurasi tanpa satu pun sample training. CLIP juga dipakai sebagai image encoder di dalam banyak model multimodal dan sebagai dasar image search (cari gambar dengan kata-kata).
Tip
Untuk pencarian gambar berbasis teks, simpan embedding CLIP semua gambar di database vektor, lalu cari dengan similarity — bukan membandingkan gambar dengan gambar. Pipeline ini sederhana (encode + cosine) dan sangat cepat saat image library membesar.
Whisper dari OpenAI adalah model speech-to-text yang kuat dan multilingual — termasuk bahasa Indonesia. Ia di-training pada data audio yang sangat besar dan robust terhadap noise dan aksen:
from transformers import pipeline
transcriber = pipeline(
"automatic-speech-recognition",
model="openai/whisper-small",
device=0,
)
result = transcriber("pidato.mp3")
print(result["text"])Menggabungkan Whisper + LLM membuka pipeline yang luar biasa: transkrip rapat → ringkasan otomatis, atau transkrip panggilan → ekstraksi action item. Ini contoh paling nyata dari multimodal pipeline yang bekerja hari ini.
VLM menggabungkan vision encoder (seperti CLIP) dengan decoder LLM. Model menerima gambar + teks, menghasilkan teks. Contoh kelas VLM: LLaVA, Qwen2-VL, dan Gemini-class. Gunakan via pipeline:
from transformers import pipeline
vlm = pipeline("image-to-text", model="Qwen/Qwen2-VL-7B-Instruct")
answer = vlm(
image="gambar_truk.jpg",
prompt="Ada berapa truk dalam gambar ini?",
)
print(answer)Kemampuan di luar pertanyaan sederhana: menghitung objek, membaca teks dalam gambar (OCR), memahami diagram, bahkan menebak suasana. VLM adalah fondasi agent vision — dibahas di episode 22.
Fine-tuning VLM besar itu mahal, tetapi sering kalian tidak perlu menyentuh semua bobot. Dua jalur hemat:
Untuk task klasifikasi gambar dengan data sedikit: bekukan CLIP, latih classifier kecil di atas embedding-nya — persis transfer learning episode 8:
import torch.nn as nn
class CLIPLinearProbe(nn.Module):
def __init__(self, clip, n_classes):
super().__init__()
self.clip = clip
for p in self.clip.parameters():
p.requires_grad = False
self.head = nn.Linear(512, n_classes)
def forward(self, image):
with torch.no_grad():
emb = self.clip.get_image_features(**image)
return self.head(emb)Untuk VLM, aplikasikan teknik LoRA dari episode 16 — hanya proyeksi attention yang dilatih:
from peft import LoraConfig, get_peft_model
lora = LoraConfig(r=8, lora_alpha=16, target_modules=["q_proj", "v_proj"])
model = get_peft_model(vlm, lora)
model.print_trainable_parameters()Dengan dataset VQA kecil, VLM bisa diajarkan menjawab pertanyaan spesifik domain kalian — tanpa melatih ulang seluruh model.
processor yang menyertai model.<image> dsb.) berbeda antar model — ikuti template resmi.Warning
VLM bisa membaca teks dan menebak isi gambar, tapi tidak selalu jujur — ia bisa menjawab meyakinkan untuk hal yang salah terlihat (halusinasi visual). Untuk keputusan penting (medis, keselamatan), validasi hasil dengan aturan tambahan, bukan sekadar kepercayaan pada model.
Pada episode 21 ini, kalian telah memasuki dunia multimodal.
Inti yang harus dibawa pulang:
Di episode 22 selanjutnya kita akan menggabungkan model dengan agen: reinforcement learning & agentic — DQN, PPO, RLHF, GRPO untuk reasoning model, plus tool use dan model sebagai otak agent. Sampai jumpa di episode 22!