Example #1
0
 def _dump_processor(self):
     import inspect
     pymodule = inspect.getmodule(self.processor)
     pycode = inspect.getsource(pymodule)
     processor_path = self.helper.processor_path()
     processor_md5 = utils.md5(pycode)
     processor_md5 += str(time.time())
     processor_name = utils.md5(processor_md5)
     output_file = os.path.join(processor_path, processor_name + ".py")
     utils.mkdir(processor_path)
     with open(output_file, "w") as file:
         file.write(pycode)
     utils.from_pyobj_to_module_attr(
         processor_name, self.desc.attr.map.data['processor_info'])
Example #2
0
    def get_hub_name(self):
        if self.hub_name is None:
            self.hub_name = md5(str(uuid.uuid1())[-12:]) + "-" + str(
                int(time.time()))
            with open(self.filepath, "w") as fp:
                fp.write(json.dumps(default_server_config))

        return self.hub_name
Example #3
0
    def predict_image(module_name):
        if request.path.split("/")[-1] not in cv_module:
            return {"error": "Module {} is not available.".format(module_name)}
        req_id = request.data.get("id")
        global use_gpu, batch_size_dict
        img_base64 = request.form.getlist("image")
        extra_info = {}
        for item in list(request.form.keys()):
            extra_info.update({item: request.form.getlist(item)})

        for key in extra_info.keys():
            if isinstance(extra_info[key], list):
                extra_info[key] = utils.base64s_to_cvmats(
                    eval(extra_info[key][0])["b64s"]) if isinstance(
                        extra_info[key][0], str
                    ) and "b64s" in extra_info[key][0] else extra_info[key]

        file_name_list = []
        if img_base64 != []:
            for item in img_base64:
                ext = item.split(";")[0].split("/")[-1]
                if ext not in ["jpeg", "jpg", "png"]:
                    return {"result": "Unrecognized file type"}
                filename = req_id + "_" \
                           + utils.md5(str(time.time()) + item[0:20]) \
                           + "." \
                           + ext
                img_data = base64.b64decode(item.split(',')[-1])
                file_name_list.append(filename)
                with open(filename, "wb") as fp:
                    fp.write(img_data)
        else:
            file = request.files.getlist("image")
            for item in file:
                file_name = req_id + "_" + item.filename
                item.save(file_name)
                file_name_list.append(file_name)
        module = default_module_manager.get_module(module_name)
        predict_func_name = cv_module_method.get(module_name, "")
        if predict_func_name != "":
            predict_func = eval(predict_func_name)
        else:
            module_type = module.type.split("/")[-1].replace("-", "_").lower()
            predict_func = eval("predict_" + module_type)
        batch_size = batch_size_dict.get(module_name, 1)
        if file_name_list == []:
            file_name_list = None
        if extra_info == {}:
            extra_info = None
        results = predict_func(module, file_name_list, req_id, batch_size,
                               extra_info)
        r = {"results": str(results)}
        return r
Example #4
0
    def predict_iamge(module_name):
        global results_dict
        req_id = request.data.get("id")

        img_base64 = request.form.get("image", "")
        if img_base64 != "":
            img_base64 = request.form.get("image", "")
            ext = img_base64.split(";")[0].split("/")[-1]
            if ext not in ["jpeg", "jpg", "png"]:
                return {"result": "Unrecognized file type"}
            filename = utils.md5(str(time.time()) +
                                 str(img_base64)) + "." + ext
            base64_head = img_base64.split(',')[0]
            img_data = base64.b64decode(img_base64.split(',')[-1])
            with open(filename, "wb") as fp:
                fp.write(img_data)
        else:
            file = request.files["image"]
            filename = file.filename
            ext = file.filename.split(".")[-1]
            if ext not in ["jpeg", "jpg", "png"]:
                return {"result": "Unrecognized file type"}
            base64_head = "data:image/" + ext + ";base64"
            filename = utils.md5(filename) + '.' + ext
            file.save(filename)
        score = time.time()
        file_list = [filename]
        if queues_dict[module_name].qsize(
        ) + 1 > queues_dict[module_name].get_attribute("maxsize"):
            return {"result": "Too many visitors now, please come back later."}
        data_2_item(file_list, req_id, score, module_name)
        data_num = len(file_list)
        results = []
        result_len = 0
        start_time = time.time()
        while result_len != data_num:
            result_len = len(results_dict.get(req_id, []))
            if time.time() - start_time > time_out:
                results_dict.pop(req_id, None)
                return {"result": "Request time out."}
        results = results_dict.get(req_id)
        results_dict.pop(req_id, None)
        results = [i[1] for i in sorted(results, key=lambda k: k[0])]
        filename = results[0].get("path")
        ext = filename.split(".")[-1]
        if filename is not None:
            output_file = os.path.join("./output", filename)
            if output_file is not None and os.path.exists(output_file):
                with open(output_file, "rb") as fp:
                    output_img_base64 = base64.b64encode(fp.read())
                os.remove(filename)
                os.remove(output_file)
                results = {
                    "desc":
                    str(results[0]["data"]),
                    "output_img":
                    base64_head + "," +
                    str(output_img_base64).replace("b'", "").replace("'", "")
                }
                return {"result": results}
        return {"result": str(results)}
Example #5
0
 def before_request():
     request.data = {
         "id": utils.md5(request.remote_addr + str(time.time()))
     }
     print(request.remote_addr)
     pass
Example #6
0
# Copyright (c) 2019  PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import time
import uuid
from paddlehub.common.utils import md5

HUB_SERVERS = ["http://paddlepaddle.org.cn/paddlehub"]
hub_name = md5(str(uuid.uuid1())[-12:]) + "-" + str(int(time.time()))

default_server_config = {
    "server_url": HUB_SERVERS,
    "resource_storage_server_url": "https://bj.bcebos.com/paddlehub-data/",
    "debug": False,
    "log_level": "DEBUG",
    "hub_name": hub_name
}
Example #7
0
    def predict_image(module_name):
        if request.path.split("/")[-1] not in cv_module_info.modules_info:
            return {"error": "Module {} is not available.".format(module_name)}
        module_info = cv_module_info.get_module_info(module_name)
        if module_info["code_version"] == "v2":
            results = {}
            # results = predict_v2(module_info, inputs)
            results.update({
                "Warnning":
                "This usage is out of date, please "
                "use 'application/json' as "
                "content-type to post to "
                "/predict/%s. See "
                "'https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.6/docs/tutorial/serving.md' for more details."
                % (module_name)
            })
            return gen_result("-1", results, "")
        req_id = request.data.get("id")
        img_base64 = request.form.getlist("image")
        extra_info = {}
        for item in list(request.form.keys()):
            extra_info.update({item: request.form.getlist(item)})

        for key in extra_info.keys():
            if isinstance(extra_info[key], list):
                extra_info[key] = utils.base64s_to_cvmats(
                    eval(extra_info[key][0])["b64s"]) if isinstance(
                        extra_info[key][0], str
                    ) and "b64s" in extra_info[key][0] else extra_info[key]

        file_name_list = []
        if img_base64 != []:
            for item in img_base64:
                ext = item.split(";")[0].split("/")[-1]
                if ext not in ["jpeg", "jpg", "png"]:
                    return gen_result("-1", "Unrecognized file type", "")
                filename = req_id + "_" \
                           + utils.md5(str(time.time()) + item[0:20]) \
                           + "." \
                           + ext
                img_data = base64.b64decode(item.split(',')[-1])
                file_name_list.append(filename)
                with open(filename, "wb") as fp:
                    fp.write(img_data)
        else:
            file = request.files.getlist("image")
            for item in file:
                file_name = req_id + "_" + item.filename
                item.save(file_name)
                file_name_list.append(file_name)

        module = module_info["module"]
        predict_func_name = cv_module_info.cv_module_method.get(module_name, "")
        if predict_func_name != "":
            predict_func = eval(predict_func_name)
        else:
            module_type = module.type.split("/")[-1].replace("-", "_").lower()
            predict_func = eval("predict_" + module_type)
        if file_name_list == []:
            file_name_list = None
        if extra_info == {}:
            extra_info = None
        results = predict_func(module_info, file_name_list, req_id, extra_info)

        return results