This repo contains example apps for exposing the yolo5 object detection model from pytorch hub via a flask api/app.
Simple app consisting of a form where you can upload an image, and see the inference result of the model in the browser. Run:
$ python3 webapp.py --port 5000
then visit http://localhost:5000/ in your browser:
Processed images are saved in the static
directory with a datetime for the filename.
Simple rest API exposing the model for consumption by another service. Run:
$ python3 restapi.py --port 5000 --model yolov5s
Then use curl to perform a request:
$ curl -X POST -F image=@tests/zidane.jpg 'http://localhost:5000/v1/object-detection/yolov5'
The model inference results are returned:
[{'class': 0,
'confidence': 0.8197850585,
'name': 'person',
'xmax': 1159.1403808594,
'xmin': 750.912902832,
'ymax': 711.2583007812,
'ymin': 44.0350036621},
{'class': 0,
'confidence': 0.5667674541,
'name': 'person',
'xmax': 1065.5523681641,
'xmin': 116.0448303223,
'ymax': 713.8904418945,
'ymin': 198.4603881836},
{'class': 27,
'confidence': 0.5661227107,
'name': 'tie',
'xmax': 516.7975463867,
'xmin': 416.6880187988,
'ymax': 717.0524902344,
'ymin': 429.2020568848}]
Run locally for dev, requirements mostly originate from yolov5:
python3 -m venv venv
source venv/bin/activate
(venv) $ pip install -r requirements.txt
(venv) $ python3 restapi.py --port 5000
An example python script to perform inference using requests is given in tests/test_request.py
The example dockerfile shows how to expose the rest API:
# Build
docker build -t yolov5-flask .
# Run
docker run -p 5000:5000 yolov5-flask:latest
- https://github.com/ultralytics/yolov5
- https://github.com/jzhang533/yolov5-flask (this repo was forked from here)
- https://github.com/avinassh/pytorch-flask-api-heroku