【tensorflow】Object DetectionAPI訓練識別自己的資料集
#一、資料準備
###1.一個友好的標註工具
各種系統安裝已經再此介紹的很詳細了,linux下可以三行命令解決。
注意:圖片要求是png或者jpg格式
1> . 標註資訊存為xml檔案,使用該指令碼可以將所有的xml檔案轉換為1個csv檔案(自行修改xml路徑)
2> . 把生成的csv檔案分成訓練集和測試集
###2.生成TFRecord檔案
使用該指令碼分別生成train.record 和 test.record.
記得修改其中三處路徑,以及分類標識資料型別(中文有註釋),分兩次執行哦!
#二、環境搭建
###1.tensorflow 版本 >= 1.4.0
具體的安裝,自行百度
###2.部署tensorflow model
1> . 從這裡下載下
注意:下文中的A 都表示下載的model檔案的目錄位置
2> . 這一步分linux和window介紹
------------------------------------------------linux開始----------------------------------------------------
進入A/models/research/目錄,右鍵開啟終端,執行
protoc object_detection/protos/*.proto --python_out=.
新增slim和models/research路徑,相當於環境變數
gedit ~/.bashrc
在該檔案末,新增:
export PYTHONPATH=$PYTHONPATH:/A/models/research/slim:/A/models/research/
更新檔案
source ~/.bashrc
------------------------------------------------linux以上結束----------------------------------------------------
------------------------------------------------window開始-----------------------------------------------------
下載protoc-3.3.0-win32.zip
解壓後,執行一下protoc.exe檔案
開啟cmd視窗,cd到A/models/research/目錄下(老版本沒有research目錄),執行如下:
protoc object_detection/protos/*.proto --python_out=.
將生成一堆python檔案
然後為python新增預設模組搜尋路徑三種方式
本人選擇的第三種,增加.pth檔案
在site-packages新增一個路徑檔案,如mypkpath.pth,必須以.pth為字尾,寫上你要加入的模組檔案所在的目錄名稱,也就是下面兩行:
A\models\research A\models\research\slim
然後儲存為了.pth檔案,名字隨意選,然後放在Python執行能掃描到的地方,我放在了python下的lib下的site-packages裡,因為python執行一定會經過這裡。
------------------------------------------------window以上結束-----------------------------------------------------
3> . 兩個系統都必須經過這一步
測試安裝,進入到A/models/research/目錄下,執行
python object_detection/builders/model_builder_test.py
如果發現前方有坑:
Traceback (most recent call last):
File "object_detection/builders/model_builder_test.py", line 21, in <module>
from object_detection.builders import model_builder
ImportError: No module named 'object_detection'
說明前邊模組檔案路徑配置沒有成功。
#三、訓練自己的資料
###1.下載模型
模型地址
選擇其中的下載
###2.建立標籤分類的配置檔案(label_map.pbtxt)
item {
id: 1 # id一定要從1開始編號
name: 'syjxh'
}
item {
id: 2
name: 'dnb'
}
放在一個位置就好
###3.修改對應的pipline配置檔案
找到\object_detection\samples\configs\XXXXXXXXXXX.config檔案,XXXXXXXXXXX需要和你下載的模型一致的配置檔案,複製到\test\data資料夾下,修改一下幾處:
# ====修改 1=====
num_classes:2 # 根據你的目標分類來,我這裡一共標記了6種物件
# ====修改 2=====
# 因為我們是重新訓練模型,所以這裡註釋掉模型檢測點,並將from_detection_checkpoint該為false
# fine_tune_checkpoint: "PATH_TO_BE_CONFIGURED/model.ckpt"
from_detection_checkpoint: false
num_steps: 200000 # 訓練次數
# ====修改 3=====
train_input_reader: {
tf_record_input_reader {
# 訓練樣本路徑
input_path: "A/models/test/data/train.record"
}
# 標籤分類配置檔案路徑
label_map_path: "A/models/test/label_map.pbtxt"
}
# ====修改 4=====
eval_input_reader: {
tf_record_input_reader {
# 驗證樣本路徑
input_path: "A/models/test/data/eval.record"
}
# 標籤分類配置檔案路徑
label_map_path: "A/models/test/label_map.pbtxt"
shuffle: false
num_readers: 1
}
###4.開始訓練啦!!!!
直接使用object_detection\train.py檔案進行訓練即可,引數如下:
--logtostderr
--pipeline_config_path=F:/TensorFlow/models/test/data/ssd_inception_v2_pets.config
--train_dir=F:/TensorFlow/models/test/training
配置好引數後,直接run起來,接下來就是漫長的等待,訓練過程中可以使用eval.py檔案進行驗證。
目前我還沒跑出結果,截個圖給大家瞅瞅先!還在訓練中,估計跑一天。。。
繼續補充結果