""" Run a rest API exposing the yolov5s object detection model """ import io import torch from flask import Flask, request from PIL import Image from waitress import serve import subprocess import argparse import os ''' #subprocess.run(["export", "FLASK_APP","=","app.py"]) app = Flask(__name__) DETECTION_URL = "/v1/detect" @app.route(DETECTION_URL,methods=["POST"]) def predict(): #model = torch.hub.load('ultralytics/yolov5', 'custom', path='best2.pt', force_reload=True) # force_reload to recache if not request.method == "POST": return if request.files.get("image"): image_file = request.files["image"] image_bytes = image_file.read() img = Image.open(io.BytesIO(image_bytes)) results = model(img, size=640) # reduce size=320 for faster inference results=results.pandas().xyxy[0].to_json(orient="records") return f"{results}" if __name__ == "__main__": #subprocess.run(["export","FLASK_ENV","=","development"]) app.run(host="0.0.0.0", port=7860) # debug=True causes Restarting with stat #serve(app, host="0.0.0.0", port=7860) if __name__ == "__main__": model = torch.hub.load('ultralytics/yolov5', 'custom', path='best2.pt', force_reload=True) # force_reload to recache app.run(host="0.0.0.0", port=7860,debug =True) # debug=True causes Restarting with stat ''' app = Flask(__name__) @app.route('/') def index(): return ''.format( os.getenv('INACCEL_URL'), flask.request.args.get('__dark-theme', 'false')) if __name__ == '__main__': app.run(host='0.0.0.0', port=7860)