PaddlePaddle / PaddleOCR

Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)
https://paddlepaddle.github.io/PaddleOCR/
Apache License 2.0
43.91k stars 7.8k forks source link

模型chinese_ocr_db_crnn_mobile部署hub-serving的方式 #546

Closed pkuyilong closed 4 years ago

pkuyilong commented 4 years ago
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
ocr = hub.Module(name="chinese_ocr_db_crnn_mobile")
MissPenguin commented 4 years ago

ocr = hub.Module(name="chinese_ocr_db_crnn_mobile") 使用的是paddlehub内置的模型,本质就是PaddleOCR的中文模型,只是进行了封装,可以一键调用,要用这个模型起服务的话,用这种格式的命令:hub serving start -m chinese_ocr_db_crnn_mobile -p 8866,优点是使用方便,缺点是无法替换模型,调整参数。

PaddleOCR的deploy中的hubserving部署,逻辑和上面封装好的是类似的,只是把更多接口暴露了出来,方便替换模型、调整参数,具体参数都在params.py中,还可以在module.py中改写逻辑,比如可以在这里加入使用drop_score对结果进行过滤再返回的逻辑,目前是服务端不做过滤,将所有结果返回,因为不同用户对阈值的要求可能不一样,就没有写死,你可以对返回后的结果再做过滤。

pkuyilong commented 4 years ago

ocr = hub.Module(name="chinese_ocr_db_crnn_mobile") 使用的是paddlehub内置的模型,本质就是PaddleOCR的中文模型,只是进行了封装,可以一键调用,要用这个模型起服务的话,用这种格式的命令:hub serving start -m chinese_ocr_db_crnn_mobile -p 8866,优点是使用方便,缺点是无法替换模型,调整参数。

PaddleOCR的deploy中的hubserving部署,逻辑和上面封装好的是类似的,只是把更多接口暴露了出来,方便替换模型、调整参数,具体参数都在params.py中,还可以在module.py中改写逻辑,比如可以在这里加入使用drop_score对结果进行过滤再返回的逻辑,目前是服务端不做过滤,将所有结果返回,因为不同用户对阈值的要求可能不一样,就没有写死,你可以对返回后的结果再做过滤。

test_img_path = [os.path.join(image_dir, name) for name in os.listdir(image_dir)]
for img_path in test_img_path:
    np_images = list()
    try:
        image = cv2.imread(img_path)
        np_images.append(image)

        start_time = time.time()
        results = ocr.recognize_text(
            images=np_images,
            use_gpu=True,
            box_thresh=0.5,
            text_thresh=0.5)
        end_time = time.time()
        print("elaspse {}".format(end_time - start_time))

        predictions, polys = format_result(results)
        print(predictions)
        print(polys)
    except Exception as e:
        print(e)
MissPenguin commented 4 years ago

ocr.recognize_text对应代码地址:https://github.com/PaddlePaddle/PaddleHub/blob/7f83b99560b2176b858dee8b9b51870a1b622e17/hub_module/modules/image/text_recognition/chinese_ocr_db_crnn_mobile/module.py#L152

“可以看到以下中有box_thresh=0.5, text_thresh=0.5两行代码, 而我在/PaddleOCR-develop/deploy/hubserving/ocr_system/params.py中看到只有cfg.det_db_box_thresh =0.5, 而crnn部分似乎没有对text进行阈值限定, 好像根本没有可以限定的参数. ”

这个过滤的逻辑建议在client端添加。

你说的这个badcase麻烦发下原图

pkuyilong commented 4 years ago

ocr.recognize_text对应代码地址:https://github.com/PaddlePaddle/PaddleHub/blob/7f83b99560b2176b858dee8b9b51870a1b622e17/hub_module/modules/image/text_recognition/chinese_ocr_db_crnn_mobile/module.py#L152

“可以看到以下中有box_thresh=0.5, text_thresh=0.5两行代码, 而我在/PaddleOCR-develop/deploy/hubserving/ocr_system/params.py中看到只有cfg.det_db_box_thresh =0.5, 而crnn部分似乎没有对text进行阈值限定, 好像根本没有可以限定的参数. ”

这个过滤的逻辑建议在client端添加。

你说的这个badcase麻烦发下原图

这个图比较奇怪,有繁体字, 我对于其正确性没什么要求, 我只是希望解决输出结果不一致的问题,我不知道问题出在哪里 254png_渴望朋友不想定期与人联系

pkuyilong commented 4 years ago

150png_一起爬山吗

MissPenguin commented 4 years ago

paddlehub内置模型的get_rotate_crop_image和paddleocr的predict_system.py中的有点diff:

https://github.com/PaddlePaddle/PaddleHub/blob/7f83b99560b2176b858dee8b9b51870a1b622e17/hub_module/modules/image/text_recognition/chinese_ocr_db_crnn_mobile/module.py#L110

https://github.com/PaddlePaddle/PaddleOCR/blob/d7cd666a3a95e5c0f81a30dfca9e80e0f2c391c6/tools/infer/predict_system.py#L41

修改一致后,图二结果都是“一起爬山吗”,predict_system更新较快,有些许diff很正常,尤其置信度不高时,预测结果容易看起来很不一样。

pkuyilong commented 4 years ago

paddlehub内置模型的get_rotate_crop_image和paddleocr的predict_system.py中的有点diff:

https://github.com/PaddlePaddle/PaddleHub/blob/7f83b99560b2176b858dee8b9b51870a1b622e17/hub_module/modules/image/text_recognition/chinese_ocr_db_crnn_mobile/module.py#L110

https://github.com/PaddlePaddle/PaddleOCR/blob/d7cd666a3a95e5c0f81a30dfca9e80e0f2c391c6/tools/infer/predict_system.py#L41

修改一致后,图二结果都是“一起爬山吗”,predict_system更新较快,有些许diff很正常,尤其置信度不高时,预测结果容易看起来很不一样。

非常专业, 大赞!!!感谢您的帮助