east的模型在檢測自然場景下的英文文字有著較好的效能,要實現中文場景下的中文文字檢測,需要重新訓練模型,本篇文章就是在此基礎上,經歷了無數次的奔潰,雖然沒有達到預期,也算跑出來乙個結果。
天池競賽官網鏈結
east-github**:
opencv-east文字檢測這個位址是網上的朋友用python直接呼叫已經訓練好的模型進行檢測,附上**分享。
生活不易,喜歡就點個star吧~~
觀點參考:用east這個模型來進行中文文字檢測存在著很大的缺陷,有些很清晰的文字也檢測不出來,同時中的長文字檢測也具有缺陷。如果你想要得到很高的精度,建議可以嘗試其他模型。
2.1 技術分析
亮點簡單的管道實現在當時較高精度的文字檢測。
• 影象通過fcn處理產生畫素級文字縮放地圖和幾何圖形的多個頻道。
• 可旋轉的文字框,可以檢測文字也可以檢測單詞。
具體的分析可以參照文字檢測之east
我的裝置:
ubuntu 16.04
tensorflos 1.4
cuda 8.0
3.0 環境配置
當然也可以直接download zip
resnet v1 50 provided by tensorflow slim: slim resnet v1 50
谷歌雲盤
資料集處理:
資料集要按照原作者的命名方式修改,即使你使用的icdar3013這類的資料集,也需要修改一下命名方式。
原**資料集的命名方式:1.jpg 1.txt
我用來處理資料集進行重新命名的** 處理後的資料集按照image1.jpg image2.jpg這樣的命令方式
訓練命令:
python multigpu_train.py --gpu_list=0 --input_size=512 --batch_size_per_gpu=14 --checkpoint_path=/tmp/east_icdar2015_resnet_v1_50_rbox/ \ --text_scale=512 --training_data_path=/data/ocr/icdar2015/ --geometry=rbox --learning_rate=0.0001 --num_readers=24 \ --pretrained_model_path=/tmp/resnet_v1_50.ckpt
這裡記錄了我大大小小的奔潰合集。希望可以對其他朋友有所幫助。
4.1 tensorflow安裝後匯入報錯:libcudnn.so.6:cannot open sharedobject file :no such file or directory.
解決辦法:
1、 檢視cuda的版本 cat /usr/local/cuda/version.txt
檢視你的系統資訊 uname -m && cat /etc/*release
sudo ln -s libcudnn.so.6.0.20 libcudnn.so.6
sudo ln -s libcudnn.so.6 libcudnn.so
4.2 faided to find any matching files for /tmp/resnet_v1_50.ckpt
錯誤描述:奇怪令人奔潰的錯誤只有,只是資料夾的指向不對,按照github上覆制的命令需要修改
解決辦法:把訓練命令中–pretrained_model_path=/tmp/resnet_v1_50.ckpt 檔案路徑前的/去掉,改為–pretrained_model_path=tmp/resnet_v1_50.ckpt 如果出現無法找到檔案,同樣的修改方式,把檔案路徑前的/去掉
4.3 執行eval.py 出現 g++:error :unrecognized command line option 『-fno-plt』以及 can』t compile lanms
錯誤描述最讓我奔潰的錯誤,網上分析有說是編譯版本問題,更新gcc版本並沒有解決問題。鼓搗了一整天,然後在github專案裡的issue找到了解決方法。
lanms是作者建立的乙個c函式的庫(描述可能有錯誤,大概是這個意思),在eval.py中import lanms,使用lanms來調整boxs,作者們可能是考慮到了編譯問題等巴啦巴拉,在**的上一行作者備註了使用python中自帶的函式nms來解決相同的問題,據作者描述可能只是速度的問題。
解決方法:
直接將eval.py檔案中100行的boxes = lanms.merge_quadrangle_n9(boxes.astype(『float32』), nms_thres)
換作boxes = nms_locality.nms_locality(boxes.astype(np.float64), nms_thres)
使用python函式庫而不是lanms的函式庫
同時備註掉import lanms。這樣就不會出現編譯錯誤又可以執行**拉。
4.4 test 過程,執行eval.py沒有報錯,但是在output_dir上也沒有對應的輸出等等。
錯誤分析:1、就是檢測不出來,模型訓練的問題以及名稱問題;
2、output_dir 路徑應該和test的路徑一致(可能只是我這裡的問題);
python eval.py --test_data_path=tmp/test_images/ --gpu_list=0 --checkpoint_path=tmp/east_icdar2015_resnet_v1_50_rbox/ \ --output_dir=tmp/test_images/
EAST文字檢測學習整理
復現 傳統的文字檢測方法和一些基於深度學習的文字檢測方法,大多是multi stage,在訓練時需要對多個stage調優,這勢必會影響最終的模型效果,而且非常耗時 針對上述存在的問題,本文提出了端到端的文字檢測方法,消除中間多個stage 如候選區域聚合,文字分詞,後處理等 直接 文字行 提出了基於...
EAST文字檢測與Keras實現
2.east模型介紹 2.1 east模型結構 east的網路結構總共包含三個部分 feature extractor stem 特徵提取分支 feature merging branch 特徵合併分支 以及 output layer 輸出層 圖1 east模型結構 在特徵提取分支部分,主要由四層卷...
文字檢測演算法 EAST閱讀筆記
多種文字檢測演算法效能對比及演算法介紹 之前的文字檢測演算法在處理較難的場景時往往會出錯,即使是使用了深度學習演算法的也表現的不好,因為這些演算法由多個步驟組成,不僅耗時,表現還不好。本文提出了乙個簡單的能夠快速準確定位場景文字的演算法,改演算法直接 任意形狀或矩形word或者行文字。在 icdar...