File size: 2,797 Bytes
d698b38
 
 
 
 
 
 
 
 
5693311
6e83a12
 
06381b2
3ccaa2b
 
 
ebf9275
8f4b931
 
ebf9275
8f4b931
 
ebf9275
3ccaa2b
d698b38
5693311
d698b38
 
 
 
 
5693311
d698b38
5693311
d698b38
 
5693311
d698b38
5693311
d698b38
 
5693311
d698b38
5693311
d698b38
 
5693311
d698b38
5693311
9c8a778
94c8c3a
9c8a778
9ff7681
94c8c3a
9ff7681
d698b38
 
5693311
d698b38
 
 
5693311
 
 
d698b38
 
 
 
5693311
d698b38
5693311
 
d698b38
 
 
5693311
bc0647c
5693311
 
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
from flask import Flask, request, jsonify
from tensorflow.keras.preprocessing import image
import numpy as np
from tensorflow.keras.models import load_model
from PIL import Image
from io import BytesIO

app = Flask(__name__)

# Load the trained models
# model_female_leg = load_model('trained_model_female_leg.h5')
# model_female_arm = load_model('trained_model_female_arm.h5')
# model_male_arm = load_model('trained_model_male_arm.h5')
#model_male_leg = load_model('YourModelName.h5')
#model_male_arm = load_model('YourModelName.h5')
#model_female_arm = load_model('YourModelName.h5')
#model_female_leg = load_model('model.h5')
#model_male_leg = load_model('trained_model_male_leg.h5')


model_male_leg = load_model('model.h5')
model_male_arm = load_model('model.h5')
model_female_leg = load_model('YourModelName.h5')
model_female_arm = load_model('model.h5')

# Define class labels for each model
class_label_male_leg = ['High', 'Moderate', 'Low']
class_label_male_arm = ['High', 'Moderate', 'Low']
class_labels_female_leg = ['High', 'Moderate', 'Low']
class_labels_female_arm = ['High', 'Moderate', 'Low']

# Define route for model prediction for model 1
@app.route('/predict_model_male_leg', methods=['POST'])
def predict_model1():
    return predict(request.files['file'], model_male_leg, class_label_male_leg)

# Define route for model prediction for model 2
@app.route('/predict_model_male_arm', methods=['POST'])
def predict_model2():
    return predict(request.files['file'], model_male_arm, class_label_male_arm)

# Define route for model prediction for model 3
@app.route('/predict_model_female_leg', methods=['POST'])
def predict_model3():
    return predict(request.files['file'], model_female_leg, class_labels_female_leg)

# Define route for model prediction for model 4
@app.route('/predict_model_female_arm', methods=['POST'])
def predict_model4():
    return predict(request.files['file'], model_female_arm, class_labels_female_arm)

# Define route for ping
@app.route('/', methods=['GET'])
def ping():
    return jsonify({'PING': 'Success!'})

def predict(file, model, class_labels):
    # Check if file is provided
    if not file:
        return jsonify({'error': 'No file provided'})

    # Load and preprocess the image
    img = Image.open(BytesIO(file.read()))  # Convert FileStorage to io.BytesIO
    img = img.resize((150, 150))  # Resize image to match model's input shape
    img_array = image.img_to_array(img)
    img_array = np.expand_dims(img_array, axis=0)
    img_array /= 255.0

    # Make prediction
    prediction = model.predict(img_array)

    # Interpret the result
    predicted_class = np.argmax(prediction)
    predicted_label = class_labels[predicted_class]

    return jsonify( predicted_label)

# if __name__ == '__main__':
#     app.run(debug=True)