ABCNet訓練測試自定義數據集

ABCNet:基於自適應貝塞爾曲線的實時端到端自然場景文字檢測及識別網絡

論文推薦ABCNet

論文鏈接 : https://arxiv.org/abs/2002.10200
官方開源代碼: https://github.com/aim-uofa/AdelaiDet

論文是2020 CVPR 收錄, 貢獻1)提出採用貝塞爾曲線來擬合任意形狀文本,2)提出貝塞爾對齊方式更準確地提取文本實例 .

環境配置和運行demo.py遇到的問題

系統配置:ubuntu16.04 + cuda10.0
因該項目基於最新的detecron2構建,需要torch>=1.3.建議隔離一個虛擬環境安裝相應的庫.

Q1 運行python setup.py build develop編譯adet庫時出現, /usr/bin/ld: cannot find -lcudart

  • 問題原因:安裝的/usr/local/cuda-10.0/lib64/中cudart庫不完整.
    ls -lh /usr/local/cuda-10.0/lib64 | grep cudart
    完整的lib64目錄下包含四個文件:

    libcudart.so
    libcudart.so.10.0
    libcudart.so.10.0.130
    libcudart_static.a

  • 解決方案:重裝cuda-10.0, 或者將某個安裝完整的cuda10.0的這幾個文件拷貝到對應目錄即可.
    再重新運行之前編譯命令,編譯成功後會如圖所示完成AdelaiDet安裝.
    在這裏插入圖片描述

Q2 運行ABCnet的測試代碼:python -m e demo/demo.py --config-file configs/BAText/CTW1500/attn_R_50.yaml --input totaltext/Images/Test --opts MODEL.WEIGHTS test/ctw1500_attn_R_50.pth出現如下問題
QObject::moveToThread: Current thread (0x55f48724d2a0) is not the object’s thread (0x55f485279c70

  • 解決方案:未解決.可指定"–output"來將測試結果輸出到目錄,暫時避免這個問題.

基於AdelaiDet訓練自定義ABCNet

數據集

  • abcnet數據標籤生成
    自定義abcnet的數據集,以labelme的目標框標註爲例生成.轉換腳本百度雲提取碼: 42v4
  • 數據集結構
data
	└── train
	    ├── 0001.jpg
	    ├── 0002.jpg
	    └── 0003.jpg
	└── test
		    ├──1001.jpg
		    ├── 1002.jpg
		    └── 1003.jpg
	└── annotations
	    ├── train.json
	    ├── test.json
  • 修改相關配置文件進行訓練
    • 將製作好的data數據目錄放在"AdelaiDet/datasets"目錄
    • 修改"adet/data/builtin.py"中的_PREDEFINED_SPLITS_TEXT值來指定訓練測試數據,注意這裏默認是在datasets下的,所以它們的相對路徑都是從下層目錄開始的.
    _PREDEFINED_SPLITS_TEXT = {
    "totaltext_train": ("totaltext/train_images", "totaltext/train.json"),
    "totaltext_val": ("totaltext/test_images", "totaltext/test.json"),
    ...
    "abcnet_train": ("data/train", "data/annotations/train.json"),
    "abcnet_test": ("data/test", "data/annotations/test.json"),}
    
  • 在需要訓練的配置文件中指定數據集即可.以configs/BAText/CTW1500/Base-CTW1500.yaml爲例,
    DATASETS:
    # detail cfg: AdelaiDet/adet/data/builtin.py
      TRAIN: ("abcnet_train",)
      TEST: ("abcnet_test",)
    
  • 訓練 OMP_NUM_THREADS=1 python tools/train_net.py --config-file configs/BAText/TotalText/attn_R_50.yaml --num-gpus 1
    “args”: ["–config-file",“configs/BAText/CTW1500/attn_R_50.yaml”,
    “–input” ,“totaltext/Images/Test”,
    “–output”,“output/total”,
    // “–webcam”,
    “–opts”, “MODEL.WEIGHTS”, “pretrained/ctw1500_attn_R_50.pth”,
  • 推理python demo/demo.py ---config-file configs/BAText/TotalText/attn_R_50.yaml –input datasets/data/test --output res --opts “MODEL.WEIGHTS output/batext/ctw1500/attn_R_50/model_0009999.pth

樣例展示

測試圖片爲total-text測試圖
在這裏插入圖片描述

當前的不足:訓練了中文手寫和英文印刷體,比較直觀的問題是測試出現了比較多的漏檢,密集文本行間會出現預測的貝塞爾曲線交叉問題.即有密集文本粘連問題.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章