diff --git a/README.md b/README.md index fa17693b69d64998232111b4d7931776164be042..6a7785c1ef250cb5f7018a2575135d9404dfc86f 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,6 @@ python3 tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_mode 更多的文本检测、识别串联推理使用方式请参考文档教程中[基于预测引擎推理](./doc/inference.md)。 - ## 文档教程 - [快速安装](./doc/installation.md) - [文本检测模型训练/评估/预测](./doc/detection.md)(持续更新中) @@ -64,12 +63,14 @@ PaddleOCR开源的文本检测算法列表: 在ICDAR2015文本检测公开数据集上,算法效果如下: -|模型|骨干网络|Hmean|下载链接| +|模型|骨干网络|precision|recall|Hmean|下载链接| |-|-|-|-| -|EAST|ResNet50_vd|85.85%|[下载链接](https://paddleocr.bj.bcebos.com/det_r50_vd_east.tar)| -|EAST|MobileNetV3|79.08%|[下载链接](https://paddleocr.bj.bcebos.com/det_mv3_east.tar)| -|DB|ResNet50_vd|83.30%|[下载链接](https://paddleocr.bj.bcebos.com/det_r50_vd_db.tar)| -|DB|MobileNetV3|73.00%|[下载链接](https://paddleocr.bj.bcebos.com/det_mv3_db.tar)| +|EAST|ResNet50_vd|88.18%|85.51|86.82%|[下载链接](https://paddleocr.bj.bcebos.com/det_r50_vd_east.tar)| +|EAST|MobileNetV3|81.67%|79.83%|80.74%|[下载链接](https://paddleocr.bj.bcebos.com/det_mv3_east.tar)| +|DB|ResNet50_vd|83.79%|80.65%|82.19%|[下载链接](https://paddleocr.bj.bcebos.com/det_r50_vd_db.tar)| +|DB|MobileNetV3|75.92%|73.18%|74.53%|[下载链接](https://paddleocr.bj.bcebos.com/det_mv3_db.tar)| + +* 注: 上述模型的训练和评估,设置后处理参数box_thresh=0.6,unclip_ratio=1.5,使用不同数据集、不同模型训练,可调整这两个参数进行优化 PaddleOCR文本检测算法的训练和使用请参考文档教程中[文本检测模型训练/评估/预测](./doc/detection.md)。 diff --git a/configs/det/det_mv3_db.yml b/configs/det/det_mv3_db.yml index 37e5dc596ea5ff50150199d4e705527af28b2822..8efa66a92d6e8c031efef48d738d9690bcc5554c 100755 --- a/configs/det/det_mv3_db.yml +++ b/configs/det/det_mv3_db.yml @@ -50,4 +50,4 @@ PostProcess: thresh: 0.3 box_thresh: 0.7 max_candidates: 1000 - unclip_ratio: 1.5 \ No newline at end of file + unclip_ratio: 2.0 \ No newline at end of file diff --git a/doc/detection.md b/doc/detection.md index 2fbe3c427f726c3661bd945c5aa310a874f2a1d2..dc4f9cc181a36abaf49ca2dd8d255cbe2dafa2a7 100644 --- a/doc/detection.md +++ b/doc/detection.md @@ -64,14 +64,15 @@ PaddleOCR计算三个OCR检测相关的指标,分别是:Precision、Recall 运行如下代码,根据配置文件det_db_mv3.yml中save_res_path指定的测试集检测结果文件,计算评估指标。 +评估时设置后处理参数box_thresh=0.6,unclip_ratio=1.5,使用不同数据集、不同模型训练,可调整这两个参数进行优化 ``` -python3 tools/eval.py -c configs/det/det_mv3_db.yml -o Global.checkpoints="{path/to/weights}/best_accuracy" +python3 tools/eval.py -c configs/det/det_mv3_db.yml -o Global.checkpoints="{path/to/weights}/best_accuracy" PostProcess.box_thresh=0.6 PostProcess.unclip_ratio=1.5 ``` 训练中模型参数默认保存在Global.save_model_dir目录下。在评估指标时,需要设置Global.checkpoints指向保存的参数文件。 比如: ``` -python3 tools/eval.py -c configs/det/det_mv3_db.yml -o Global.checkpoints="./output/det_db/best_accuracy" +python3 tools/eval.py -c configs/det/det_mv3_db.yml -o Global.checkpoints="./output/det_db/best_accuracy" PostProcess.box_thresh=0.6 PostProcess.unclip_ratio=1.5 ``` diff --git a/doc/installation.md b/doc/installation.md index 1c6fead80d1d69dd3bddd8ef3af2c8111b0412ca..833bdba3bf1884981d2388bc46f1a0811610d36a 100644 --- a/doc/installation.md +++ b/doc/installation.md @@ -1,7 +1,14 @@ ## 快速安装 +经测试PaddleOCR可在glibc 2.23上运行,您也可以测试其他glibc版本或安装glic 2.23 +PaddleOCR 工作环境 +- PaddlePaddle1.7 +- python3 +- glibc 2.23 + 建议使用我们提供的docker运行PaddleOCR,有关docker使用请参考[链接](https://docs.docker.com/get-started/)。 -1. 准备docker环境。第一次使用这个镜像,会自动下载该镜像,请耐心等待。 + +1. (建议)准备docker环境。第一次使用这个镜像,会自动下载该镜像,请耐心等待。 ``` # 切换到工作目录下 cd /home/Projects @@ -20,6 +27,20 @@ sudo nvidia-docker run --name ppocr -v $PWD:/paddle --network=host -it hub.baidu sudo nvidia-docker container exec -it ppocr /bin/bash ``` +注意:如果docker pull过慢,可以按照如下步骤手动下载后加载docker,以cuda9 docker为例,使用cuda10 docker只需要将cuda9改为cuda10即可。 +``` +# 下载CUDA9 docker的压缩文件,并解压 +wget https://paddleocr.bj.bcebos.com/docker/docker_pdocr_cuda9.tar.gz +# 为减少下载时间,上传的docker image是压缩过的,需要解压使用 +tar zxf docker_pdocr_cuda9.tar.gz +# 创建image +docker load < docker_pdocr_cuda9.tar +# 完成上述步骤后通过docker images检查是否加载了下载的镜像 +docker images +# 执行docker images后如果有下面的输出,即可按照按照 步骤1 创建docker环境。 +hub.baidubce.com/paddlepaddle/paddle latest-gpu-cuda9.0-cudnn7-dev f56310dcc829 +``` + 2. 安装PaddlePaddle Fluid v1.7(暂不支持更高版本,适配工作进行中) ``` pip3 install --upgrade pip diff --git a/ppocr/postprocess/db_postprocess.py b/ppocr/postprocess/db_postprocess.py index b8e18e66c8ac491b67c9a06d26dcf42ffa175011..f115f12ed177dda87d7caae2167e44dca037c9ae 100644 --- a/ppocr/postprocess/db_postprocess.py +++ b/ppocr/postprocess/db_postprocess.py @@ -35,6 +35,7 @@ class DBPostProcess(object): self.thresh = params['thresh'] self.box_thresh = params['box_thresh'] self.max_candidates = params['max_candidates'] + self.unclip_ratio = params['unclip_ratio'] self.min_size = 3 def boxes_from_bitmap(self, pred, _bitmap, dest_width, dest_height): @@ -46,7 +47,8 @@ class DBPostProcess(object): bitmap = _bitmap height, width = bitmap.shape - outs = cv2.findContours((bitmap * 255).astype(np.uint8), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) + outs = cv2.findContours((bitmap * 255).astype(np.uint8), cv2.RETR_LIST, + cv2.CHAIN_APPROX_SIMPLE) if len(outs) == 3: img, contours, _ = outs[0], outs[1], outs[2] elif len(outs) == 2: @@ -83,7 +85,8 @@ class DBPostProcess(object): scores[index] = score return boxes, scores - def unclip(self, box, unclip_ratio=2.0): + def unclip(self, box): + unclip_ratio = self.unclip_ratio poly = Polygon(box) distance = poly.area * unclip_ratio / poly.length offset = pyclipper.PyclipperOffset()