AnujPanthri
added basic ui
b2f488a
import os
import src
from src.utils.config_loader import constants,Config
from src.utils import config_loader
from src.utils.script_utils import validate_config
import importlib
from flask import Flask,request,Response
import PIL
import PIL.Image
import cv2
import numpy as np
import base64
import io
from flask import render_template
model_config_path = os.path.join(constants.ARTIFACT_MODEL_DIR,"config.yaml")
config = Config(model_config_path)
# validate config
validate_config(config)
config_loader.config = config
# now load model
model_dir = constants.ARTIFACT_MODEL_DIR
model_save_path = os.path.join(model_dir,"model.weights.h5")
if not os.path.exists(model_save_path):
raise Exception("No model found")
Model = importlib.import_module(f"src.{config.task}.model.models.{config.model}").Model
model = Model(model_save_path)
app = Flask(__name__)
@app.route("/",methods=["GET"])
def home():
# return "home page"
return render_template("index.html")
@app.route("/config",methods=["GET"])
def read_config():
content = open(model_config_path,"r").read()
return Response(content,mimetype='text')
@app.route("/colorize",methods=["POST"])
def colorize():
files = request.files
file = files.get('image')
print(file)
img = PIL.Image.open(file)
img = img.convert("L")
img = img.resize([config.image_size,config.image_size])
img = np.array(img)
print(img.min(),img.max())
print(img.shape)
# model.predict()
L = img[:,:,None]
L = (L/255*100).astype("uint8")
AB = model.predict(L[None])[0]
img = np.concatenate([L, AB], axis=-1)
colored_img = cv2.cvtColor(img, cv2.COLOR_LAB2RGB) * 255
print(colored_img.shape)
im = PIL.Image.fromarray(colored_img.astype("uint8"))
rawBytes = io.BytesIO()
im.save(rawBytes, "jpeg")
rawBytes.seek(0)
base64_img = (base64.b64encode(rawBytes.read())).decode("utf-8")
return {"image":base64_img}
app.run(debug=True,host="0.0.0.0",port=5000)