solve det eval bug and optimize doc

This commit is contained in:
LDOUBLEV 2020-05-25 16:29:20 +08:00
parent 96ead92e45
commit 6eb7dd5563
4 changed files with 35 additions and 10 deletions

View File

@ -48,7 +48,6 @@ python3 tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_mode
更多的文本检测、识别串联推理使用方式请参考文档教程中[基于预测引擎推理](./doc/inference.md)。 更多的文本检测、识别串联推理使用方式请参考文档教程中[基于预测引擎推理](./doc/inference.md)。
## 文档教程 ## 文档教程
- [快速安装](./doc/installation.md) - [快速安装](./doc/installation.md)
- [文本检测模型训练/评估/预测](./doc/detection.md)(持续更新中) - [文本检测模型训练/评估/预测](./doc/detection.md)(持续更新中)
@ -64,12 +63,14 @@ PaddleOCR开源的文本检测算法列表
在ICDAR2015文本检测公开数据集上算法效果如下 在ICDAR2015文本检测公开数据集上算法效果如下
|模型|骨干网络|Hmean|下载链接| |模型|骨干网络|Hmean|precision|recall|下载链接|
|-|-|-|-| |-|-|-|-|
|EAST|ResNet50_vd|85.85%|[下载链接](https://paddleocr.bj.bcebos.com/det_r50_vd_east.tar)| |EAST|ResNet50_vd|86.82%|88.18%|85.51|[下载链接](https://paddleocr.bj.bcebos.com/det_r50_vd_east.tar)|
|EAST|MobileNetV3|79.08%|[下载链接](https://paddleocr.bj.bcebos.com/det_mv3_east.tar)| |EAST|MobileNetV3|80.74%|81.67%|79.83%|[下载链接](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|ResNet50_vd|82.19%|83.79%|80.65%|[下载链接](https://paddleocr.bj.bcebos.com/det_r50_vd_db.tar)|
|DB|MobileNetV3|73.00%|[下载链接](https://paddleocr.bj.bcebos.com/det_mv3_db.tar)| |DB|MobileNetV3|74.53%|75.92%|73.18%|[下载链接](https://paddleocr.bj.bcebos.com/det_mv3_db.tar)|
* 注: 上述模型的训练和评估设置后处理参数box_thresh=0.6unclip_ratio=1.5,使用不同数据集、不同模型训练时,可调整这两个参数进行优化
PaddleOCR文本检测算法的训练和使用请参考文档教程中[文本检测模型训练/评估/预测](./doc/detection.md)。 PaddleOCR文本检测算法的训练和使用请参考文档教程中[文本检测模型训练/评估/预测](./doc/detection.md)。

View File

@ -50,4 +50,4 @@ PostProcess:
thresh: 0.3 thresh: 0.3
box_thresh: 0.7 box_thresh: 0.7
max_candidates: 1000 max_candidates: 1000
unclip_ratio: 1.5 unclip_ratio: 2.0

View File

@ -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/)。 建议使用我们提供的docker运行PaddleOCR有关docker使用请参考[链接](https://docs.docker.com/get-started/)。
1. 准备docker环境。第一次使用这个镜像会自动下载该镜像请耐心等待。
1. 建议准备docker环境。第一次使用这个镜像会自动下载该镜像请耐心等待。
``` ```
# 切换到工作目录下 # 切换到工作目录下
cd /home/Projects 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 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(暂不支持更高版本,适配工作进行中) 2. 安装PaddlePaddle Fluid v1.7(暂不支持更高版本,适配工作进行中)
``` ```
pip3 install --upgrade pip pip3 install --upgrade pip

View File

@ -35,6 +35,7 @@ class DBPostProcess(object):
self.thresh = params['thresh'] self.thresh = params['thresh']
self.box_thresh = params['box_thresh'] self.box_thresh = params['box_thresh']
self.max_candidates = params['max_candidates'] self.max_candidates = params['max_candidates']
self.unclip_ratio = params['unclip_ratio']
self.min_size = 3 self.min_size = 3
def boxes_from_bitmap(self, pred, _bitmap, dest_width, dest_height): def boxes_from_bitmap(self, pred, _bitmap, dest_width, dest_height):
@ -46,7 +47,8 @@ class DBPostProcess(object):
bitmap = _bitmap bitmap = _bitmap
height, width = bitmap.shape 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: if len(outs) == 3:
img, contours, _ = outs[0], outs[1], outs[2] img, contours, _ = outs[0], outs[1], outs[2]
elif len(outs) == 2: elif len(outs) == 2:
@ -83,7 +85,8 @@ class DBPostProcess(object):
scores[index] = score scores[index] = score
return boxes, scores return boxes, scores
def unclip(self, box, unclip_ratio=2.0): def unclip(self, box):
unclip_ratio = self.unclip_ratio
poly = Polygon(box) poly = Polygon(box)
distance = poly.area * unclip_ratio / poly.length distance = poly.area * unclip_ratio / poly.length
offset = pyclipper.PyclipperOffset() offset = pyclipper.PyclipperOffset()