File size: 1,497 Bytes
800d968
 
 
 
3a395e0
800d968
 
 
 
 
 
 
3a395e0
 
 
800d968
 
 
6f246e5
800d968
 
6f246e5
800d968
db5c2fe
800d968
 
 
 
 
 
1402482
 
800d968
 
1402482
 
800d968
 
 
 
 
 
 
 
 
4f2d4d3
2f1e708
4f2d4d3
800d968
 
3a395e0
800d968
3a395e0
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
from flask import Flask, request, redirect, url_for, flash, jsonify
from detect_object import predict_object_function
import os
from flask_wtf import CSRFProtect
from waitress import serve

app = Flask(__name__)
app.config['SECRET_KEY'] = '8BYkEfBA6O6zWlSihBXox7C0sKR6b'
csrf = CSRFProtect(app)



@app.route('/')
def home():
    return "Hello Wav2Lip - Flask API Running on Hugging Face Spaces!"


@app.route('/predict_object', methods=['POST'])
@csrf.exempt
def predict_object():
    # Receive image file from frontend
    image_file = request.files['media']

    image_path = os.path.join('predict_image', image_file.filename)
    image_file.save(image_path)

    try:
        result = predict_object_function(image_path)
        print(result)
    except RuntimeError as e:
        text = f"{str(e)})", 'danger'
        return {"response": text}
    except Exception as e:
        print(str(e))
        text = "An error occurred during prediction. Please try again"
        return {"response": text}
    finally:
        os.remove(image_path)

    imgs = result
    no_p = len(imgs)
    if no_p < 1:
        response = {"response": "No object detected."}
        return jsonify(response)
    percentage = result[1]
    # response = {'response': f"Detected {result[0]} with confidence of {round(percentage, 2)}%"}
    response = {'response': f"{result[0]}", "confidence": round(percentage, 2)}

    return jsonify(response)


if __name__ == '__main__':
    serve(app, host='0.0.0.0', port=7860)