-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
69 lines (54 loc) · 1.85 KB
/
app.py
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
from flask import Flask, make_response, jsonify, request
import json
from keras.models import load_model
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras.preprocessing import image
import uuid
import os
import urllib.request
app = Flask(__name__)
model = load_model('./models/epochs20.h5')
def url_to_jpg(uri,file_path):
urllib.request.urlretrieve(uri,file_path)
@app.route('/', methods = ["POST"])
def predict():
# load model
data = request.get_json()
uri = data['imageUrl']
print(uri)
# uri = "https://firebasestorage.googleapis.com/v0/b/pacman-73ff5.appspot.com/o/events%2Fa%40g.com%2Fimage0.279252745985788751234?alt=media&token=eed00af5-5563-4458-91bd-a46e30a9fbe5"
id = str(uuid.uuid1())
filename = id+".jpg"
file_path = "images/" + filename
url_to_jpg(uri,file_path)
# print("file Saved")
img_path = file_path
img = image.load_img(img_path, target_size=(224, 224))
img_array = image.img_to_array(img)
new_array = img_array.reshape(1,224,224,3)
prediction = model.predict(new_array)
#####################################################
#### status = 1 means accident ####
#### status = 0 means noAccident ####
#####################################################
data = {"status" : 0 }
if(prediction[0] < 0.5) :
print("Accident")
data["status"] = 1
else:
print("No Accident Yet")
response = make_response(
jsonify(
data
),
200,
)
response.headers["Content-Type"] = "application/json"
os.remove(file_path)
# print("file deleted")
return response
# return "hey"
if __name__ == '__main__':
app.run()