fix conflicts
This commit is contained in:
commit
d1322af3a5
|
@ -4,7 +4,7 @@
|
|||
PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力使用者训练出更好的模型,并应用落地。
|
||||
|
||||
**近期更新**
|
||||
- 2020.10.19 [FAQ](./doc/doc_ch/FAQ.md)新增5个高频问题,共计89个常见问题及解答,并且计划以后每周一都会更新,欢迎大家持续关注。
|
||||
- 2020.10.26 [FAQ](./doc/doc_ch/FAQ.md)新增5个高频问题,共计94个常见问题及解答,并且计划以后每周一都会更新,欢迎大家持续关注。
|
||||
- 2020.9.22 更新PP-OCR技术文章,https://arxiv.org/abs/2009.09941
|
||||
- 2020.9.19 更新超轻量压缩ppocr_mobile_slim系列模型,整体模型3.5M(详见[PP-OCR Pipeline](#PP-OCR)),适合在移动端部署使用。[模型下载](#模型下载)
|
||||
- 2020.9.17 更新超轻量ppocr_mobile系列和通用ppocr_server系列中英文ocr模型,媲美商业效果。[模型下载](#模型下载)
|
||||
|
@ -84,7 +84,7 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力
|
|||
- [基于pip安装whl包快速推理](./doc/doc_ch/whl.md)
|
||||
- [基于Python脚本预测引擎推理](./doc/doc_ch/inference.md)
|
||||
- [基于C++预测引擎推理](./deploy/cpp_infer/readme.md)
|
||||
- [服务化部署](./deploy/hubserving/readme.md)
|
||||
- [服务化部署](./doc/doc_ch/serving_inference.md)
|
||||
- [端侧部署](./deploy/lite/readme.md)
|
||||
- [模型量化](./deploy/slim/quantization/README.md)
|
||||
- [模型裁剪](./deploy/slim/prune/README.md)
|
||||
|
@ -98,8 +98,8 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力
|
|||
- [效果展示](#效果展示)
|
||||
- FAQ
|
||||
- [【精选】OCR精选10个问题](./doc/doc_ch/FAQ.md)
|
||||
- [【理论篇】OCR通用21个问题](./doc/doc_ch/FAQ.md)
|
||||
- [【实战篇】PaddleOCR实战58个问题](./doc/doc_ch/FAQ.md)
|
||||
- [【理论篇】OCR通用23个问题](./doc/doc_ch/FAQ.md)
|
||||
- [【实战篇】PaddleOCR实战61个问题](./doc/doc_ch/FAQ.md)
|
||||
- [技术交流群](#欢迎加入PaddleOCR技术交流群)
|
||||
- [参考文献](./doc/doc_ch/reference.md)
|
||||
- [许可证书](#许可证书)
|
||||
|
|
|
@ -18,5 +18,4 @@ TestReader:
|
|||
infer_img:
|
||||
img_set_dir: ./train_data/icdar2015/text_localization/
|
||||
label_file_path: ./train_data/icdar2015/text_localization/test_icdar2015_label.txt
|
||||
test_image_shape: [736, 1280]
|
||||
do_eval: True
|
||||
|
|
|
@ -51,7 +51,7 @@ Optimizer:
|
|||
PostProcess:
|
||||
function: ppocr.postprocess.db_postprocess,DBPostProcess
|
||||
thresh: 0.3
|
||||
box_thresh: 0.6
|
||||
box_thresh: 0.5
|
||||
max_candidates: 1000
|
||||
unclip_ratio: 1.5
|
||||
unclip_ratio: 1.6
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ public:
|
|||
class ClsResizeImg {
|
||||
public:
|
||||
virtual void Run(const cv::Mat &img, cv::Mat &resize_img,
|
||||
const std::vector<int> &rec_image_shape = {3, 32, 320});
|
||||
const std::vector<int> &rec_image_shape = {3, 48, 192});
|
||||
};
|
||||
|
||||
} // namespace PaddleOCR
|
|
@ -21,7 +21,7 @@ cv::Mat Classifier::Run(cv::Mat &img) {
|
|||
img.copyTo(src_img);
|
||||
cv::Mat resize_img;
|
||||
|
||||
std::vector<int> rec_image_shape = {3, 32, 100};
|
||||
std::vector<int> rec_image_shape = {3, 48, 192};
|
||||
int index = 0;
|
||||
float wh_ratio = float(img.cols) / float(img.rows);
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
PaddleOCR提供2种服务部署方式:
|
||||
- 基于PaddleHub Serving的部署:代码路径为"`./deploy/hubserving`",按照本教程使用;
|
||||
- 基于PaddleServing的部署:代码路径为"`./deploy/pdserving`",使用方法参考[文档](../pdserving/readme.md)。
|
||||
- 基于PaddleServing的部署:代码路径为"`./deploy/pdserving`",使用方法参考[文档](../../doc/doc_ch/serving_inference.md)。
|
||||
|
||||
# 基于PaddleHub Serving的服务部署
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ English | [简体中文](readme.md)
|
|||
|
||||
PaddleOCR provides 2 service deployment methods:
|
||||
- Based on **PaddleHub Serving**: Code path is "`./deploy/hubserving`". Please follow this tutorial.
|
||||
- Based on **PaddleServing**: Code path is "`./deploy/pdserving`". Please refer to the [tutorial](../pdserving/readme_en.md) for usage.
|
||||
- Based on **PaddleServing**: Code path is "`./deploy/pdserving`". Please refer to the [tutorial](../../doc/doc_ch/serving_inference.md) for usage.
|
||||
|
||||
# Service deployment based on PaddleHub Serving
|
||||
|
||||
|
|
|
@ -65,11 +65,11 @@ If you have prepared the model file ending in `.nb`, you can skip this step.
|
|||
The following table also provides a series of models that can be deployed on mobile phones to recognize Chinese.
|
||||
You can directly download the optimized model.
|
||||
|
||||
|Version|Introduction|Model size|Detection model|Text Direction model|Recognition model|Paddle Lite branch |
|
||||
|-|-|-|-|-|-|
|
||||
|V1.1|extra-lightweight chinese OCR optimized model|8.1M|[Download](https://paddleocr.bj.bcebos.com/20-09-22/mobile/lite/ch_ppocr_mobile_v1.1_det_opt.nb)|[Download](https://paddleocr.bj.bcebos.com/20-09-22/mobile/lite/ch_ppocr_mobile_v1.1_cls_opt.nb)|[Download](https://paddleocr.bj.bcebos.com/20-09-22/mobile/lite/ch_ppocr_mobile_v1.1_rec_opt.nb)|develop|
|
||||
|[slim] V1.1|extra-lightweight chinese OCR optimized model|3.5M|[Download](https://paddleocr.bj.bcebos.com/20-09-22/mobile/lite/ch_ppocr_mobile_v1.1_det_prune_opt.nb)|[Download](https://paddleocr.bj.bcebos.com/20-09-22/mobile/lite/ch_ppocr_mobile_v1.1_cls_quant_opt.nb)|[Download](https://paddleocr.bj.bcebos.com/20-09-22/mobile/lite/ch_ppocr_mobile_v1.1_rec_quant_opt.nb)|develop|
|
||||
|V1.0|lightweight Chinese OCR optimized model|8.6M|[Download](https://paddleocr.bj.bcebos.com/20-09-22/mobile/lite/ch_ppocr_mobile_v1.0_det_opt.nb)|---|[Download](https://paddleocr.bj.bcebos.com/20-09-22/mobile/lite/ch_ppocr_mobile_v1.0_rec_opt.nb)|develop|
|
||||
| Version | Introduction | Model size | Detection model | Text Direction model | Recognition model | Paddle Lite branch |
|
||||
| - | - | - | - | - | - | - |
|
||||
| V1.1 | extra-lightweight chinese OCR optimized model | 8.1M | [Download](https://paddleocr.bj.bcebos.com/20-09-22/mobile/lite/ch_ppocr_mobile_v1.1_det_opt.nb) | [Download](https://paddleocr.bj.bcebos.com/20-09-22/mobile/lite/ch_ppocr_mobile_v1.1_cls_opt.nb) | [Download](https://paddleocr.bj.bcebos.com/20-09-22/mobile/lite/ch_ppocr_mobile_v1.1_rec_opt.nb) | develop |
|
||||
| [slim] V1.1 | extra-lightweight chinese OCR optimized model | 3.5M | [Download](https://paddleocr.bj.bcebos.com/20-09-22/mobile/lite/ch_ppocr_mobile_v1.1_det_prune_opt.nb) | [Download](https://paddleocr.bj.bcebos.com/20-09-22/mobile/lite/ch_ppocr_mobile_v1.1_cls_quant_opt.nb) | [Download](https://paddleocr.bj.bcebos.com/20-09-22/mobile/lite/ch_ppocr_mobile_v1.1_rec_quant_opt.nb) | develop |
|
||||
| V1.0 | lightweight Chinese OCR optimized model | 8.6M | [Download](https://paddleocr.bj.bcebos.com/20-09-22/mobile/lite/ch_ppocr_mobile_v1.0_det_opt.nb) | - | [Download](https://paddleocr.bj.bcebos.com/20-09-22/mobile/lite/ch_ppocr_mobile_v1.0_rec_opt.nb) | develop |
|
||||
|
||||
If the model to be deployed is not in the above table, you need to follow the steps below to obtain the optimized model.
|
||||
|
||||
|
|
|
@ -51,6 +51,7 @@ from paddleslim.quant import quant_aware, convert
|
|||
from paddle.fluid.layer_helper import LayerHelper
|
||||
from eval_utils.eval_det_utils import eval_det_run
|
||||
from eval_utils.eval_rec_utils import eval_rec_run
|
||||
from eval_utils.eval_cls_utils import eval_cls_run
|
||||
|
||||
|
||||
def main():
|
||||
|
@ -105,6 +106,8 @@ def main():
|
|||
|
||||
if alg_type == 'det':
|
||||
final_metrics = eval_det_run(exe, config, quant_info_dict, "eval")
|
||||
elif alg_type == 'cls':
|
||||
final_metrics = eval_cls_run(exe, quant_info_dict)
|
||||
else:
|
||||
final_metrics = eval_rec_run(exe, config, quant_info_dict, "eval")
|
||||
print(final_metrics)
|
||||
|
|
|
@ -178,9 +178,12 @@ def main():
|
|||
if train_alg_type == 'det':
|
||||
program.train_eval_det_run(
|
||||
config, exe, train_info_dict, eval_info_dict, is_slim="quant")
|
||||
else:
|
||||
elif train_alg_type == 'rec':
|
||||
program.train_eval_rec_run(
|
||||
config, exe, train_info_dict, eval_info_dict, is_slim="quant")
|
||||
else:
|
||||
program.train_eval_cls_run(
|
||||
config, exe, train_info_dict, eval_info_dict, is_slim="quant")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -9,43 +9,45 @@
|
|||
|
||||
## PaddleOCR常见问题汇总(持续更新)
|
||||
|
||||
* [近期更新(2020.10.19)](#近期更新)
|
||||
* [近期更新(2020.10.26)](#近期更新)
|
||||
* [【精选】OCR精选10个问题](#OCR精选10个问题)
|
||||
* [【理论篇】OCR通用21个问题](#OCR通用问题)
|
||||
* [基础知识3题](#基础知识)
|
||||
* [【理论篇】OCR通用23个问题](#OCR通用问题)
|
||||
* [基础知识5题](#基础知识)
|
||||
* [数据集4题](#数据集)
|
||||
* [模型训练调优6题](#模型训练调优)
|
||||
* [预测部署8题](#预测部署)
|
||||
* [【实战篇】PaddleOCR实战58个问题](#PaddleOCR实战问题)
|
||||
* [使用咨询17题](#使用咨询)
|
||||
* [【实战篇】PaddleOCR实战61个问题](#PaddleOCR实战问题)
|
||||
* [使用咨询20题](#使用咨询)
|
||||
* [数据集10题](#数据集)
|
||||
* [模型训练调优15题](#模型训练调优)
|
||||
* [预测部署16题](#预测部署)
|
||||
|
||||
|
||||
<a name="近期更新"></a>
|
||||
## 近期更新(2020.10.19)
|
||||
## 近期更新(2020.10.26)
|
||||
|
||||
#### Q3.3.14:使用之前版本的代码加载最新1.1版的通用检测预训练模型,提示在模型文件.pdparams中找不到bn4e_branch2a_variance是什么情况?是网络结构发生了变化吗?
|
||||
#### Q2.1.4 印章如何识别
|
||||
**A**: 1. 使用带tps的识别网络或abcnet,2.使用极坐标变换将图片拉平之后使用crnn
|
||||
|
||||
**A**:1.1版的轻量检测模型去掉了mv3结构中的se模块,可以对比下这两个配置文件:[det_mv3_db.yml](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/configs/det/det_mv3_db.yml),[det_mv3_db_v1.1.yml](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/configs/det/det_mv3_db_v1.1.yml)
|
||||
#### Q2.1.5 多语言的字典里是混合了不同的语种,这个是有什么讲究吗?统一到一个字典里会对精度造成多大的损失?
|
||||
**A**:统一到一个字典里,会造成最后一层FC过大,增加模型大小。如果有特殊需求的话,可以把需要的几种语言合并字典训练模型,合并字典之后如果引入过多的形近字,可能会造成精度损失,字符平衡的问题可能也需要考虑一下。在PaddleOCR里暂时将语言字典分开。
|
||||
|
||||
#### Q3.3.15: 训练中使用的字典需要与加载的预训练模型使用的字典一样吗?
|
||||
#### Q3.3.16: 如何对检测模型finetune,比如冻结前面的层或某些层使用小的学习率学习?
|
||||
|
||||
**A**:是的,训练的字典与你使用该模型进行预测的字典需要保持一致的。
|
||||
**A**:如果是冻结某些层,可以将变量的stop_gradient属性设置为True,这样计算这个变量之前的所有参数都不会更新了,参考:https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/faq/train_cn.html#id4
|
||||
如果对某些层使用更小的学习率学习,静态图里还不是很方便,一个方法是在参数初始化的时候,给权重的属性设置固定的学习率,参考:https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/fluid/param_attr/ParamAttr_cn.html#paramattr
|
||||
实际上我们实验发现,直接加载模型去fine-tune,不设置某些层不同学习率,效果也都不错
|
||||
|
||||
#### Q3.2.10: crnn+ctc模型训练所用的垂直文本(旋转至水平方向)是如何生成的?
|
||||
#### Q3.3.17: 使用通用中文模型作为预训练模型,更改了字典文件,出现ctc_fc_b not used的错误
|
||||
**A**:修改了字典之后,识别模型的最后一层FC纬度发生了改变,没有办法加载参数。这里是一个警告,可以忽略,正常训练即可。
|
||||
|
||||
**A**:方法与合成水平方向文字一致,只是将字体替换成了垂直字体。
|
||||
|
||||
#### Q3.4.15: hubserving、pdserving这两种部署方式区别是什么?
|
||||
|
||||
**A**:hubserving原本是paddlehub的配套服务部署工具,可以很方便的将paddlehub内置的模型部署为服务,paddleocr使用了这个功能,并将模型路径等参数暴露出来方便用户自定义修改。paddle serving是面向所有paddle模型的部署工具,文档中可以看到我们提供了快速版和标准版,其中快速版和hubserving的本质是一样的,而标准版基于rpc,更稳定,更适合分布式部署。
|
||||
|
||||
#### Q3.4.16: hub serving部署服务时如何多gpu同时利用起来,export CUDA_VISIBLE_DEVICES=0,1 方式吗?
|
||||
|
||||
**A**:hubserving的部署方式目前暂不支持多卡预测,除非手动启动多个serving,不同端口对应不同卡。或者可以使用paddleserving进行部署,部署工具已经发布:https://github.com/PaddlePaddle/PaddleOCR/tree/develop/deploy/pdserving ,在启动服务时--gpu_id 0,1 这样就可以
|
||||
|
||||
#### Q3.1.18:如何加入自己的检测算法?
|
||||
**A**:1. 在ppocr/modeling对应目录下分别选择backbone,head。如果没有可用的可以新建文件并添加
|
||||
2. 在ppocr/data下选择对应的数据处理处理方式,如果没有可用的可以新建文件并添加
|
||||
3. 在ppocr/losses下新建文件并编写loss
|
||||
4. 在ppocr/postprocess下新建文件并编写后处理算法
|
||||
5. 将上面四个步骤里新添加的类或函数参照yml文件写到配置中
|
||||
|
||||
<a name="OCR精选10个问题"></a>
|
||||
## 【精选】OCR精选10个问题
|
||||
|
@ -151,6 +153,11 @@
|
|||
|
||||
**A**:端到端在文字分布密集的业务场景,效率会比较有保证,精度的话看自己业务数据积累情况,如果行级别的识别数据积累比较多的话two-stage会比较好。百度的落地场景,比如工业仪表识别、车牌识别都用到端到端解决方案。
|
||||
|
||||
#### Q2.1.4 印章如何识别
|
||||
**A**: 1. 使用带tps的识别网络或abcnet,2.使用极坐标变换将图片拉平之后使用crnn
|
||||
|
||||
#### Q2.1.5 多语言的字典里是混合了不同的语种,这个是有什么讲究吗?统一到一个字典里会对精度造成多大的损失?
|
||||
**A**:统一到一个字典里,会造成最后一层FC过大,增加模型大小。如果有特殊需求的话,可以把需要的几种语言合并字典训练模型,合并字典之后如果引入过多的形近字,可能会造成精度损失,字符平衡的问题可能也需要考虑一下。在PaddleOCR里暂时将语言字典分开。
|
||||
|
||||
### 数据集
|
||||
|
||||
|
@ -329,6 +336,13 @@
|
|||
|8.6M超轻量中文OCR模型|MobileNetV3+MobileNetV3|det_mv3_db.yml|rec_chinese_lite_train.yml|
|
||||
|通用中文OCR模型|Resnet50_vd+Resnet34_vd|det_r50_vd_db.yml|rec_chinese_common_train.yml|
|
||||
|
||||
#### 3.1.18:如何加入自己的检测算法?
|
||||
**A**:1. 在ppocr/modeling对应目录下分别选择backbone,head。如果没有可用的可以新建文件并添加
|
||||
2. 在ppocr/data下选择对应的数据处理处理方式,如果没有可用的可以新建文件并添加
|
||||
3. 在ppocr/losses下新建文件并编写loss
|
||||
4. 在ppocr/postprocess下新建文件并编写后处理算法
|
||||
5. 将上面四个步骤里新添加的类或函数参照yml文件写到配置中
|
||||
|
||||
|
||||
### 数据集
|
||||
|
||||
|
@ -388,6 +402,7 @@
|
|||
|
||||
**A**:方法与合成水平方向文字一致,只是将字体替换成了垂直字体。
|
||||
|
||||
|
||||
### 模型训练调优
|
||||
|
||||
#### Q3.3.1:文本长度超过25,应该怎么处理?
|
||||
|
@ -465,6 +480,18 @@ return paddle.reader.multiprocess_reader(readers, False, queue_size=320)
|
|||
|
||||
**A**:是的,训练的字典与你使用该模型进行预测的字典需要保持一致的。
|
||||
|
||||
#### Q3.3.16: 如何对检测模型finetune,比如冻结前面的层或某些层使用小的学习率学习?
|
||||
**A**:
|
||||
|
||||
**A**:如果是冻结某些层,可以将变量的stop_gradient属性设置为True,这样计算这个变量之前的所有参数都不会更新了,参考:https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/faq/train_cn.html#id4
|
||||
|
||||
如果对某些层使用更小的学习率学习,静态图里还不是很方便,一个方法是在参数初始化的时候,给权重的属性设置固定的学习率,参考:https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/fluid/param_attr/ParamAttr_cn.html#paramattr
|
||||
|
||||
实际上我们实验发现,直接加载模型去fine-tune,不设置某些层不同学习率,效果也都不错
|
||||
|
||||
#### Q3.3.17: 使用通用中文模型作为预训练模型,更改了字典文件,出现ctc_fc_b not used的错误
|
||||
**A**:修改了字典之后,识别模型的最后一层FC纬度发生了改变,没有办法加载参数。这里是一个警告,可以忽略,正常训练即可。
|
||||
|
||||
### 预测部署
|
||||
|
||||
#### Q3.4.1:如何pip安装opt模型转换工具?
|
||||
|
|
|
@ -95,5 +95,5 @@ python3 tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_mode
|
|||
|
||||
此外,文档教程中也提供了中文OCR模型的其他预测部署方式:
|
||||
- [基于C++预测引擎推理](../../deploy/cpp_infer/readme.md)
|
||||
- [服务部署](../../deploy/pdserving/readme.md)
|
||||
- [服务部署](./serving_inference.md)
|
||||
- [端侧部署](../../deploy/lite/readme.md)
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
PaddleOCR提供2种服务部署方式:
|
||||
- 基于PaddleServing的部署:代码路径为"`./deploy/pdserving`",按照本教程使用。。
|
||||
- 基于PaddleHub Serving的部署:代码路径为"`./deploy/hubserving`",使用方法参考[文档](../../deploy/hubserving/readme.md)
|
||||
|
||||
# 使用Paddle Serving预测推理
|
||||
|
||||
阅读本文档之前,请先阅读文档 [基于Python预测引擎推理](./inference.md)
|
||||
|
@ -8,7 +12,7 @@
|
|||
|
||||
### 一、 准备环境
|
||||
我们先安装Paddle Serving相关组件
|
||||
我们推荐用户使用GPU来做Paddle Serving的OCR服务部署
|
||||
我们推荐用户使用GPU来做Paddle Serving的OCR服务部署
|
||||
|
||||
**CUDA版本:9.X/10.X**
|
||||
|
||||
|
@ -26,7 +30,7 @@
|
|||
#CPU/GPU版本选择一个
|
||||
#GPU版本服务端
|
||||
#CUDA 9
|
||||
python -m pip install -U https://paddle-serving.bj.bcebos.com/whl/paddle_serving_server_gpu-0.0.0.post9-py3-none-any.whl
|
||||
python -m pip install -U https://paddle-serving.bj.bcebos.com/whl/paddle_serving_server_gpu-0.0.0.post9-py3-none-any.whl
|
||||
#CUDA 10
|
||||
python -m pip install -U https://paddle-serving.bj.bcebos.com/whl/paddle_serving_server_gpu-0.0.0.post10-py3-none-any.whl
|
||||
#CPU版本服务端
|
||||
|
@ -81,7 +85,7 @@ def read_params():
|
|||
#params for text detector
|
||||
cfg.det_algorithm = "DB" # 检测算法, DB/EAST等
|
||||
cfg.det_model_dir = "./det_mv_server/" # 检测算法模型路径
|
||||
cfg.det_max_side_len = 960
|
||||
cfg.det_max_side_len = 960
|
||||
|
||||
#DB params
|
||||
cfg.det_db_thresh =0.3
|
||||
|
@ -222,14 +226,14 @@ python rec_web_client.py
|
|||
#GPU用户
|
||||
python -m paddle_serving_server_gpu.serve --model det_infer_server --port 9293 --gpu_id 0
|
||||
python -m paddle_serving_server_gpu.serve --model cls_infer_server --port 9294 --gpu_id 0
|
||||
python ocr_rpc_server.py
|
||||
python ocr_rpc_server.py
|
||||
#CPU用户
|
||||
python -m paddle_serving_server.serve --model det_infer_server --port 9293
|
||||
python -m paddle_serving_server.serve --model cls_infer_server --port 9294
|
||||
python ocr_rpc_server.py
|
||||
|
||||
#快速版,Windows/Linux用户
|
||||
python ocr_local_server.py
|
||||
python ocr_local_server.py
|
||||
```
|
||||
|
||||
客户端
|
||||
|
|
|
@ -98,5 +98,5 @@ For more text detection and recognition tandem reasoning, please refer to the do
|
|||
|
||||
In addition, the tutorial also provides other deployment methods for the Chinese OCR model:
|
||||
- [Server-side C++ inference](../../deploy/cpp_infer/readme_en.md)
|
||||
- [Service deployment](../../deploy/pdserving/readme_en.md)
|
||||
- [Service deployment](../../deploy/hubserving/readme_en.md)
|
||||
- [End-to-end deployment](../../deploy/lite/readme_en.md)
|
||||
|
|
BIN
doc/joinus.PNG
BIN
doc/joinus.PNG
Binary file not shown.
Before Width: | Height: | Size: 356 KiB After Width: | Height: | Size: 405 KiB |
|
@ -65,6 +65,7 @@ class ClsModel(object):
|
|||
labels = None
|
||||
loader = None
|
||||
image = fluid.data(name='image', shape=image_shape, dtype='float32')
|
||||
image.stop_gradient = False
|
||||
return image, labels, loader
|
||||
|
||||
def __call__(self, mode):
|
||||
|
|
Loading…
Reference in New Issue