环境
win10系统下pycharm、Anaconda3、VS
VS环境搭建
1.下载vs工具路径
https://visualstudio.microsoft.com/visual-cpp-build-tools/
2.安装工具后,选择如下
其中window10的SDK根据自己电脑选择
3.更改环境变量
在环境变量中创建INCLUDE(如果已存在,则无需创建),新增路径“C:\Program Files (x86)\Windows Kits\10\Include\SDK版本\ucrt”。环境变量多个值之间,用英文分号“;”隔开。
环境变量中创建INCLUDE(如果已存在,则无需创建),新增路径“C:\Program Files (x86)\Windows Kits\10\Include\SDK版本\shared”。环境变量多个值之间,用英文分号“;”隔开。
环境变量中创建LIB(如果已存在,则无需创建),新增路径“C:\Program Files (x86)\Windows Kits\10\Lib\SDK版本\um\x64”
环境变量中创建LIB(如果已存在,则无需创建),新增路径“C:\Program Files (x86)\Windows Kits\10\Lib\SDK版本\ucrt\x64”
环境变量中创建Path(如果已存在,则无需创建),新增路径“C:\Program Files (x86)\Windows Kits\10\bin\SDK版本\x64”
4.配置完成后重启电脑
pycharm环境配置
1.使用Anaconda3创建一个环境,pycharm 3.6
2.创建一个pycharm工程,选择刚刚创建的环境
3.安装paddlepaddle,命令行输入
pip install paddlepaddle-gpu==2.4.1 -i https://mirror.baidu.com/pypi/simple
4.下载paddleocr源码,命令行输入
git clone https://gitee.com/paddlepaddle/PaddleOCR.git
5.进入PaddleOCR目录下找到requirements.txt,修改opencv版本。默认安装新版会有问题
6.安装PyMuPDF,默认安装会有问题
PyMuPDF-1.18.4百度网盘连接如下
链接:https://pan.baidu.com/s/1l58nnT0tidqYjgn1Xb2C0g?pwd=rz4p
提取码:rz4p
下载到pycharm工程同级目录后,命令行输入安装
pip install PyMuPDF-1.18.4-cp36-cp36m-win_amd64.whl
7.如有其他包安装报错可以去下面这里下载whl安装
https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely
8.安装paddleocr, 命令行输入
cd PaddleOCR
pip install -r requirements.txt
没有报错就是安装成功,如lanms-neo==1.0.2报错,是vs的环境没有搭建好
paddleocr训练模型
1.修改configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_cml.yml文件如下
Global:
debug: false
use_gpu: true # 是否使用gpu
epoch_num: 100 # 训练步数
log_smooth_window: 20
print_batch_step: 10
save_model_dir: ./output/ch_PP-OCR_v3_det/ # 模型保存路径
save_epoch_step: 10
eval_batch_step:
- 0
- 100
cal_metric_during_train: false
pretrained_model: ./pretrain_models/ch_PP-OCRv3_det_distill_train/best_accuracy.pdparams # 预加载模型路径
checkpoints: null
save_inference_dir: null
use_visualdl: false
infer_img: doc/imgs_en/img_10.jpg
save_res_path: ./checkpoints/det_db/predicts_db.txt
distributed: true
Architecture:
name: DistillationModel
algorithm: Distillation
model_type: det
Models:
Student:
pretrained:
model_type: det
algorithm: DB
Transform: null
Backbone:
name: MobileNetV3
scale: 0.5
model_name: large
disable_se: true
Neck:
name: RSEFPN
out_channels: 96
shortcut: True
Head:
name: DBHead
k: 50
Student2:
pretrained:
model_type: det
algorithm: DB
Transform: null
Backbone:
name: MobileNetV3
scale: 0.5
model_name: large
disable_se: true
Neck:
name: RSEFPN
out_channels: 96
shortcut: True
Head:
name: DBHead
k: 50
Teacher:
freeze_params: true
return_all_feats: false
model_type: det
algorithm: DB
Backbone:
name: ResNet_vd
in_channels: 3
layers: 50
Neck:
name: LKPAN
out_channels: 256
Head:
name: DBHead
kernel_list: [7,2,2]
k: 50
Loss:
name: CombinedLoss
loss_config_list:
- DistillationDilaDBLoss:
weight: 1.0
model_name_pairs:
- ["Student", "Teacher"]
- ["Student2", "Teacher"]
key: maps
balance_loss: true
main_loss_type: DiceLoss
alpha: 5
beta: 10
ohem_ratio: 3
- DistillationDMLLoss:
model_name_pairs:
- ["Student", "Student2"]
maps_name: "thrink_maps"
weight: 1.0
model_name_pairs: ["Student", "Student2"]
key: maps
- DistillationDBLoss:
weight: 1.0
model_name_list: ["Student", "Student2"]
balance_loss: true
main_loss_type: DiceLoss
alpha: 5
beta: 10
ohem_ratio: 3
Optimizer:
name: Adam
beta1: 0.9
beta2: 0.999
lr:
name: Cosine
learning_rate: 0.002
warmup_epoch: 2
regularizer:
name: L2
factor: 5.0e-05
PostProcess:
name: DistillationDBPostProcess
model_name: ["Student"]
key: head_out
thresh: 0.3
box_thresh: 0.6
max_candidates: 1000
unclip_ratio: 1.5
Metric:
name: DistillationMetric
base_metric_name: DetMetric
main_indicator: hmean
key: "Student"
Train:
dataset:
name: SimpleDataSet
data_dir: ./train_data/icdar2015/text_localization/
label_file_list:
- ./train_data/icdar2015/text_localization/train/Label.txt
ratio_list: [1.0]
transforms:
- DecodeImage:
img_mode: BGR
channel_first: false
- DetLabelEncode: null
- CopyPaste:
- IaaAugment:
augmenter_args:
- type: Fliplr
args:
p: 0.5
- type: Affine
args:
rotate:
- -10
- 10
- type: Resize
args:
size:
- 0.5
- 3
- EastRandomCropData:
size:
- 960
- 960
max_tries: 50
keep_ratio: true
- MakeBorderMap:
shrink_ratio: 0.4
thresh_min: 0.3
thresh_max: 0.7
- MakeShrinkMap:
shrink_ratio: 0.4
min_text_size: 8
- NormalizeImage:
scale: 1./255.
mean:
- 0.485
- 0.456
- 0.406
std:
- 0.229
- 0.224
- 0.225
order: hwc
- ToCHWImage: null
- KeepKeys:
keep_keys:
- image
- threshold_map
- threshold_mask
- shrink_map
- shrink_mask
loader:
shuffle: true
drop_last: false
batch_size_per_card: 2
num_workers: 2
use_shared_memory: False
Eval:
dataset:
name: SimpleDataSet
data_dir: ./train_data/icdar2015/text_localization/
label_file_list:
- ./train_data/icdar2015/text_localization/test/Label.txt
transforms:
- DecodeImage: # load image
img_mode: BGR
channel_first: False
- DetLabelEncode: # Class handling label
- DetResizeForTest:
- NormalizeImage:
scale: 1./255.
mean: [0.485, 0.456, 0.406]
std: [0.229, 0.224, 0.225]
order: 'hwc'
- ToCHWImage:
- KeepKeys:
keep_keys: ['image', 'shape', 'polys', 'ignore_tags']
loader:
shuffle: False
drop_last: False
batch_size_per_card: 1 # must be 1
num_workers: 2
use_shared_memory: False
2.其中 预加载模型去飞浆官网下载
选择训练模型
3.训练模型
python tools/train.py -c configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_cml.yml
参考 https://www.ngui.cc/el/837915.html?action=onClick
参考 https://blog.youkuaiyun.com/suiyingy/article/details/126682769
参考 https://blog.youkuaiyun.com/qq_49627063/article/details/119134847