一.代码准备
下载2.0版本以上的paddleocr:paddleocr
2.0以上的在训练自己模型的时候有参数:
load_static_weights: True #是否将预训练模型保存在静态图形模式
所以,只要安装好了tensorrt一般都可以直接使用,Serving也需要2.0版本以上的
二.tensorrt的安装
可以参照以下方法安装tensorrt:
https://blog.csdn.net/zong596568821xp/article/details/86077553?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165087078916781483722867%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165087078916781483722867&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-86077553.142^v9^control,157^v4^new_style&utm_term=tensorrt%E5%AE%89%E8%A3%85&spm=1018.2226.3001.4187
https://blog.csdn.net/introsend/article/details/105103487?ops_request_misc=&request_id=&biz_id=102&utm_term=tensorrt%E5%AE%89%E8%A3%85&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-8-105103487.nonecase&spm=1018.2226.3001.4187
https://blog.csdn.net/m0_37605642/article/details/120095114?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165087078916781483783014%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165087078916781483783014&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-9-120095114.142^v9^control,157^v4^new_style&utm_term=tensorrt%E5%AE%89%E8%A3%85&spm=1018.2226.3001.4187
三.paddleocr环境配置
下载对应的使用tensorrt的GPU环境:对应GPU环境
其余的环境都和平时使用的一模一样
使用GPU下载的环境一定要和自己的cuda、cudnn对应
四.设置参数
use_tensorrt=True
每次加载模型的时候设置参数:use_tensorrt=True
五.Serving环境准备
在虚拟环境中安装-可以使用0.7,0.8版本的:其它版本的环境安装
pip install paddle-serving-server==0.6.1 # for CPU
pip install paddle-serving-server-gpu==0.6.1 # for GPU
# 其他GPU环境需要确认环境再选择执行如下命令
pip install paddle-serving-server-gpu==0.6.1.post101 # GPU with CUDA10.1 + TensorRT6
pip install paddle-serving-server-gpu==0.6.1.post11 # GPU with CUDA11 + TensorRT7
安装client
wget https://paddle-serving.bj.bcebos.com/test-dev/whl/paddle_serving_client-0.6.1-cp37-none-any.whl
pip install paddle_serving_client-0.6.1-cp37-none-any.whl
安装serving-app
wget https://paddle-serving.bj.bcebos.com/test-dev/whl/paddle_serving_app-0.6.1-py3-none-any.whl
pip install paddle_serving_app-0.6.1-py3-none-any.whl
这几个的版本一定要对应,否则会报错
六.模型转换
如果没有模型,可以下载:PP-OCR
# 转换检测模型
python3 -m paddle_serving_client.convert --dirname ./ch_PP-OCRv2_det_infer/ \ # 使用自己训练好的模型路径
--model_filename inference.pdmodel \
--params_filename inference.pdiparams \
--serving_server ./ppocrv2_det_serving/ \ # 保存位置可以更改为指定位置
--serving_client ./ppocrv2_det_client/ # 保存位置可以更改为指定位置
# 转换识别模型 同上
python3 -m paddle_serving_client.convert --dirname ./ch_PP-OCRv2_rec_infer/ \
--model_filename inference.pdmodel \
--params_filename inference.pdiparams \
--serving_server ./ppocrv2_rec_serving/ \
--serving_client ./ppocrv2_rec_client/
转换好如图:
七.部署
进入到工作目录PaddleOCR/deploy/pdserving,运行web_service.py文件,一般不会出错,生成这样的日志文件,说明运行成功
根据请求不同,运行不同的py文件:
pipeline_http_client.py
pipeline_rpc_client.py
在web_service.py可以修改:
class RecOp(Op):
def init_op(self):
self.det_box = []
def preprocess(self, input_dicts, data_id, log_id):
self.det_box = []
for i in dt_boxes:
b = []
for j in i:
x, y = j
b.append([int(x), int(y)])
# print("bb:", b)
self.det_box.append(b)
def postprocess(self, input_dicts, fetch_data, data_id, log_id):
box = str(self.det_box)
如上代码修改,可以获得坐标信息