teja141290's picture
Initial commit for Hugging Face Space deployment
f01c86d
# --- Model download logic (Hugging Face Hub) ---
import os
import requests
def download_if_missing(url, dest):
if not os.path.exists(dest):
print(f"Downloading model from {url} to {dest}...")
os.makedirs(os.path.dirname(dest), exist_ok=True)
with requests.get(url, stream=True) as r:
r.raise_for_status()
with open(dest, "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)
print("Download complete.")
# Hugging Face direct download links
DAMAGE_MODEL_URL = "https://huggingface.co/AItoolstack/car_damage_detection/resolve/main/yolov8_models/damage/weights/weights/best.pt"
PARTS_MODEL_URL = "https://huggingface.co/AItoolstack/car_damage_detection/resolve/main/yolov8_models/parts/weights/weights/best.pt"
DAMAGE_MODEL_PATH = os.path.join("models", "damage", "weights", "weights", "best.pt")
PARTS_MODEL_PATH = os.path.join("models", "parts", "weights", "weights", "best.pt")
download_if_missing(DAMAGE_MODEL_URL, DAMAGE_MODEL_PATH)
download_if_missing(PARTS_MODEL_URL, PARTS_MODEL_PATH)
from fastapi import FastAPI, File, UploadFile, BackgroundTasks
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from fastapi.responses import JSONResponse, HTMLResponse
from fastapi.middleware.cors import CORSMiddleware
import uvicorn
from datetime import datetime
import aiofiles
from pathlib import Path
import uuid
from app.routers import inference
app = FastAPI(title="Car Damage Detection API")
# CORS middleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Mount static files
app.mount("/static", StaticFiles(directory="app/static"), name="static")
templates = Jinja2Templates(directory="app/templates")
# Include routers
app.include_router(inference.router)
if __name__ == "__main__":
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)