Ga naar hoofdinhoud

Llama 3.2 90B-tutorial: app voor afbeeldingsonderschriften met Groq & Streamlit

Leer hoe je een app voor afbeeldingsonderschriften bouwt met Streamlit voor de front-end, Llama 3.2 90B voor het genereren van onderschriften en Groq als de API.
Bijgewerkt 2 okt 2026  · 12 min lezen

Verken met AI

ChatGPTClaudePerplexity

Meta heeft eindelijk multimodaliteit toegevoegd aan het Llama-ecosysteem met de introductie van de Llama 3.2 11B & 90B vision-modellen. Deze twee modellen blinken uit in het verwerken van zowel tekst als afbeeldingen, wat me ertoe bracht een project te bouwen met de 90B-versie.

In dit artikel deel ik mijn werk en neem ik je stap voor stap mee bij het bouwen van een interactieve app voor afbeeldingsonderschriften, met Streamlit voor de front-end en Llama 3.2 90B als motor voor het genereren van onderschriften.

Waarom Llama 3.2 90B gebruiken voor een app met afbeeldingsonderschriften

Llama 3.2-Vision 90B is een state-of-the-art multimodaal large language model (LLM), gebouwd voor taken met zowel beeld- als tekstinvoer.

Het model valt op door zijn vermogen om complexe taken aan te pakken, zoals visueel redeneren, beeldherkenning en het genereren van onderschriften. Het is getraind op een enorme dataset van 6 miljard beeld-tekstparen.

Llama 3.2-Vision is een uitstekende keuze voor onze app omdat het meerdere talen ondersteunt voor tekstrtaken, al ligt de primaire focus bij beeldgerelateerde toepassingen op Engels. De belangrijkste features maken het een sterke keuze voor taken als Visual Question Answering (VQA), Document VQA en image-text retrieval, waarbij het genereren van onderschriften een van de opvallendste toepassingen is.

Laten we verkennen hoe deze mogelijkheden zich vertalen naar een praktijktoepassing zoals afbeeldingsonderschriften.

Pipeline voor afbeeldingsonderschriften

Een afbeeldingsonderschrift is het geautomatiseerd genereren van beschrijvende tekst die de inhoud van een afbeelding samenvat. Het combineert computer vision en natural language processing om visuele details in taal uit te drukken.

Traditioneel vereist het genereren van onderschriften een complexe pijplijn, vaak met aparte fasen voor beeldverwerking en taalproductie. De standaardaanpak omvat drie hoofd­stappen: beeldvoorbewerking, feature-extractie en het genereren van onderschriften.

  1. Beeldvoorbewerking: Afbeeldingen worden meestal geschaald, genormaliseerd en soms bijgesneden zodat ze voldoen aan de invoerspecificaties van het model.
  2. Feature-extractie: Visuele kenmerken worden geëxtraheerd om objecten, scènes of relevante details in de afbeelding te identificeren. In de meeste modellen is hiervoor een apart vision-model nodig om de afbeelding te interpreteren en gestructureerde data te genereren die taalmodellen begrijpen.
  3. Genereren van onderschriften: Deze geëxtraheerde kenmerken worden vervolgens gebruikt door een taalmodel om een samenhangende beschrijving te maken, waarin de objecten, context en relaties uit de visuele data worden gecombineerd.

Met Llama 3.2 90B wordt dit traditioneel ingewikkelde proces eenvoudiger. De vision-adapter van het model integreert visuele kenmerken in het kern-taalmodel, waardoor het direct afbeeldingen kan interpreteren en onderschriften kan genereren via eenvoudige prompts.

Door cross-attention-lagen in de architectuur op te nemen, stelt Llama 3.2 90B gebruikers in staat een afbeelding te beschrijven door het model simpelweg te prompten—zonder aparte verwerkingsstappen. Deze eenvoud maakt onderschriften toegankelijker en efficiënter: één prompt kan een natuurlijke, beschrijvende tekst opleveren die de essentie van een afbeelding goed vangt.

Overzicht van de app voor afbeeldingsonderschriften

Om de kracht van Llama 3.2 90B tot leven te brengen, bouwen we een simpele maar effectieve app voor afbeeldingsonderschriften met Streamlit voor de front-end en Groq voor het genereren van onderschriften.

De app laat gebruikers een afbeelding uploaden en ontvangt met slechts twee klikken een beschrijvend onderschrift van het model. Deze opzet is gebruiksvriendelijk en vereist minimale programmeerkennis om te starten.

Onze applicatie bevat de volgende features:

  1. Titel: Een prominent weergegeven titel, Llama Captioner, om het doel van de app duidelijk te maken.
  2. Uploadknop: Een interface om afbeeldingen vanaf het apparaat van de gebruiker te uploaden.
  3. Genereerknop: Een knop om het proces van onderschriften genereren te starten.
  4. Onderschrift-uitvoer: De app toont het gegenereerde onderschrift direct in de interface.

Code-implementatie voor onze Llama 3.2 90B-app

De Groq API fungeert als brug tussen de geüploade afbeelding van de gebruiker en het Llama 3.2-Vision-model. Wil je meedenken en meecoden, zorg dan eerst dat je:

  1. Je Groq API-sleutel verkrijgt door je aan te melden bij de Groq Console.
  2. Je API-sleutel opslaat in een credentials.json-bestand om toegang te vereenvoudigen.
  3. De quickstart-gids van Groq volgt voor installatie en configuratie.

De onderstaande Python-code zet een Streamlit-app op die met de Groq API communiceert. Het omvat:

  1. Imports van libraries voor webapp-ontwikkeling (Streamlit), AI-interacties (Groq), afbeeldingsverwerking (base64) en bestandsoperaties (os, json).
  2. Leest de Groq API-sleutel uit een apart JSON-bestand voor betere beveiliging.
  3. Definieert een functie om afbeeldingen te encoderen naar base64-formaat voor efficiënte overdracht en verwerking.
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')

We gaan verder met de onderstaande functie, die is bedoeld om met de Groq API een tekstuele beschrijving van een geüploade afbeelding te genereren. Dit doet de functie:

  1. Afbeelding encoderen: de geüploade afbeelding wordt omgezet naar een base64-gecodeerde string. Dit formaat maakt het eenvoudig om de afbeeldingsdata in de API-aanvraag mee te sturen.
  2. Interactie met de Groq API: er wordt een Groq-client geïnstantieerd om te communiceren met de Groq-service. Er wordt een chat-completionverzoek opgesteld, bestaande uit:
  • Een gebruikersprompt: "What's in this image?"
  • De base64-gecodeerde afbeeldingsdata, ingebed in een data-URI. Het model llama-3.2-90b-vision-preview wordt opgegeven om de afbeelding te verwerken en een tekstuele beschrijving te genereren.
  1. Extractie van het onderschrift: het gegenereerde onderschrift wordt uit het Groq API-antwoord gehaald. De inhoud van het bericht van de eerste keuze, die het onderschrift bevat, wordt geretourneerd.
# 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

Tot slot genereren we onze interactieve webapp met 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)

De uiteindelijke Streamlit-app: Llama Captioner

Deze Streamlit-app biedt een gebruiksvriendelijke interface voor het genereren van onderschriften. Zo werkt het:

  1. Titel en bestandsuploader:
  • De app toont een titel: "Llama Captioner".
  • Een bestandsuploader laat gebruikers een afbeeldingsbestand kiezen (JPG, JPEG of PNG).
  1. Weergave van de afbeelding:
  • Zodra een afbeelding is geüpload, wordt deze weergegeven met de functie st.image.
  1. Genereren van onderschriften:
  • Een knop, "Generate Caption", start het proces voor het genereren van het onderschrift.
  • Bij klikken geeft een spinner aan dat het onderschrift wordt gegenereerd.
  • De functie generate_caption wordt aangeroepen om de geüploade afbeelding te verwerken en een onderschrift op te halen.
  • Na succesvolle generatie verschijnt een succesmelding, gevolgd door het gegenereerde onderschrift.

Onderstaande snippet is code in actie waarbij een afbeelding van Eddie Hall is geüpload om het onderschrift te genereren. Verrassend genoeg haalde het zelfs informatie naar boven die niet duidelijk zichtbaar was, zoals "Strongest Man" enz.

Conclusie

Een app voor afbeeldingsonderschriften bouwen met Llama 3.2 90B en Streamlit laat zien hoe geavanceerde AI moeilijke taken eenvoudiger maakt. Dit project combineert een krachtig model met een eenvoudige interface tot een intuïtieve, toegankelijke tool.

Als AI-engineer zie ik enorm veel potentie in dit soort tools. Ze maken technologie toegankelijker, helpen mensen beter met content omgaan en automatiseren processen op slimmere manieren.

Wil je verder leren over Llama, bekijk dan deze resources:


Bhavishya Pandit's photo
Author
Bhavishya Pandit
LinkedIn
Twitter

Senior GenAI Engineer en contentmaker die 20 miljoen weergaven heeft behaald door kennis te delen over GenAI en datawetenschap.

Onderwerpen
Kunstmatige intelligentie
Large Language Models

Leer Llama met deze cursussen!

Leerpad

Basisinfo over lama's

4 uur
Probeer Llama 3 eens uit om inferenties te doen op vooraf getrainde modellen, ze aan te passen aan je eigen datasets en de prestaties te verbeteren.
Bekijk detailsRight Arrow
Start Cursus
Meer bekijkenRight Arrow
Gerelateerd

blog

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer BekijkenMeer Bekijken