Program
Meta akhirnya menambahkan kemampuan multimodal ke ekosistem Llama dengan memperkenalkan model visi Llama 3.2 11B & 90B. Kedua model ini unggul dalam memroses teks dan gambar, yang mendorong saya untuk mencoba membangun proyek menggunakan versi 90B.
Dalam artikel ini, saya akan membagikan pekerjaan saya dan memandu Anda membangun aplikasi image captioning interaktif menggunakan Streamlit untuk front end dan Llama 3.2 90B sebagai mesin untuk menghasilkan caption.
Alasan Menggunakan Llama 3.2 90B untuk Aplikasi Image Captioning
Llama 3.2-Vision 90B adalah large language model (LLM) multimodal mutakhir yang dibangun untuk tugas yang melibatkan input gambar dan teks sekaligus.
Model ini menonjol dengan kemampuannya menangani tugas kompleks seperti penalaran visual, pengenalan gambar, dan pembuatan caption gambar. Model ini dilatih pada himpunan data masif berisi 6 miliar pasangan gambar-teks.
Llama 3.2-Vision adalah pilihan tepat untuk aplikasi kita karena mendukung banyak bahasa untuk tugas berbasis teks, meski fokus utamanya untuk aplikasi terkait gambar adalah bahasa Inggris. Fitur-fitur kuncinya menjadikannya pilihan unggul untuk tugas seperti Visual Question Answering (VQA), Document VQA, dan penelusuran gambar-teks, dengan image captioning sebagai salah satu aplikasinya yang menonjol.
Mari kita lihat bagaimana kapabilitas ini diterapkan dalam aplikasi dunia nyata seperti image captioning.
Pipeline Image Captioning
Image captioning adalah proses otomatis untuk menghasilkan teks deskriptif yang merangkum konten sebuah gambar. Proses ini menggabungkan computer vision dan pemrosesan bahasa alami untuk menafsirkan dan mengungkapkan detail visual dalam bentuk bahasa.
Secara tradisional, image captioning memerlukan pipeline yang kompleks, sering kali melibatkan tahapan terpisah untuk pemrosesan gambar dan pembangkitan bahasa. Pendekatan standar mencakup tiga langkah utama: prapemrosesan gambar, ekstraksi fitur, dan pembuatan caption.
- Prapemrosesan gambar: Gambar biasanya diubah ukurannya, dinormalisasi, dan sesekali dipotong agar sesuai dengan spesifikasi input model.
- Ekstraksi fitur: Fitur visual diekstraksi untuk mengidentifikasi objek, adegan, atau detail relevan dalam gambar. Pada sebagian besar model, ini memerlukan model visi terpisah untuk menafsirkan gambar, menghasilkan data terstruktur yang dapat dipahami model bahasa.
- Pembuatan caption: Fitur yang diekstraksi kemudian digunakan oleh model bahasa untuk menyusun deskripsi yang koheren, menggabungkan objek, konteks, dan hubungan yang teridentifikasi dalam data visual.
Dengan Llama 3.2 90B, proses yang secara tradisional rumit ini menjadi lebih sederhana. Vision adapter model mengintegrasikan fitur visual ke dalam model bahasa inti, memungkinkannya menafsirkan gambar secara langsung dan menghasilkan caption melalui prompt sederhana.
Dengan menyematkan lapisan cross-attention dalam arsitekturnya, Llama 3.2 90B memungkinkan pengguna mendeskripsikan gambar hanya dengan memberi prompt pada model—menghilangkan kebutuhan akan tahapan pemrosesan terpisah. Kesederhanaan ini membuat image captioning lebih mudah diakses dan efisien, di mana satu prompt dapat menghasilkan caption alami dan deskriptif yang menangkap esensi sebuah gambar.
Gambaran Aplikasi Image Captioning
Untuk menghadirkan kekuatan Llama 3.2 90B, kita akan membangun aplikasi image captioning yang sederhana namun efektif menggunakan Streamlit untuk front end dan Groq untuk menghasilkan caption.
Aplikasi ini akan memungkinkan pengguna mengunggah gambar dan menerima caption deskriptif yang dihasilkan model hanya dengan dua kali klik. Pengaturan ini ramah pengguna dan membutuhkan pengetahuan coding minimal untuk memulai.
Aplikasi kita akan mencakup fitur-fitur berikut:
- Judul: Judul yang ditampilkan secara mencolok, Llama Captioner, untuk menegaskan tujuan aplikasi.
- Tombol unggah: Antarmuka untuk mengunggah gambar dari perangkat pengguna.
- Tombol Generate: Tombol untuk memulai proses pembuatan caption.
- Output caption: Aplikasi akan menampilkan caption yang dihasilkan langsung pada antarmuka.
Implementasi Kode untuk Aplikasi Llama 3.2 90B
Groq API akan berperan sebagai jembatan antara gambar yang diunggah pengguna dan model Llama 3.2-Vision. Jika Anda ingin mengikuti dan ngoding bersama saya, pastikan Anda terlebih dahulu:
- Mendapatkan kunci API Groq dengan mendaftar di Groq Console.
- Menyimpan kunci API Anda dalam file credentials.json untuk mempermudah akses.
- Mengikuti panduan cepat dari Groq untuk instalasi dan konfigurasi.
Cuplikan kode Python di bawah ini menyiapkan aplikasi Streamlit untuk berinteraksi dengan Groq API. Kode ini mencakup:
- Mengimpor pustaka untuk pengembangan aplikasi web (Streamlit), interaksi AI (Groq), penanganan gambar (base64), dan operasi berkas (os, json).
- Membaca kunci API Groq dari file JSON terpisah untuk keamanan yang lebih baik.
- Mendefinisikan fungsi untuk mengenkode gambar ke format base64 agar pengiriman dan pemrosesan lebih efisien.
import streamlit as stfrom groq import Groqimport base64import osimport json# Set up Groq API Keyos.environ['GROQ_API_KEY'] = json.load(open('credentials.json', 'r'))['groq_token']# Function to encode the imagedef encode_image(image_path): with open(image_path, "rb") as image_file: return base64.b64encode(image_file.read()).decode('utf-8')Kita lanjutkan dengan menulis fungsi di bawah ini, yang dirancang untuk menghasilkan deskripsi tekstual dari gambar yang diunggah menggunakan Groq API. Berikut ringkasan fungsinya:
- Pengenkodean gambar: Gambar yang diunggah diubah menjadi string terenkode base64. Format ini memungkinkan data gambar mudah dikirim dalam permintaan API.
- Interaksi Groq API: Klien Groq diinisialisasi untuk memfasilitasi komunikasi dengan layanan Groq. Permintaan chat completion diformulasikan, terdiri dari:
- Prompt pengguna: "What's in this image?"
- Data gambar terenkode base64, disematkan dalam data URI. Model llama-3.2-90b-vision-preview ditentukan untuk memproses gambar dan menghasilkan deskripsi tekstual.
- Ekstraksi caption: Caption yang dihasilkan diekstraksi dari respons Groq API. Konten pesan dari pilihan pertama, yang berisi caption, dikembalikan.
# Function to generate captiondef generate_caption(uploaded_image): base64_image = base64.b64encode(uploaded_image.read()).decode('utf-8') client = Groq() chat_completion = client.chat.completions.create( messages=[ { "role": "user", "content": [ {"type": "text", "text": "What's in this image?"}, { "type": "image_url", "image_url": { "url": f"data:image/jpeg;base64,{base64_image}", }, }, ], } ], model="llama-3.2-90b-vision-preview", ) return chat_completion.choices[0].message.contentTerakhir, kita menghasilkan aplikasi web interaktif melalui Streamlit:
# Streamlit Appst.title("Llama Captioner")uploaded_file = st.file_uploader("Upload an image", type=["jpg", "jpeg", "png"])if uploaded_file is not None: # Show the uploaded image st.image(uploaded_file, caption="Uploaded Image", use_container_width=True) if st.button("Generate Caption"): with st.spinner("Generating caption..."): caption = generate_caption(uploaded_file) st.success("Caption Generated!") st.write("**Caption:**", caption)Aplikasi Streamlit Akhir: Llama Captioner
Aplikasi Streamlit ini menyediakan antarmuka yang ramah pengguna untuk image captioning. Berikut ringkasan fungsinya:
- Judul dan pengunggah berkas:
- Aplikasi menampilkan judul: "Llama Captioner".
- Komponen pengunggah berkas memungkinkan pengguna memilih berkas gambar (JPG, JPEG, atau PNG).
- Tampilan gambar:
- Setelah gambar diunggah, aplikasi menampilkannya menggunakan fungsi
st.image.
- Pembuatan caption:
- Tombol "Generate Caption" memicu proses pembuatan caption.
- Saat diklik, pemintal menandakan bahwa caption sedang dibuat.
- Fungsi generate_caption dipanggil untuk memproses gambar yang diunggah dan memperoleh caption.
- Setelah berhasil dibuat, pesan keberhasilan ditampilkan, diikuti oleh caption yang dihasilkan.
Cuplikan di bawah ini adalah kode yang berjalan ketika gambar Eddie Hall diunggah untuk menghasilkan caption. Mengejutkannya, model juga mengekstrak informasi yang tidak terlihat jelas seperti “Strongest Man” dan sebagainya.

Kesimpulan
Membangun aplikasi image captioning dengan Llama 3.2 90B dan Streamlit menunjukkan bagaimana AI canggih dapat mempermudah tugas yang sulit. Proyek ini menggabungkan model yang kuat dengan antarmuka sederhana untuk menciptakan alat yang intuitif dan mudah digunakan.
Sebagai AI Engineer, saya melihat potensi besar pada alat seperti ini. Alat ini dapat membuat teknologi lebih mudah diakses, membantu orang berinteraksi lebih baik dengan konten, dan mengotomatisasi proses dengan cara yang lebih cerdas.
Untuk melanjutkan pembelajaran Anda tentang Llama, saya merekomendasikan sumber daya berikut:
- Cara Menjalankan Llama 3.2 1B di Ponsel Android dengan Torchchat
- Tutorial Llama 3.2 dan Gradio: Bangun Aplikasi Web Multimodal
- Llama Stack: Panduan dengan Contoh Praktis
- Fine-tuning Llama 3.2 dan Menggunakannya Secara Lokal: Panduan Langkah demi Langkah
- Llama 3.3: Tutorial Langkah demi Langkah dengan Proyek Demo
Senior GenAI Engineer dan Kreator Konten yang telah meraih 20 juta tayangan dengan berbagi pengetahuan tentang GenAI dan sains data.

