Visuell spørsmålsbesvarelse
Still spesifikke spørsmål om bildeinnhold, antall og egenskaper.
Visuell spørsmålsbesvarelse er en gratis leksjon i AI-prompt engineering på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AI-prompt engineering, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AI-prompt engineering inneholder totalt 4 leksjoner.
Visuell spørsmålsbesvarelse
Visuell spørsmålsbesvarelse (VQA) er oppgaven med å besvare spørsmål på naturlig språk om et bilde. I motsetning til bildebeskrivelse, som beskriver alt, fokuserer VQA modellen på å besvare et bestemt spørsmål.
VQA-prompter er presise og direkte, og krever ofte at modellen teller, identifiserer, sammenligner eller resonnerer om visuelt innhold. Kvaliteten på prompten avgjør om De får et presist og nyttig svar eller et vagt, generelt svar.
Grunnleggende struktur for VQA-prompter
En VQA-prompt kombinerer et bilde med et spesifikt spørsmål. Det viktigste er å formulere spørsmålet presist nok til å gi et direkte og anvendelig svar:
import anthropic, base64
client = anthropic.Anthropic(api_key='YOUR_API_KEY')
def ask_about_image(image_path, question, answer_format='Direct answer. No extra explanation.'):
with open(image_path, 'rb') as f:
img_b64 = base64.standard_b64encode(f.read()).decode('utf-8')
prompt = f'{question}\n\n{answer_format}'
r = client.messages.create(
model='claude-opus-4-5', max_tokens=150,
messages=[{'role': 'user', 'content': [
{'type': 'image', 'source': {'type': 'base64', 'media_type': 'image/jpeg', 'data': img_b64}},
{'type': 'text', 'text': prompt}
]}]
)
return r.content[0].text
# Example VQA calls (replace image.jpg with actual image)
print('VQA function defined. Ready for image questions.')Tellespørsmål
Å telle er en vanlig VQA-oppgave. Presise telleprompter gir mer nøyaktige resultater enn vage prompter:
# Vague (bad):
vague_prompt = 'How many people are there?'
# Precise (good): specifies what counts and what does not
counting_prompt = '''
How many people are visible in this image?
Count only: people whose faces OR bodies are at least 50% visible.
Do NOT count: people who are heavily cropped, cut off at the edge, or only partially visible.
Return a single number.
'''
# Even more precise: handles partial visibility explicitly
precise_count = '''
Count the number of distinct individuals visible in this image.
If a person is partially obscured, count them if more than half their body is visible.
Return JSON: {"count": integer, "partially_visible": integer, "notes": "string or null"}
'''
print('Counting prompts: vague vs precise.')
print('Precise prompts define edge cases explicitly.')Identifisering av merkevarer og logoer
Identifisering av merkevarelogoer i bilder er en vanlig oppgave innen produktanalyse. Prompten må angi hva modellen skal se etter, og hvilket format resultatet skal ha:
logo_prompt = '''
Identify all visible brand logos, company names, and product labels in this image.
For each, note:
- Brand/company name
- Where it appears in the image (top-left, center, on a product, etc.)
- Confidence: high (clearly legible) | medium (partially visible) | low (partially obscured)
Return JSON: {"brands": [{"name": str, "location": str, "confidence": str}]}
If no logos are visible, return: {"brands": []}
'''
import anthropic, base64, json
client = anthropic.Anthropic(api_key='YOUR_API_KEY')
def identify_brands(image_path):
with open(image_path, 'rb') as f:
img_b64 = base64.standard_b64encode(f.read()).decode('utf-8')
r = client.messages.create(
model='claude-opus-4-5', max_tokens=200,
messages=[{'role': 'user', 'content': [
{'type': 'image', 'source': {'type': 'base64', 'media_type': 'image/jpeg', 'data': img_b64}},
{'type': 'text', 'text': logo_prompt}
]}]
)
return json.loads(r.content[0].text)
print('Brand identification function defined.')Gjenkjenning av følelser og uttrykk
Identifisering av følelsesuttrykk i bilder krever nøye utforming av prompten, der usikkerhet tas høyde for:
emotion_prompt = '''
Describe the emotional expression of the person in this image.
Assess:
- Primary emotion: (happy, sad, angry, surprised, fearful, disgusted, neutral, or other)
- Intensity: (low, moderate, high)
- Confidence: (high if expression is clear, medium if subtle, low if face is obscured or turned away)
- Evidence: which specific facial features support your assessment
Return JSON:
{
"primary_emotion": str,
"intensity": str,
"confidence": str,
"evidence": str,
"secondary_emotion": str or null
}
If no person or face is clearly visible, return: {"primary_emotion": null, "confidence": "none", "reason": str}
'''
print(emotion_prompt)Spørsmål om romlige relasjoner
Spørsmål om hvor objekter befinner seg i forhold til hverandre, krever eksplisitt romlig vokabular i prompten:
spatial_prompt = '''
Answer questions about the spatial relationships of objects in this image.
Use these spatial terms consistently:
- Position in frame: top-left, top-center, top-right, middle-left, center, middle-right, bottom-left, bottom-center, bottom-right
- Relative position: in front of, behind, to the left of, to the right of, above, below, overlapping
- Distance: in the foreground, in the midground, in the background
Question: {question}
Answer in one or two sentences using the spatial vocabulary above.
'''
# Example questions:
questions = [
'Where is the red cup relative to the laptop?',
'Is the plant in the foreground or background?',
'What object is to the left of the person?'
]
for q in questions:
print(spatial_prompt.replace('{question}', q)[:200])
print('---')Vurdering av kvalitet og tilstand
Vurdering av kvaliteten eller tilstanden til objekter i bilder – nyttig for produktinspeksjon, eiendomsvurdering og kvalitetskontroll:
condition_prompt = '''
Assess the condition of the main subject in this image.
Rate on these dimensions (1-5 scale, 5=excellent):
- Physical condition: (1=heavily damaged, 5=like new)
- Cleanliness: (1=very dirty, 5=spotless)
- Completeness: (1=major parts missing, 5=fully intact)
For each rating, provide one-sentence evidence.
Return JSON:
{
"physical_condition": {"score": int, "evidence": str},
"cleanliness": {"score": int, "evidence": str},
"completeness": {"score": int, "evidence": str},
"overall_grade": "excellent|good|fair|poor",
"recommendation": str
}
'''
print('Condition assessment prompt defined.')
print('Useful for: product inspection, real estate, equipment maintenance.')VQA-spørsmål med ja/nei-svar
Binære ja/nei-spørsmål trenger prompter som hindrer modellen i å gi et forbeholdent tekstsvar når De trenger en enkel boolsk verdi:
def yes_no_question(image_path, question):
with open(image_path, 'rb') as f:
img_b64 = base64.standard_b64encode(f.read()).decode('utf-8')
prompt = f'''
Answer this yes/no question about the image.
Return JSON: {{"answer": "yes|no", "confidence": "high|medium|low", "reason": str}}
Do NOT answer with maybe, possibly, or a hedged statement.
If you genuinely cannot determine the answer, return {{"answer": "unclear", "confidence": "low", "reason": str}}
Question: {question}
'''
r = client.messages.create(
model='claude-opus-4-5', max_tokens=100,
messages=[{'role': 'user', 'content': [
{'type': 'image', 'source': {'type': 'base64', 'media_type': 'image/jpeg', 'data': img_b64}},
{'type': 'text', 'text': prompt}
]}]
)
return json.loads(r.content[0].text)
# Example: 'Is there a safety helmet visible in the image?'
print('Yes/no VQA function defined.')Kjeding av VQA-spørsmål
Flere VQA-spørsmål om det samme bildet kan kjedes i én prompt for å redusere antallet API-kall:
multi_question_prompt = '''
Answer all of the following questions about this image.
Return a JSON object where each key is the question ID.
Questions:
1. How many people are visible?
2. What is the approximate age range of the youngest person?
3. Is there any food visible in the image?
4. What is the dominant color in the image?
5. Is the setting indoors or outdoors?
Return JSON:
{
"q1": {"answer": str},
"q2": {"answer": str},
"q3": {"answer": "yes|no", "details": str or null},
"q4": {"answer": str},
"q5": {"answer": "indoors|outdoors|unclear"}
}
'''
print('Multi-question VQA prompt — answers 5 questions in one API call.')Håndtering av usikkerhet i VQA
VQA-spørsmål kan noen ganger ikke besvares med sikkerhet – bildet kan være uklart, det relevante elementet kan være delvis skjult, eller svaret kan være genuint tvetydig. Be om eksplisitt usikkerhet i stedet for å tvinge frem en gjetning:
uncertainty_vqa_prompt = '''
Answer this question about the image as precisely as possible.
If the answer is not clearly visible or is ambiguous, say so explicitly.
Question: {question}
Return JSON:
{
"answer": str,
"confidence": "high|medium|low|cannot_determine",
"limitation": str or null
}
For confidence levels:
- high: Answer is clearly visible and unambiguous
- medium: Visible but some uncertainty
- low: Partially visible or requires inference
- cannot_determine: Not enough visual information
Question: What brand is printed on the water bottle?
'''
print(uncertainty_vqa_prompt)Domenespesifikke VQA-prompter
Ulike domener krever forskjellig VQA-vokabular og ulike målestandarder. Domenespesifikke prompter gir mer nøyaktige og handlingsrettede svar:
# Manufacturing quality control VQA
qc_prompt = '''
Inspect this product image for quality defects.
Answer each question:
1. Are there any visible scratches or surface damage? (yes/no + location)
2. Is the product alignment within expected tolerance? (yes/no)
3. Are all required labels/markings present? (yes/no + list missing ones)
4. Overall QC result: PASS or FAIL?
Return JSON:
{"scratches": {"present": bool, "location": str or null},
"alignment_ok": bool,
"labels_complete": bool, "missing_labels": [str],
"qc_result": "PASS|FAIL",
"fail_reasons": [str]}
'''
# Food safety VQA
food_prompt = '''
Inspect this food preparation image.
1. Are gloves being worn? 2. Is hair covered? 3. Any visible contamination risk?
Return JSON: {"gloves": bool, "hair_covered": bool, "contamination_risk": bool, "details": str}
'''
print("Domain-specific QC and food safety VQA prompts defined.")Hurtigsjekk
Hvilken VQA-prompt vil mest sannsynlig gi et presist og anvendelig svar når objekter i et bilde skal telles?
VQA-prompter – viktigste poeng
Effektiv Visual Question Answering krever nøyaktig utformede prompter:
- Gjør spørsmålene spesifikke og direkte – unngå vage uttrykk som noe eller ulike
- Definer grensetilfeller eksplisitt for tellespørsmål (hva regnes som delvis synlig?)
- Angi nøyaktig utdataformat – JSON, ett tall, ja/nei – for å hindre forbeholdne svar i prosa
- Ta med konfidensnivåer for alle svar, slik at usikre resultater kan flagges
- Samle flere spørsmål om det samme bildet i ett kall for å redusere API-kostnader
- For binære ja/nei-spørsmål bør forbeholdne svar eksplisitt hindres ved å bruke uklart som en utvei
- VQA for spesifikke domener (medisin, juss, produkter) krever domenets vokabular i prompten
Lær deg AI-prompt engineering med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 53
- Leksjoner
- 199
Ofte stilte spørsmål
Er leksjonen «Visuell spørsmålsbesvarelse» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien AI-prompt engineering, inkludert «Visuell spørsmålsbesvarelse», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i AI-prompt engineering inneholder totalt 4 leksjoner.
Hva lærer jeg i «Visuell spørsmålsbesvarelse»?
Still spesifikke spørsmål om bildeinnhold, antall og egenskaper. Du øver på AI-prompt engineering med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med AI-prompt engineering?
Ingen tidligere erfaring er nødvendig. AI-prompt engineering på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Visuell spørsmålsbesvarelse»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne AI-prompt engineering-leksjonen?
Ja. Alle AI-prompt engineering-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Ledetekster for bildebeskrivelse og bildeteksting
- Visuell spørsmålsbesvarelse
- Ledetekster for sammenligning av flere bilder
- Ledetekster for OCR og dokumentanalyse