I have code to run yolo in fastapi :
from fastapi import FastAPI, UploadFile, File
from ultralytics import YOLO
from PIL import Image
import io
app = FastAPI()
model = YOLO('yolov8n.yaml')
model = YOLO('runs/detect/train/weights/best.pt')
@app.post("/detect")
async def detect(file: UploadFile = File(...)):
contents = await file.read()
img = Image.open(io.BytesIO(contents))
results = model.predict(source=img, save=True)
return {
"result": str(results)
}
Show error :
[WARNING] Application callable raised an exception
[ERROR] Exception in callback <built-in method _loop_step of builtins.CallbackTaskHTTP object at 0x163b3bd30>
handle: <Handle CallbackTaskHTTP._loop_step>
Traceback (most recent call last):
File "uvloop/cbhandles.pyx", line 61, in uvloop.loop.Handle._run
File "/lib/python3.10/site-packages/fastapi/applications.py", line 270, in __call__
await super().__call__(scope, receive, send)
File "/lib/python3.10/site-packages/starlette/applications.py", line 124, in __call__
await self.middleware_stack(scope, receive, send)
File "/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in __call__
raise exc
File "/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in __call__
await self.app(scope, receive, _send)
File "/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
raise exc
File "/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
await self.app(scope, receive, sender)
File "/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
raise e
File "/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
await self.app(scope, receive, send)
File "/lib/python3.10/site-packages/starlette/routing.py", line 706, in __call__
await route.handle(scope, receive, send)
File "/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
await self.app(scope, receive, send)
File "/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
response = await func(request)
File "/lib/python3.10/site-packages/fastapi/routing.py", line 235, in app
raw_response = await run_endpoint_function(
File "/lib/python3.10/site-packages/fastapi/routing.py", line 161, in run_endpoint_function
return await dependant.call(**values)
File "detections/main.py", line 20, in detect
results = model.predict(source=img, save=True, project="foto_ayam")
File "/lib/python3.10/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
File "/lib/python3.10/site-packages/ultralytics/engine/model.py", line 254, in predict
return self.predictor.predict_cli(source=source) if is_cli else self.predictor(source=source, stream=stream)
File "/lib/python3.10/site-packages/ultralytics/engine/predictor.py", line 195, in __call__
return list(self.stream_inference(source, model, *args, **kwargs)) # merge list of Result into one
File "/lib/python3.10/site-packages/torch/utils/_contextlib.py", line 35, in generator_context
response = gen.send(None)
File "/lib/python3.10/site-packages/ultralytics/engine/predictor.py", line 276, in stream_inference
self.save_preds(vid_cap, i, str(self.save_dir / p.name))
File "/lib/python3.10/site-packages/ultralytics/engine/predictor.py", line 330, in save_preds
cv2.imwrite(save_path, im0)
cv2.error: OpenCV(4.6.0) /Users/xperience/actions-runner/_work/opencv-python/opencv-python/opencv/modules/imgcodecs/src/loadsave.cpp:730: error: (-2:Unspecified error) could not find a writer for the specified extension in function 'imwrite_'
But if parameter save=False everything work well :
results = model.predict(source=img, save=False)
I am also has try running detection YOLOv8 without FASTAPI all work well. How to solve this bug ? Thanks