Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, File, UploadFile | |
| from transformers import AutoImageProcessor, AutoModelForImageClassification | |
| from PIL import Image | |
| import torch, io, os, uvicorn | |
| app = FastAPI() | |
| MODEL_NAME = "yangy50/garbage-classification" | |
| processor = AutoImageProcessor.from_pretrained(MODEL_NAME) | |
| model = AutoModelForImageClassification.from_pretrained(MODEL_NAME) | |
| model.eval() | |
| def root(): | |
| return {"status": "ok"} | |
| async def predict(file: UploadFile = File(...)): | |
| image = Image.open(io.BytesIO(await file.read())).convert("RGB") | |
| inputs = processor(images=image, return_tensors="pt") | |
| with torch.no_grad(): | |
| outputs = model(**inputs) | |
| probs = torch.softmax(outputs.logits, dim=1)[0] | |
| return { | |
| model.config.id2label[i]: float(probs[i]) | |
| for i in range(len(probs)) | |
| } | |
| if __name__ == "__main__": | |
| uvicorn.run(app, host="0.0.0.0", port=int(os.environ.get("PORT", 7860))) |