天天看點

基于深度學習的自然場景文字檢測及端到端的OCR中文文字識别實作功能 模型訓練 文字方向檢測-vgg分類 OCR 端到端識别:CRNNocr識别采用GRU+CTC端到到識别技術,實作不分隔識别不定長文字識别結果展示文字檢測及OCR識别結果

實作功能

 ●  文字方向檢測 0、90、180、270度檢測

 ●  文字檢測 後期将切換到keras版本文本檢測 實作keras端到端的文本檢測及識别

 ●  不定長OCR識别

環境部署

Bash
##GPU環境
sh setup.sh
##CPU環境
sh setup-cpu.sh
##CPU python3環境
sh setup-python3.sh
使用環境:python3.6+tensorflow1.7+cpu/gpu           

模型訓練

 ●  一共分為3個網絡

 ●  1. 文本方向檢測網絡-Classify(vgg16)

 ●  2. 文本區域檢測網絡-CTPN(CNN+RNN)

 ●  3. EndToEnd文本識别網絡-CRNN(CNN+GRU/LSTM+CTC)

文字方向檢測-vgg分類

基于圖像分類,在VGG16模型的基礎上,訓練0、90、180、270度檢測的分類模型.
詳細代碼參考angle/predict.py檔案,訓練圖檔8000張,準确率88.23%      

模型位址

文字區域檢測CTPN

支援CPU、GPU環境,一鍵部署

文本檢測訓練參考

https://github.com/eragonruan/text-detection-ctpn

OCR 端到端識别:CRNN

ocr識别采用GRU+CTC端到到識别技術,實作不分隔識别不定長文字

提供keras 與pytorch版本的訓練代碼,在了解keras的基礎上,可以切換到pytorch版本,此版本更穩定

如果你隻是測試一下

運作demo.py  寫入測試圖檔的路徑即可,

如果想要顯示ctpn的結果,

修改檔案./ctpn/ctpn/other.py

的draw_boxes函數的最後部分,

cv2.inwrite('dest_path',img),如此,

可以得到ctpn檢測的文字區域框以及圖像的ocr識别結果           

如果你想訓練這個網絡

1 對ctpn進行訓練

 ●  定位到路徑--./ctpn/ctpn/train_net.py

 ●  預訓練的vgg網絡路徑VGG_imagenet.npy将預訓練權重下載下傳下來,pretrained_model指向該路徑即可, 此外整個模型的預訓練權重checkpoint

 ●  ctpn資料集還是百度雲資料集下載下傳完成并解壓後,将.ctpn/lib/datasets/pascal_voc.py 檔案中的pascal_voc 類中的參數self.devkit_path指向資料集的路徑即可

2 對crnn進行訓練

 ●  keras版本 ./train/keras_train/train_batch.py  model_path--指向預訓練權重位置 MODEL_PATH---指向模型訓練儲存的位置keras模型預訓練權重

 ●  pythorch版本./train/pytorch-train/crnn_main.py

parser.add_argument(
    '--crnn',
    help="path to crnn (to continue training)",
    default=預訓練權重的路徑,看你下載下傳的預訓練權重在哪啦)
parser.add_argument(
    '--experiment',
    help='Where to store samples and models',
    default=模型訓練的權重儲存位置,這個自己指定)           

識别結果展示

文字檢測及OCR識别結果

基于深度學習的自然場景文字檢測及端到端的OCR中文文字識别實作功能 模型訓練 文字方向檢測-vgg分類 OCR 端到端識别:CRNNocr識别采用GRU+CTC端到到識别技術,實作不分隔識别不定長文字識别結果展示文字檢測及OCR識别結果

主要是因為訓練的時候,隻包含中文和英文字母,是以很多公式結構是識别不出來的

看看純文字的

基于深度學習的自然場景文字檢測及端到端的OCR中文文字識别實作功能 模型訓練 文字方向檢測-vgg分類 OCR 端到端識别:CRNNocr識别采用GRU+CTC端到到識别技術,實作不分隔識别不定長文字識别結果展示文字檢測及OCR識别結果

可以看到,對于純文字的識别結果還是闊以的呢,感覺可以在crnn網絡在加以改進,現在的crnn中的cnn有點淺,并且rnn層為單層雙向+attention,目前正在針對這個地方進行改動,使用遷移學習,以restnet為特征提取層,使用多層雙向動态rnn+attention+ctc的機制,将模型加深,目前正在進行模型搭建,結果好的話就發上來。

原文釋出時間為:2018-09-29

本文來自雲栖社群合作夥伴“

大資料挖掘DT機器學習

”,了解相關資訊可以關注“

”。

繼續閱讀