-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
51 lines (33 loc) · 1.36 KB
/
app.py
File metadata and controls
51 lines (33 loc) · 1.36 KB
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
from flask import Flask, request, jsonify, render_template
import os
from flask_cors import CORS, cross_origin
from cnnClassifier.utils.common import decodeImage
from cnnClassifier.pipeline.prediction import PredictionPipeline
os.putenv('LANG', 'en_US.UTF-8')
os.putenv('LC_ALL', 'en_US.UTF-8')
app = Flask(__name__)
CORS(app)
class ClientApp:
def __init__(self):
self.filename = "inputImage.jpg"
self.classifier = PredictionPipeline(self.filename)
@app.route("/", methods=['GET'])
@cross_origin()
def home():
return render_template('index.html')
@app.route("/train", methods=['GET','POST'])
@cross_origin()
def trainRoute():
#os.system("python main.py") ## this if you want to run pipeline without logging a model version in dvc. dvc is good when you dont want to do the entire thing of downloading data, train, the simple main.py will just do it blindly, dvc knows what has changes and only do that part (part: data ingestion, trasin, evaluate)
os.system("dvc repro")
return "Training done successfully!"
@app.route("/predict", methods=['POST'])
@cross_origin()
def predictRoute():
image = request.json['image']
decodeImage(image, clApp.filename)
result = clApp.classifier.predict()
return jsonify(result)
if __name__ == "__main__":
clApp = ClientApp()
app.run(host='0.0.0.0', port=8080,debug=True) #AWS port