|
@@ -8,7 +8,14 @@ from flask import request
|
|
|
from flask import jsonify
|
|
|
from flask import send_file
|
|
|
|
|
|
-from uuid import uuid4
|
|
|
+
|
|
|
+from app_utils import download
|
|
|
+from app_utils import generate_random_filename
|
|
|
+from app_utils import clean_me
|
|
|
+from app_utils import clean_all
|
|
|
+from app_utils import create_directory
|
|
|
+from app_utils import get_model_bin
|
|
|
+from app_utils import convertToJPG
|
|
|
|
|
|
from os import path
|
|
|
import torch
|
|
@@ -21,68 +28,70 @@ import traceback
|
|
|
|
|
|
torch.backends.cudnn.benchmark=True
|
|
|
|
|
|
-image_colorizer = get_image_colorizer(artistic=True)
|
|
|
-video_colorizer = get_video_colorizer()
|
|
|
|
|
|
os.environ['CUDA_VISIBLE_DEVICES']='0'
|
|
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
-# define a predict function as an endpoint
|
|
|
|
|
|
-@app.route("/process_image", methods=["POST"])
|
|
|
+
|
|
|
+# define a predict function as an endpoint
|
|
|
+@app.route("/process", methods=["POST"])
|
|
|
def process_image():
|
|
|
+
|
|
|
+ input_path = generate_random_filename(upload_directory,"jpeg")
|
|
|
+ output_path = os.path.join(results_img_directory, os.path.basename(input_path))
|
|
|
+
|
|
|
try:
|
|
|
- source_url = request.json["source_url"]
|
|
|
+ url = request.json["source_url"]
|
|
|
render_factor = int(request.json["render_factor"])
|
|
|
|
|
|
- upload_directory = 'upload'
|
|
|
- if not os.path.exists(upload_directory):
|
|
|
- os.mkdir(upload_directory)
|
|
|
+ download(url, input_path)
|
|
|
|
|
|
- random_filename = str(uuid4()) + '.png'
|
|
|
-
|
|
|
- image_colorizer.plot_transformed_image_from_url(url=source_url, path=os.path.join(upload_directory, random_filename), figsize=(20,20),
|
|
|
+ try:
|
|
|
+ image_colorizer.plot_transformed_image(path=input_path, figsize=(20,20),
|
|
|
+ render_factor=render_factor, display_render_factor=True, compare=False)
|
|
|
+ except:
|
|
|
+ convertToJPG(input_path)
|
|
|
+ image_colorizer.plot_transformed_image(path=input_path, figsize=(20,20),
|
|
|
render_factor=render_factor, display_render_factor=True, compare=False)
|
|
|
|
|
|
- callback = send_file(os.path.join("result_images", random_filename), mimetype='image/jpeg')
|
|
|
+ callback = send_file(output_path, mimetype='image/jpeg')
|
|
|
|
|
|
- return callback
|
|
|
+ return callback, 200
|
|
|
|
|
|
except:
|
|
|
traceback.print_exc()
|
|
|
return {'message': 'input error'}, 400
|
|
|
|
|
|
finally:
|
|
|
- os.remove(os.path.join("result_images", random_filename))
|
|
|
- os.remove(os.path.join("upload", random_filename))
|
|
|
-
|
|
|
-
|
|
|
-@app.route("/process_video", methods=["POST"])
|
|
|
-def process_video():
|
|
|
- try:
|
|
|
- source_url = request.json["source_url"]
|
|
|
- render_factor = int(request.json["render_factor"])
|
|
|
+ pass
|
|
|
+ clean_all([
|
|
|
+ input_path,
|
|
|
+ output_path
|
|
|
+ ])
|
|
|
|
|
|
- upload_directory = 'upload'
|
|
|
- if not os.path.exists(upload_directory):
|
|
|
- os.mkdir(upload_directory)
|
|
|
-
|
|
|
- random_filename = str(uuid4()) + '.mp4'
|
|
|
+if __name__ == '__main__':
|
|
|
+ global upload_directory
|
|
|
+ global results_img_directory
|
|
|
+ global image_colorizer
|
|
|
|
|
|
- video_path = video_colorizer.colorize_from_url(source_url, random_filename, render_factor)
|
|
|
- callback = send_file(os.path.join("video/result/", random_filename), mimetype='application/octet-stream')
|
|
|
+ upload_directory = '/data/upload/'
|
|
|
+ create_directory(upload_directory)
|
|
|
|
|
|
- return callback
|
|
|
+ results_img_directory = '/data/result_images/'
|
|
|
+ create_directory(results_img_directory)
|
|
|
|
|
|
- except:
|
|
|
- traceback.print_exc()
|
|
|
- return {'message': 'input error'}, 400
|
|
|
+ model_directory = '/data/models/'
|
|
|
+ create_directory(model_directory)
|
|
|
+
|
|
|
+ artistic_model_url = 'https://www.dropbox.com/s/zkehq1uwahhbc2o/ColorizeArtistic_gen.pth?dl=0'
|
|
|
+ get_model_bin(artistic_model_url, os.path.join(model_directory, 'ColorizeArtistic_gen.pth'))
|
|
|
|
|
|
- finally:
|
|
|
- os.remove(os.path.join("video/result/", random_filename))
|
|
|
|
|
|
-if __name__ == '__main__':
|
|
|
+ image_colorizer = get_image_colorizer(artistic=True)
|
|
|
+
|
|
|
port = 5000
|
|
|
host = '0.0.0.0'
|
|
|
- app.run(host=host, port=port, threaded=True)
|
|
|
+
|
|
|
+ app.run(host=host, port=port, threaded=False)
|