写在前面
栽了很多跟头,总算跑起来一个简简单单可以用的模型,记录一下走过的弯路,一来防止后面还要继续跑备个份,二来能帮到来者就更好了。
下面是在Ai Studio
上跑的代码,有的是用来做测试的,有的是要执行的,给出标记和注释供参考。
Python版本:python 3.7
框架版本:PaddlePaddle 2.1.2
# 进根目录(执行)
%cd ~
# 拉取2.1版本的代码(执行)
# 附链接https://github.com/PaddlePaddle/PaddleOCR/releases/tag/v2.1.1
!git clone https://gitee.com/paddlepaddle/PaddleOCR.git
%cd ~/PaddleOCR
# 升级pip
!python -m pip install --upgrade pip
# 安装依赖库
!pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple
根据需求下载预训练模型
OCR模型列表(V2.1,2021年9月6日更新)
两阶段算法
检测算法预训练模型下载
# 根据backbone的不同选择下载对应的预训练模型
# 下载MobileNetV3的预训练模型
!wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MobileNetV3_large_x0_5_pretrained.pdparams
# 或,下载ResNet18_vd的预训练模型
!wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNet18_vd_pretrained.pdparams
# 或,下载ResNet50_vd的预训练模型
!wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNet50_vd_ssld_pretrained.pdparams
识别算法预训练模型下载
# 下载通用中英文预训练模型做finetune
!wget -P ./pretrain_models/ https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_rec_pre.tar
! cd pretrain_models/ && tar xf ch_ppocr_server_v2.0_rec_pre.tar
# 测试代码,无需执行
import matplotlib.pyplot as plt
from PIL import Image
## 显示原图,读取名称为11.jpg的测试图像
img_path= "./inference_results/Image_20210624144721038.bmp"
img = Image.open(img_path)
plt.figure("test_img", figsize=(20,20))
plt.imshow(img)
plt.show()
检测模型
配置文件:det_mv3_db.yml
Global:
use_gpu: true
epoch_num: 1200 #可能需要修改
log_smooth_window: 20
print_batch_step: 10
save_model_dir: ./output/db_mv3/
save_epoch_step: 1200 #可能需要修改
# evaluation is run every 2000 iterations
eval_batch_step: [0, 2000] #可能需要修改
cal_metric_during_train: False
pretrained_model: ./pretrain_models/MobileNetV3_large_x0_5_pretrained #可能需要修改--预训练模型,不使用则删除
checkpoints: #可能需要修改--一般置空,用于恢复训练
save_inference_dir:
use_visualdl: False
infer_img: doc/imgs_en/img_10.jpg
save_res_path: ./output/det_db/predicts_db.txt
Architecture:
model_type: det
algorithm: DB
Transform:
Backbone:
name: MobileNetV3
scale: 0.5
model_name: large