Spaces:
Sleeping
Sleeping
from fastai.vision.all import * | |
from fastapi import FastAPI | |
from fastapi.responses import HTMLResponse | |
from fastapi.middleware.cors import CORSMiddleware | |
from pydantic import BaseModel | |
from PIL import Image | |
import io | |
import base64 | |
app = FastAPI() | |
app.add_middleware( | |
CORSMiddleware, | |
allow_origins=["*"], | |
allow_credentials=True, | |
allow_methods=["*"], | |
allow_headers=["*"], | |
) | |
def get_x(i): | |
# Convert NumPy array to a single-channel PIL image with inverted colors | |
return PILImageBW.create(all_noise[i]) | |
def get_y(i): | |
return all_thresh[i].astype(np.float32) | |
def get_items(_): | |
return range(len(all_noise)) | |
# Load the model | |
#learn = load_learner('model.pkl') | |
learn = load_learner('model2.pkl') | |
def read_root(): | |
html_content = "<p>This is a model inference point for the <a href='https://huggingface.co/spaces/vishalbakshi/isitadigit' target='_blank'>isitadigit</a> space</p>" | |
return HTMLResponse(content=html_content) | |
class ImageData(BaseModel): | |
image: str | |
def predict_image(img): | |
img = img.convert("L") | |
img = img.resize((28, 28)) | |
img = np.array(img) | |
pred = np.clip(learn.predict(img)[0][0], 0.0, 1.0) | |
return f"{pred:.2f}" | |
async def predict(data: ImageData): | |
try: | |
image_data = base64.b64decode(data.image) | |
img = Image.open(io.BytesIO(image_data)) | |
probability = predict_image(img) | |
return {"probability": probability} | |
except Exception as e: | |
raise HTTPException(status_code=400, detail=str(e)) | |
if __name__ == "__main__": | |
import uvicorn | |
uvicorn.run(app, host="0.0.0.0", port=7860) | |