Lewati ke konten utama

Tutorial Llama 3.2 90B: Aplikasi Image Captioning dengan Groq & Streamlit

Pelajari cara membangun aplikasi image captioning menggunakan Streamlit untuk front end, Llama 3.2 90B untuk menghasilkan caption, dan Groq sebagai API.
Diperbarui 28 Sep 2026  · 12 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

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.

  1. Prapemrosesan gambar: Gambar biasanya diubah ukurannya, dinormalisasi, dan sesekali dipotong agar sesuai dengan spesifikasi input model.
  2. 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.
  3. 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:

  1. Judul: Judul yang ditampilkan secara mencolok, Llama Captioner, untuk menegaskan tujuan aplikasi.
  2. Tombol unggah: Antarmuka untuk mengunggah gambar dari perangkat pengguna.
  3. Tombol Generate: Tombol untuk memulai proses pembuatan caption.
  4. 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:

  1. Mendapatkan kunci API Groq dengan mendaftar di Groq Console.
  2. Menyimpan kunci API Anda dalam file credentials.json untuk mempermudah akses.
  3. 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:

  1. Mengimpor pustaka untuk pengembangan aplikasi web (Streamlit), interaksi AI (Groq), penanganan gambar (base64), dan operasi berkas (os, json).
  2. Membaca kunci API Groq dari file JSON terpisah untuk keamanan yang lebih baik.
  3. 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:

  1. Pengenkodean gambar: Gambar yang diunggah diubah menjadi string terenkode base64. Format ini memungkinkan data gambar mudah dikirim dalam permintaan API.
  2. 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.
  1. 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.content

Terakhir, 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:

  1. Judul dan pengunggah berkas:
  • Aplikasi menampilkan judul: "Llama Captioner".
  • Komponen pengunggah berkas memungkinkan pengguna memilih berkas gambar (JPG, JPEG, atau PNG).
  1. Tampilan gambar:
  • Setelah gambar diunggah, aplikasi menampilkannya menggunakan fungsi st.image.
  1. 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:


Bhavishya Pandit's photo
Author
Bhavishya Pandit
LinkedIn
Twitter

Senior GenAI Engineer dan Kreator Konten yang telah meraih 20 juta tayangan dengan berbagi pengetahuan tentang GenAI dan sains data.

Topik
Kecerdasan Buatan
Large Language Models

Pelajari Llama dengan kursus-kursus ini!

Program

Llama Fundamentals

4 jam
Coba gunakan Llama 3 untuk menjalankan inferensi pada model yang telah dilatih sebelumnya, menyesuaikan model tersebut pada dataset kustom, dan mengoptimalkan kinerjanya.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

Lihat SelengkapnyaLihat Selengkapnya