File size: 723 Bytes
7519f79
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from fastapi import FastAPI, File, Form, UploadFile
from transformers import AutoModelForCausalLM, AutoTokenizer
from PIL import Image
import io

app = FastAPI()

model_id = "vikhyatk/moondream2"
revision = "2024-05-20"
model = AutoModelForCausalLM.from_pretrained(
    model_id, trust_remote_code=True, revision=revision
)
tokenizer = AutoTokenizer.from_pretrained(model_id, revision=revision)

@app.post("/analyze-image/")
async def analyze_image(file: UploadFile = File(...), question: str = Form(...)):
    contents = await file.read()
    image = Image.open(io.BytesIO(contents))
    enc_image = model.encode_image(image)
    answer = model.answer_question(enc_image, question, tokenizer)
    return {"answer": answer}