Tensorflow Object Detection API 訓練圖表分類模型-ssd_mobilenet_v2(tfrecord數據準備+訓練+測試)

結合上一章內容,本章節將結合實際需要,使用Tensorflow Object Detection API從頭訓練符合自己需求的圖和表的檢測分類模型.

需求說明:輸入拍攝的文本頁面圖片,目標是訓練一個可以正確檢測圖片上的圖和表格並在圖片畫出其bounding box,之前用yolo也做過檢測,不過效果不太好,會出現檢測不準確甚至漏檢情況,於是這次想嘗試api的檢測效果,模型使用ssd_mobilenet_v2.

1,訓練數據準備:

因爲之前用yolo做過檢測,所以訓練數據都放在一個文件夾下,另外還有一個.txt文件,.txt文件包含了圖片路徑,圖標的bounding box及對應的類別,如圖:

每行分別代表圖片路徑 xmin ymin xmax ymax label(0代表graph, 1代表table),一張圖片可能有多個圖表,所以每一行圖片可能有多個xmin ymin xmax ymax label.我分別有兩個這樣的.txt文件,一個是訓練集,一個是測試集,在後續生成tfrecode格式數據的時候分別生成即可.

2,tfrecord格式訓練數據生成:

tfrecord訓練數據的生成網上有很多,我參照官網代碼生成自己的數據,tfrecord生成的時候可以選擇生成一個或者多個.record文件,我參照最新代碼生成多個文件,具體代碼參考https://pan.baidu.com/s/1WO2OmMFyyBvqeOxtX9-xyQ,下載後將該代碼放在下載的api的research目錄下,然後python3 creratet_table_tf_record.py --data_dir=存放原始圖片的路徑 --output_dir=存放生成的數據的目錄(訓練和測試目錄一樣)執行即可.記得6行改成直接的圖片路徑,分別生成訓練和測試數據時候114行table_test.record記得改(table_test.record, table_train.record),這是生成的訓練和測試的名字.執行完後會在指定目錄生成多個文件:

3,準備訓練配置文件:

本次使用ssd_mobilenet_v2檢測模型,所以將object_detection/samples/configs/ssd_mobilenet_v2_coco.config複製到存放剛剛生成的record文件的目錄下,然後在該目錄新建table_label_map.pbtxt文件,並添加內容:

因爲tfrecord格式中的label都是從1開始,所以這從1開始(雖然txt中graph爲0,table爲1,但是在生成tfrecord的時候代碼中已經把graph改成了1,table改成了2,所以和這裏是一樣的)

然後在該目錄繼續執行

sed -i "s|PATH_TO_BE_CONFIGURED|指定存放tfrecord數據的當前路徑|g" ssd_mobilenet_v2_coco.config, (注意這是一行代碼,例如
sed -i "s|PATH_TO_BE_CONFIGURED|/home/user/model/reaearch/objectdetect/data|g" ssd_mobilenet_v2_coco.config)

4,檢測模型訓練:

在安裝的api目錄的research目錄下執行(本人用的python3)

python3 object_detection/model_main.py \
    --pipeline_config_path=ssd_mobilenet_v2_coco.config文件路徑 \
    --model_dir=存放訓練模型的路徑(沒有會自己創建) \
    --num_train_steps=50000 \
    --num_eval_steps=2000 \
    --alsologtostderr

(num_train_steps是訓練次數,本人是gpu訓練,所以指定五萬次)

5,tensorboard 查看訓練過程:

執行tensorboard --logdir model_dir路徑,然後打開tensorboard就能看到訓練過程和訓練圖片,如圖:

6,分類模型預測:

tensorboard object detect api中的models/research/objectdetect/目錄下提供了一個object_detection_tutorial.ipynb文件可以做預測,本人對其進行改造,將其寫入.py文件中進行預測,預測前先要將訓練的模型轉爲.pb文件,上篇博客提到了如何操作,而且官網也有說明,很簡單的,這裏就不在闡述.此外,你也可以直接在.ipynb文件預測都可以的,預測結果:

 

可以看到預測不錯,下一步將把該模型遷移到android平臺進行測試....

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