from flask import Flask, request, jsonify, redirect import os , json from imageai.Detection import ObjectDetection model_path = os.getcwd() PRE_TRAINED_MODELS = ["resnet50_coco_best_v2.0.1.h5"] # Creating ImageAI objects and loading models object_detector = ObjectDetection() object_detector.setModelTypeAsRetinaNet() object_detector.setModelPath( os.path.join(model_path , PRE_TRAINED_MODELS[0])) object_detector.loadModel() object_detections = object_detector.detectObjectsFromImage(input_image='sample.jpg') # Define model paths and the allowed file extentions UPLOAD_FOLDER = model_path ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg', 'gif']) app = Flask(__name__) app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS @app.route('/predict', methods=['POST']) def upload_file(): if request.method == 'POST': # check if the post request has the file part if 'file' not in request.files: print('No file part') return redirect(request.url) file = request.files['file'] # if user does not select file, browser also # submit a empty part without filename if file.filename == '': print('No selected file') return redirect(request.url) if file and allowed_file(file.filename): filename = file.filename file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename) file.save(file_path) try: object_detections = object_detector.detectObjectsFromImage(input_image=file_path) except Exception as ex: return jsonify(str(ex)) resp = [] for eachObject in object_detections : resp.append([eachObject["name"], round(eachObject["percentage_probability"],3) ] ) return json.dumps(dict(enumerate(resp))) if __name__ == "__main__": app.run(host='0.0.0.0', port=4445)