/yolov5-flask

Example app/api for exposing yolov5 model via flask

Primary LanguagePythonMIT LicenseMIT

Yolov5 object detection model deployment using flask

This repo contains example apps for exposing the yolo5 object detection model from pytorch hub via a flask api/app.

Web 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:

Rest API

Simple rest API exposing the model for consumption by another service. Run:

$ python3 restapi.py --port 5000

Then use curl to perform a request:

$ curl -X POST -F image=@tests/zidane.jpg 'http://localhost:5000/v1/object-detection/yolov5s'

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}]

An example python script to perform inference using requests is given in tests/test_request.py

Run & Develop locally

Run locally and dev:

  • python3 -m venv venv
  • source venv/bin/activate
  • (venv) $ pip install -r requirements.txt
  • (venv) $ python3 webapp.py --port 5000

Docker

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

reference