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)