Thompson001 commited on
Commit
d6d90b8
Β·
verified Β·
1 Parent(s): b7fd445

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -12
app.py CHANGED
@@ -1,6 +1,8 @@
1
  from fastapi import FastAPI, UploadFile, File
2
  from fastapi.middleware.cors import CORSMiddleware
3
  from ultralytics import YOLO
 
 
4
  import numpy as np
5
  from PIL import Image
6
  import io
@@ -8,6 +10,7 @@ import uvicorn
8
 
9
  app = FastAPI()
10
 
 
11
  app.add_middleware(
12
  CORSMiddleware,
13
  allow_origins=["*"],
@@ -16,10 +19,23 @@ app.add_middleware(
16
  allow_headers=["*"],
17
  )
18
 
19
- print("πŸ”΅ Loading model: best.pt")
20
- model = YOLO("best.pt")
21
- print("βœ… Model loaded")
 
 
 
 
 
 
 
 
 
 
22
 
 
 
 
23
  @app.post("/predict")
24
  async def predict(img: UploadFile = File(...)):
25
  try:
@@ -30,20 +46,24 @@ async def predict(img: UploadFile = File(...)):
30
  results = model(np_img)
31
  result = results[0]
32
 
33
- has_mask = result.masks is not None
34
-
35
- if not has_mask:
36
  return {
37
- "data": [{"label": "normal", "confidence": 1.0}]
 
 
38
  }
39
 
40
- if result.boxes is not None and len(result.boxes) > 0:
41
- conf = float(result.boxes.conf.max().item())
42
- else:
43
- conf = 0.85
44
 
45
  return {
46
- "data": [{"label": "crack", "confidence": conf}]
 
 
 
 
 
47
  }
48
 
49
  except Exception as e:
@@ -53,5 +73,6 @@ async def predict(img: UploadFile = File(...)):
53
  "error": str(e)
54
  }
55
 
 
56
  if __name__ == "__main__":
57
  uvicorn.run(app, host="0.0.0.0", port=7860)
 
1
  from fastapi import FastAPI, UploadFile, File
2
  from fastapi.middleware.cors import CORSMiddleware
3
  from ultralytics import YOLO
4
+ from huggingface_hub import hf_hub_download
5
+
6
  import numpy as np
7
  from PIL import Image
8
  import io
 
10
 
11
  app = FastAPI()
12
 
13
+ # CORS
14
  app.add_middleware(
15
  CORSMiddleware,
16
  allow_origins=["*"],
 
19
  allow_headers=["*"],
20
  )
21
 
22
+ # ===========================================
23
+ # DOWNLOAD CRACK MODEL FROM HF
24
+ # ===========================================
25
+ print("πŸ”΅ Downloading crack model from Hugging Face...")
26
+ model_path = hf_hub_download(
27
+ repo_id="cazzz307/yolov8-crack-detection",
28
+ filename="best.pt"
29
+ )
30
+ print("πŸ“₯ Model downloaded:", model_path)
31
+
32
+ print("πŸ”΅ Loading YOLO model...")
33
+ model = YOLO(model_path)
34
+ print("βœ… Crack Model Loaded Successfully")
35
 
36
+ # ===========================================
37
+ # PREDICTION API
38
+ # ===========================================
39
  @app.post("/predict")
40
  async def predict(img: UploadFile = File(...)):
41
  try:
 
46
  results = model(np_img)
47
  result = results[0]
48
 
49
+ # crack detection: check boxes
50
+ if result.boxes is None or len(result.boxes) == 0:
 
51
  return {
52
+ "data": [
53
+ {"label": "normal", "confidence": 1.0}
54
+ ]
55
  }
56
 
57
+ # There are crack boxes
58
+ conf = float(result.boxes.conf.max().item())
 
 
59
 
60
  return {
61
+ "data": [
62
+ {
63
+ "label": "crack",
64
+ "confidence": conf
65
+ }
66
+ ]
67
  }
68
 
69
  except Exception as e:
 
73
  "error": str(e)
74
  }
75
 
76
+
77
  if __name__ == "__main__":
78
  uvicorn.run(app, host="0.0.0.0", port=7860)