Spaces:
Runtime error
Runtime error
File size: 2,513 Bytes
85b1295 30dbf30 85b1295 f435078 6db03a3 3d15ada b846e8e 6db03a3 b846e8e 2aef184 85b1295 b15ad93 85b1295 30dbf30 b15ad93 30dbf30 01b0791 85b1295 b15ad93 85b1295 b846e8e 85b1295 2aef184 b15ad93 c70bcd8 b846e8e b15ad93 5d5fa27 78aa9ad 22b06d6 b846e8e 7d155ba 5ef388b 7d155ba 5ef388b 7d155ba b846e8e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
"""
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 '<iframe frameBorder="0" height="100%" src="{}/?__dark-theme={}" width="100%"></iframe>'.format(
os.getenv('INACCEL_URL'),request.args.get('__dark-theme', 'false'))'''
model = torch.hub.load('ultralytics/yolov5', 'custom', path='best2.pt', force_reload=True) # force_reload to recache
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.imgs # array of original images (as np array) passed to model for inference
results.render() # updates results.imgs with boxes and labels
for img in results.imgs:
buffered = BytesIO()
img_base64 = Image.fromarray(img)
img_base64.save(buffered, format="JPEG")
return base64.b64encode(buffered.getvalue()).decode('utf-8') # base64 encoded image with results
if __name__ == '__main__':
app.run(host='0.0.0.0', port=7860)
|