@python
PaddleOCR分爲文本檢測、文本識別和方向分類器三部分,其中文本檢測有三個模型,分別是MobileNetV三、ResNet18_vd和ResNet50,其中最常使用的是MobileNetV3模型,總體比較小,適合應用於手機端。文本識別只有一個MobileNetV3預訓練模型。方向分類器使用默認的模型。linux
PaddleOCR2.0的配置環境爲:git
其中,PaddlePaddle可使用2.0.*github
若是使用docker運行,能夠直接使用 paddlepaddle/paddle:2.0.1-gpu-cuda11.0-cudnn8
鏡像,根據我的使用習慣,能夠更換,可是paddlepaddle的版本和cudnn版本不能低於PaddleOCR2.0的配置環境。算法
其中,文本檢測和文本識別使用的都是icdar2015數據集,方向分類器的數據集需自備docker
icdar2015數據集能夠從官網下載,首次下載需註冊。shell
文本檢測的icdar2015數據集的標註文件下載:json
wget -P ./train_data/ https://paddleocr.bj.bcebos.com/dataset/train_icdar2015_label.txt wget -P ./train_data/ https://paddleocr.bj.bcebos.com/dataset/test_icdar2015_label.txt
也可使用PaddleOCR提供的數據格式轉換腳本,將官網的label轉換爲支持的數據格式。轉換數據工具爲ppocr/utils/gen_label.py
網絡
# 將官網下載的標籤文件轉換爲 train_icdar2015_label.txt python gen_label.py --mode="det" --root_path="icdar_c4_train_imgs/" \ --input_path="ch4_training_localization_transcription_gt" \ --output_label="train_icdar2015_label.txt"
解壓數據集和下載標註文件後,放在PaddleOCR/train_data文件中,文件目錄爲:dom
/PaddleOCR/train_data/icdar2015/text_localization/ └─ icdar_c4_train_imgs/ icdar數據集的訓練數據 └─ ch4_test_images/ icdar數據集的測試數據 └─ train_icdar2015_label.txt icdar數據集的訓練標註 └─ test_icdar2015_label.txt icdar數據集的測試標註
若是不按照這個格式,須要在後面的配置文件中配置
標註文件格式以下,中間用"\t"分隔:
" 圖像文件名 json.dumps編碼的圖像標註信息" ch4_test_images/img_61.jpg [{"transcription": "MASA", "points": [[310, 104], [416, 141], [418, 216], [312, 179]]}, {...}]
json.dumps編碼前的圖像標註信息是包含多個字典的list,字典中的 points
表示文本框的四個點的座標(x, y),從左上角的點開始順時針排列。 transcription
表示當前文本框的文字,當其內容爲「###」時,表示該文本框無效,在訓練時會跳過。
若是您想在其餘數據集上訓練,能夠按照上述形式構建標註文件
文本識別的數據集也能夠參考DTRB,下載benchmark所需的lmdb格式數據集。若是但願復現SRN的論文標準,須要下載離線增廣數據,提取碼: y3ry。增廣數據是由MJSynth和SynthText作旋轉和擾動獲得的。數據下載完成後請解壓到 {your_path}/PaddleOCR/train_data/data_lmdb_release/training/ 路徑下。
PaddleOCR提供了一份用於訓練icdar2015數據集的標籤文件:
# 訓練集標籤 wget -P ./train_data/ic15_data https://paddleocr.bj.bcebos.com/dataset/rec_gt_train.txt # 測試集標籤 wget -P ./train_data/ic15_data https://paddleocr.bj.bcebos.com/dataset/rec_gt_test.txt
PaddleOCR也提供了數據格式轉換文本,能夠將官網label轉換支持的數據格式。數據轉換工具在ppocr/utils/gen_label.py
# 將官網下載的標籤文件轉換爲 rec_gt_label.txt python gen_label.py --mode="rec" --input_path="{path/of/origin/label}" --output_label="rec_gt_label.txt"
默認請將圖片路徑和圖片標籤用 \t 分割,如用其餘方式分割將形成訓練報錯。
" 圖像文件名 圖像標註信息 " train_data/train_0001.jpg 簡單可依賴 train_data/train_0002.jpg 用科技讓複雜的世界更簡單
最終訓練集的文件結構爲:
|-train_data |-ic15_data |- rec_gt_train.txt |- train |- word_001.png |- word_002.jpg |- word_003.jpg | ...
測試集的文件結構爲:
|-train_data |-ic15_data |- rec_gt_test.txt |- test |- word_001.jpg |- word_002.jpg |- word_003.jpg | ...
文本檢測與文本識別相比還須要一個字典文件({word_dict_name}.txt),使用模型訓練時,能夠將全部出現的字符映射爲字典的索引。
所以字典須要包含全部但願被正確是被的字符,{word_dict_name}.txt須要寫成以下格式,並以utf-8
編碼格式保存:
l d a d r n
word_dict.txt每行有一個單子,將字符與數字索引映在一塊兒,「and」將被索引稱[2 5 1]
ppocr/utils/ppocr_keys_v1.txt
是一個包含6623個字符的中文字典
ppocr/utils/ic15_dict.txt
是一個包含36個字符的英文字典
ppocr/utils/dict/french_dict.txt
是一個包含118個字符的法文字典
ppocr/utils/dict/japan_dict.txt
是一個包含4399個字符的日文字典
ppocr/utils/dict/korean_dict.txt
是一個包含3636個字符的韓文字典
ppocr/utils/dict/german_dict.txt
是一個包含131個字符的德文字典
ppocr/utils/dict/en_dict.txt
是一個包含63個字符的英文字典
您能夠按需使用。
目前的多語言模型仍處在demo階段,會持續優化模型並補充語種。
如需自定義dic文件,請在 configs/rec/rec_icdar15_train.yml
中添加 character_dict_path
字段, 指向您的字典路徑。 並將 character_type
設置爲 ch
。
若是但願支持識別"空格"類別, 請將yml文件中的 use_space_char
字段設置爲 True
。
請按以下步驟設置數據集:
訓練數據的默認存儲路徑是 PaddleOCR/train_data/cls
,若是您的磁盤上已有數據集,只需建立軟連接至數據集目錄:
ln -sf <path/to/dataset> <path/to/paddle_ocr>/train_data/cls/dataset
請參考下文組織您的數據。
首先請將訓練圖片放入同一個文件夾(train_images),並用一個txt文件(cls_gt_train.txt)記錄圖片路徑和標籤。
注意: 默認請將圖片路徑和圖片標籤用 \t
分割,如用其餘方式分割將形成訓練報錯
0和180分別表示圖片的角度爲0度和180度
" 圖像文件名 圖像標註信息 " train/word_001.jpg 0 train/word_002.jpg 180
最終訓練集應有以下文件結構:
|-train_data |-cls |- cls_gt_train.txt |- train |- word_001.png |- word_002.jpg |- word_003.jpg | ...
同訓練集相似,測試集也須要提供一個包含全部圖片的文件夾(test)和一個cls_gt_test.txt,測試集的結構以下所示:
|-train_data |-cls |- cls_gt_test.txt |- test |- word_001.jpg |- word_002.jpg |- word_003.jpg | ...
首先下載模型backbone的pretrain model,PaddleOCR的檢測模型目前支持兩種backbone,分別是MobileNetV三、ResNet_vd系列, 您能夠根據需求使用PaddleClas中的模型更換backbone。
cd PaddleOCR/ # 下載MobileNetV3的預訓練模型 wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x0_5_pretrained.tar # 或,下載ResNet18_vd的預訓練模型 wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/ResNet18_vd_pretrained.tar # 或,下載ResNet50_vd的預訓練模型 wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_ssld_pretrained.tar # 解壓預訓練模型文件,以MobileNetV3爲例 tar -xf ./pretrain_models/MobileNetV3_large_x0_5_pretrained.tar ./pretrain_models/ # 注:正確解壓backbone預訓練權重文件後,文件夾下包含衆多以網絡層命名的權重文件,格式以下: ./pretrain_models/MobileNetV3_large_x0_5_pretrained/ └─ conv_last_bn_mean └─ conv_last_bn_offset └─ conv_last_bn_scale └─ conv_last_bn_variance └─ ......
# 單機單卡訓練 mv3_db 模型 python3 tools/train.py -c configs/det/det_mv3_db.yml \ -o Global.pretrain_weights=./pretrain_models/MobileNetV3_large_x0_5_pretrained/ # 單機多卡訓練,經過 --gpus 參數設置使用的GPU ID python3 -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/det/det_mv3_db.yml \ -o Global.pretrain_weights=./pretrain_models/MobileNetV3_large_x0_5_pretrained/
若是安裝的是cpu版本,請將配置文件中的use_gpu字段修改成false
訓練參數
-m 配置paddle
-c 選擇配置文件
-o 配置配置文件中的內容
若是訓練程序中斷,若是但願加載訓練中斷的模型從而恢復訓練,能夠經過指定Global.checkpoints指定要加載的模型路徑(如./output/det_r50_vd/latest
):
python3 tools/train.py -c configs/det/det_mv3_db.yml -o Global.checkpoints=./output/det_mv3_vd/latest
注意:Global.checkpoints
的優先級高於Global.pretrain_weights
的優先級,即同時指定兩個參數時,優先加載Global.checkpoints
指定的模型,若是Global.checkpoints
指定的模型路徑有誤,會加載Global.pretrain_weights
指定的模型。
PaddleOCR計算三個OCR檢測相關的指標,分別是:Precision、Recall、Hmean。
運行以下代碼,根據配置文件det_db_mv3.yml
中save_res_path
指定的測試集檢測結果文件,計算評估指標。
評估時設置後處理參數box_thresh=0.5
,unclip_ratio=1.5
,使用不一樣數據集、不一樣模型訓練,可調整這兩個參數進行優化 訓練中模型參數默認保存在Global.save_model_dir
目錄下。在評估指標時,須要設置Global.pretrained_model
指向保存的參數文件。
python3 tools/eval.py -c configs/det/det_mv3_db.yml -o Global.pretrained_model="./output/det_mv3_vd/best_accuracy" PostProcess.box_thresh=0.5 PostProcess.unclip_ratio=1.5
box_thresh
、unclip_ratio
是DB後處理所須要的參數,在評估EAST模型時不須要設置測試單張圖像的檢測效果
python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="./doc/imgs_en/img_10.jpg" Global.pretrained_model="./output/det_db/best_accuracy" Global.load_static_weights=false
測試DB模型時,調整後處理閾值,
python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="./doc/imgs_en/img_10.jpg" Global.pretrained_model="./output/det_db/best_accuracy" Global.load_static_weights=false PostProcess.box_thresh=0.6 PostProcess.unclip_ratio=1.5
測試文件夾下全部圖像的檢測效果
python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="./doc/imgs_en/" Global.pretrained_model="./output/det_db/best_accuracy" Global.load_static_weights=false
PaddleOCR提供了訓練腳本、評估腳本和預測腳本,本節將以 CRNN 識別模型爲例:
首先下載pretrain model,您能夠下載訓練好的模型在 icdar2015 數據上進行finetune
cd PaddleOCR/ # 下載MobileNetV3的預訓練模型 wget -P ./pretrain_models/ https://paddleocr.bj.bcebos.com/dygraph_v2.0/en/rec_mv3_none_bilstm_ctc_v2.0_train.tar # 解壓模型參數 cd pretrain_models tar -xf rec_mv3_none_bilstm_ctc_v2.0_train.tar && rm -rf rec_mv3_none_bilstm_ctc_v2.0_train.tar
開始訓練:
若是您安裝的是cpu版本,請將配置文件中的 use_gpu
字段修改成false
# GPU訓練 支持單卡,多卡訓練,經過--gpus參數指定卡號 # 訓練icdar15英文數據 訓練日誌會自動保存爲 "{save_model_dir}" 下的train.log python3 -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/rec/rec_icdar15_train.yml
PaddleOCR提供了多種數據加強方式,若是您但願在訓練時加入擾動,請在配置文件中設置 distort: true
。
默認的擾動方式有:顏色空間轉換(cvtColor)、模糊(blur)、抖動(jitter)、噪聲(Gasuss noise)、隨機切割(random crop)、透視(perspective)、顏色反轉(reverse)。
訓練過程當中每種擾動方式以50%的機率被選擇,具體代碼實現請參考:img_tools.py
因爲OpenCV的兼容性問題,擾動操做暫時只支持Linux
PaddleOCR支持訓練和評估交替進行, 能夠在 configs/rec/rec_icdar15_train.yml
中修改 eval_batch_step
設置評估頻率,默認每500個iter評估一次。評估過程當中默認將最佳acc模型,保存爲 output/rec_CRNN/best_accuracy
。
若是驗證集很大,測試將會比較耗時,建議減小評估次數,或訓練完再進行評估。
其餘模型配置請參考PaddleOCR github
評估數據集能夠經過 configs/rec/rec_icdar15_train.yml
修改Eval中的 label_file_path
設置。
# GPU 評估, Global.pretrained_model 爲待測權重 python3 -m paddle.distributed.launch --gpus '0' tools/eval.py -c configs/rec/rec_icdar15_train.yml -o Global.pretrained_model={path/to/weights}/best_accuracy
使用 PaddleOCR 訓練好的模型,能夠經過如下腳本進行快速預測。
默認預測圖片存儲在 infer_img
裏,經過 -o Global.pretrained_model
指定權重:
# 預測英文結果 python3 tools/infer_rec.py -c configs/rec/rec_icdar15_train.yml -o Global.pretrained_model={path/to/weights}/best_accuracy Global.load_static_weights=false Global.infer_img=doc/imgs_words/en/word_1.png
預測使用的配置文件必須與訓練一致,如您經過 python3 tools/train.py -c configs/rec/ch_ppocr_v2.0/rec_chinese_lite_train_v2.0.yml
完成了中文模型的訓練, 您可使用以下命令進行中文模型預測。
# 預測中文結果 python3 tools/infer_rec.py -c configs/rec/ch_ppocr_v2.0/rec_chinese_lite_train_v2.0.yml -o Global.pretrained_model={path/to/weights}/best_accuracy Global.load_static_weights=false Global.infer_img=doc/imgs_words/ch/word_1.jpg
將準備好的txt文件和圖片文件夾路徑分別寫入配置文件的 Train/Eval.dataset.label_file_list
和 Train/Eval.dataset.data_dir
字段下,Train/Eval.dataset.data_dir
字段下的路徑和文件裏記載的圖片名構成了圖片的絕對路徑。
PaddleOCR提供了訓練腳本、評估腳本和預測腳本。
開始訓練:
若是您安裝的是cpu版本,請將配置文件中的 use_gpu
字段修改成false
# GPU訓練 支持單卡,多卡訓練,經過 '--gpus' 指定卡號。 # 啓動訓練,下面的命令已經寫入train.sh文件中,只需修改文件裏的配置文件路徑便可 python3 -m paddle.distributed.launch --gpus '0,1,2,3,4,5,6,7' tools/train.py -c configs/cls/cls_mv3.yml
PaddleOCR提供了多種數據加強方式,若是您但願在訓練時加入擾動,請在配置文件中取消Train.dataset.transforms
下的RecAug
和RandAugment
字段的註釋。
默認的擾動方式有:顏色空間轉換(cvtColor)、模糊(blur)、抖動(jitter)、噪聲(Gasuss noise)、隨機切割(random crop)、透視(perspective)、顏色反轉(reverse),隨機數據加強(RandAugment)。
訓練過程當中除隨機數據加強外每種擾動方式以50%的機率被選擇,具體代碼實現請參考: rec_img_aug.py randaugment.py
因爲OpenCV的兼容性問題,擾動操做暫時只支持linux
PaddleOCR支持訓練和評估交替進行, 能夠在 configs/cls/cls_mv3.yml
中修改 eval_batch_step
設置評估頻率,默認每1000個iter評估一次。訓練過程當中將會保存以下內容:
├── best_accuracy.pdopt # 最佳模型的優化器參數 ├── best_accuracy.pdparams # 最佳模型的參數 ├── best_accuracy.states # 最佳模型的指標和epoch等信息 ├── config.yml # 本次實驗的配置文件 ├── latest.pdopt # 最新模型的優化器參數 ├── latest.pdparams # 最新模型的參數 ├── latest.states # 最新模型的指標和epoch等信息 └── train.log # 訓練日誌
若是驗證集很大,測試將會比較耗時,建議減小評估次數,或訓練完再進行評估。
注意,預測/評估時的配置文件請務必與訓練一致
評估數據集能夠經過修改configs/cls/cls_mv3.yml
文件裏的Eval.dataset.label_file_list
字段設置。
export CUDA_VISIBLE_DEVICES=0 # GPU 評估, Global.checkpoints 爲待測權重 python3 tools/eval.py -c configs/cls/cls_mv3.yml -o Global.checkpoints={path/to/weights}/best_accuracy
使用 PaddleOCR 訓練好的模型,能夠經過如下腳本進行快速預測。
經過 Global.infer_img
指定預測圖片或文件夾路徑,經過 Global.checkpoints
指定權重:
# 預測分類結果 python3 tools/infer_cls.py -c configs/cls/cls_mv3.yml -o Global.pretrained_model={path/to/weights}/best_accuracy Global.load_static_weights=false Global.infer_img=doc/imgs_words/ch/word_1.jpg
字段 | 用途 | 默認值 | 備註 |
---|---|---|---|
use_gpu | 設置代碼是否在gpu運行 | true | \ |
epoch_num | 最大訓練epoch數 | 500 | \ |
log_smooth_window | log隊列長度,每次打印輸出隊列裏的中間值 | 20 | \ |
print_batch_step | 設置打印log間隔 | 10 | \ |
save_model_dir | 設置模型保存路徑 | output/{算法名稱} | \ |
save_epoch_step | 設置模型保存間隔 | 3 | \ |
eval_batch_step | 設置模型評估間隔 | 2000 或 [1000, 2000] | 2000 表示每2000次迭代評估一次,[1000, 2000]表示從1000次迭代開始,每2000次評估一次 |
cal_metric_during_train | 設置是否在訓練過程當中評估指標,此時評估的是模型在當前batch下的指標 | true | \ |
load_static_weights | 設置預訓練模型是不是靜態圖模式保存(目前僅檢測算法須要) | true | \ |
pretrained_model | 設置加載預訓練模型路徑 | ./pretrain_models/CRNN/best_accuracy | \ |
checkpoints | 加載模型參數路徑 | None | 用於中斷後加載參數繼續訓練 |
use_visualdl | 設置是否啓用visualdl進行可視化log展現 | False | 教程地址 |
infer_img | 設置預測圖像路徑或文件夾路徑 | ./infer_img | | |
character_dict_path | 設置字典路徑 | ./ppocr/utils/ppocr_keys_v1.txt | \ |
max_text_length | 設置文本最大長度 | 25 | \ |
character_type | 設置字符類型 | ch | en/ch, en時將使用默認dict,ch時使用自定義dict |
use_space_char | 設置是否識別空格 | True | 僅在 character_type=ch 時支持空格 |
label_list | 設置方向分類器支持的角度 | ['0','180'] | 僅在方向分類器中生效 |
save_res_path | 設置檢測模型的結果保存地址 | ./output/det_db/predicts_db.txt | 僅在檢測模型中生效 |
字段 | 用途 | 默認值 | 備註 |
---|---|---|---|
name | 優化器類名 | Adam | 目前支持Momentum ,Adam ,RMSProp , 見ppocr/optimizer/optimizer.py |
beta1 | 設置一階矩估計的指數衰減率 | 0.9 | \ |
beta2 | 設置二階矩估計的指數衰減率 | 0.999 | \ |
clip_norm | 所容許的二範數最大值 | \ | |
lr | 設置學習率decay方式 | - | \ |
name | 學習率decay類名 | Cosine | 目前支持Linear ,Cosine ,Step ,Piecewise , 見ppocr/optimizer/learning_rate.py |
learning_rate | 基礎學習率 | 0.001 | \ |
regularizer | 設置網絡正則化方式 | - | \ |
name | 正則化類名 | L2 | 目前支持L1 ,L2 , 見ppocr/optimizer/regularizer.py |
factor | 學習率衰減係數 | 0.00004 | \ |
在ppocr中,網絡被劃分爲Transform,Backbone,Neck和Head四個階段
字段 | 用途 | 默認值 | 備註 |
---|---|---|---|
model_type | 網絡類型 | rec | 目前支持rec ,det ,cls |
algorithm | 模型名稱 | CRNN | 支持列表見algorithm_overview |
Transform | 設置變換方式 | - | 目前僅rec類型的算法支持, 具體見ppocr/modeling/transform |
name | 變換方式類名 | TPS | 目前支持TPS |
num_fiducial | TPS控制點數 | 20 | 上下邊各十個 |
loc_lr | 定位網絡學習率 | 0.1 | \ |
model_name | 定位網絡大小 | small | 目前支持small ,large |
Backbone | 設置網絡backbone類名 | - | 具體見ppocr/modeling/backbones |
name | backbone類名 | ResNet | 目前支持MobileNetV3 ,ResNet |
layers | resnet層數 | 34 | 支持18,34,50,101,152,200 |
model_name | MobileNetV3 網絡大小 | small | 支持small ,large |
Neck | 設置網絡neck | - | 具體見ppocr/modeling/necks |
name | neck類名 | SequenceEncoder | 目前支持SequenceEncoder ,DBFPN |
encoder_type | SequenceEncoder編碼器類型 | rnn | 支持reshape ,fc ,rnn |
hidden_size | rnn內部單元數 | 48 | \ |
out_channels | DBFPN輸出通道數 | 256 | \ |
Head | 設置網絡Head | - | 具體見ppocr/modeling/heads |
name | head類名 | CTCHead | 目前支持CTCHead ,DBHead ,ClsHead |
fc_decay | CTCHead正則化係數 | 0.0004 | \ |
k | DBHead二值化係數 | 50 | \ |
class_dim | ClsHead輸出分類數 | 2 | \ |
字段 | 用途 | 默認值 | 備註 |
---|---|---|---|
name | 網絡loss類名 | CTCLoss | 目前支持CTCLoss ,DBLoss ,ClsLoss |
balance_loss | DBLossloss中是否對正負樣本數量進行均衡(使用OHEM) | True | \ |
ohem_ratio | DBLossloss中的OHEM的負正樣本比例 | 3 | \ |
main_loss_type | DBLossloss中shrink_map所採用的的loss | DiceLoss | 支持DiceLoss ,BCELoss |
alpha | DBLossloss中shrink_map_loss的係數 | 5 | \ |
beta | DBLossloss中threshold_map_loss的係數 | 10 | \ |
字段 | 用途 | 默認值 | 備註 |
---|---|---|---|
name | 後處理類名 | CTCLabelDecode | 目前支持CTCLoss ,AttnLabelDecode ,DBPostProcess ,ClsPostProcess |
thresh | DBPostProcess中分割圖進行二值化的閾值 | 0.3 | \ |
box_thresh | DBPostProcess中對輸出框進行過濾的閾值,低於此閾值的框不會輸出 | 0.7 | \ |
max_candidates | DBPostProcess中輸出的最大文本框數量 | 1000 | |
unclip_ratio | DBPostProcess中對文本框進行放大的比例 | 2.0 | \ |
字段 | 用途 | 默認值 | 備註 |
---|---|---|---|
name | 指標評估方法名稱 | CTCLabelDecode | 目前支持DetMetric ,RecMetric ,ClsMetric |
main_indicator | 主要指標,用於選取最優模型 | acc | 對於檢測方法爲hmean,識別和分類方法爲acc |
字段 | 用途 | 默認值 | 備註 |
---|---|---|---|
dataset | 每次迭代返回一個樣本 | - | - |
name | dataset類名 | SimpleDataSet | 目前支持SimpleDataSet 和LMDBDateSet |
data_dir | 數據集圖片存放路徑 | ./train_data | \ |
label_file_list | 數據標籤路徑 | ["./train_data/train_list.txt"] | dataset爲LMDBDateSet時不須要此參數 |
ratio_list | 數據集的比例 | [1.0] | 若label_file_list中有兩個train_list,且ratio_list爲[0.4,0.6],則從train_list1中採樣40%,從train_list2中採樣60%組合整個dataset |
transforms | 對圖片和標籤進行變換的方法列表 | [DecodeImage,CTCLabelEncode,RecResizeImg,KeepKeys] | 見ppocr/data/imaug |
loader | dataloader相關 | - | |
shuffle | 每一個epoch是否將數據集順序打亂 | True | \ |
batch_size_per_card | 訓練時單卡batch size | 256 | \ |
drop_last | 是否丟棄因數據集樣本數不能被 batch_size 整除而產生的最後一個不完整的mini-batch | True | \ |
num_workers | 用於加載數據的子進程個數,若爲0即爲不開啓子進程,在主進程中進行數據加載 | 8 |
DataLoader reader thread raised an exception!
將配置文件的train loader batch_size_per_card
改成8便可