參考鏈接:github.com/tensorflow/models/tree/master/object_detection
?準(zhǔn)備:已安裝tensorFlow力细,HomeBrew,pip埋凯,tensorflow下的models握础。
models鏈接:github.com/tensorflow/models
首先進(jìn)入激活虛擬機(jī):
source python2.7/bin/activate
我是使用的虛擬機(jī)安裝的辐董,所以實(shí)際我運(yùn)行的是linux的環(huán)境。首先我需要安裝wget弓候,用于獲取網(wǎng)絡(luò)東西郎哭。
brew install wget
步驟1:安裝Libraries和依賴
pip install pillow
pip install lxml
?pip install jupyter
pip install matplotlib
如果發(fā)現(xiàn)安裝完jupyter之后,jupyter命令還是找不到菇存,則執(zhí)行
export PATH="$HOME/Library/Python/2.7/bin:$PATH"
步驟2:Protobuf Compilation & Add Libraries to PYTHONPATH
因?yàn)閐etection api使用的是Protobuf(谷歌的)來配置模型和參數(shù),所以在每次重新打開終端運(yùn)行前邦蜜,都需要重新執(zhí)行以下命令依鸥,編譯protobuf庫。
#From tensorflow/models/
protoc object_detection/protos/*.proto --python_out=.
protoc 命令可能找不到悼沈,需要安裝.我是下載了protobuf的源碼贱迟,然后編譯安裝的姐扮。
#From tensorflow/models/
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
步驟3:測試安裝
python object_detection/builders/model_builder_test.py
步驟4:準(zhǔn)備數(shù)據(jù)
訓(xùn)練要用到的數(shù)據(jù)為TF Record格式的數(shù)據(jù),所以我們需要將jpg圖片數(shù)據(jù)轉(zhuǎn)換成TFRecord數(shù)據(jù)衣吠。首先茶敏,我們從網(wǎng)上下載標(biāo)記好的圖片數(shù)據(jù)。下載地址為:www.robots.ox.ac.uk/~vgg/data/pets/
執(zhí)行如下命令缚俏,在tensorflow/models/object_detection下
然后解壓數(shù)據(jù):
tar -xvf annotations.tar.gz
tar -xvf images.tar.gz
會發(fā)現(xiàn)惊搏,image下全是標(biāo)記好的圖片(jpeg,jpg)。調(diào)用腳本忧换,將圖片數(shù)據(jù)轉(zhuǎn)換成TFRecord數(shù)據(jù)恬惯。
python create_pet_tf_record.py --data_dir=`pwd`--output_dir=`pwd`
執(zhí)行完成后,將會在該目錄下生產(chǎn)pet_train.record 和pet_val.record兩個文件
訓(xùn)練還需要一個標(biāo)簽文件,用于標(biāo)記某個標(biāo)記代表某種東西(這里是寵物)刹缝,而這個標(biāo)簽文件已存在于object_detection/data目錄下:
步驟5:配置通道
在object_detection/samples下有各種模型的通道配置,拷貝一種出來梢夯。我拷貝了ssd_inception_v2_pets.config放在object_detection/models新建的model下讹堤。然后我把生成的兩個配置文件放到了object_detection/data下
目錄結(jié)構(gòu)參考如下:
配置所需要更改的是如下3部分:
配置之后為:
檢查點(diǎn)的下載地址為:github.com/tensorflow/models/blob/master/object_detection/g3doc/detection_model_zoo.md
步驟5:訓(xùn)練
數(shù)據(jù)都準(zhǔn)備好了姑尺,就可以開始訓(xùn)練了竟终。在object_detection的目錄下有個train.py的訓(xùn)練腳本。
調(diào)用該腳本切蟋,開始訓(xùn)練统捶。
python object_detection/train.py \
--logtostderr \
--pipeline_config_path=object_detection/models/model/ssd_inception_v2_pets.config \
--train_dir=object_detection/models/model/train ?
--pipeline_config_path 指定訓(xùn)練通道路徑,--train_dir 指定訓(xùn)練的結(jié)果輸出路徑
然后等待,開始的損失很高喘鸟,會逐漸降低匆绣。loss值越低,表示模型準(zhǔn)確率越高什黑。
步驟5:評估
再開一個終端崎淳,對產(chǎn)生的model進(jìn)行評估。執(zhí)行如下腳本命令
python object_detection/eval.py \
--logtostderr \
--pipeline_config_path=object_detection/models/model/ssd_inception_v2_pets.config \
--checkpoint_dir=object_detection/models/model/train \
--eval_dir=object_detection/models/model/eval
再在另一個終端輸入命令:tensorboard --logdir=object_detection/models/model,即可得到一個鏈接地址愕把,在瀏覽器中輸入即可圖形式的查看拣凹。logdir指向帶有train和eva的目錄地址。
在SCALARS那欄下面可以查看各種線性圖:
在Images那欄可以看到對模型的評估:
PS:訓(xùn)練的時(shí)間有點(diǎn)長礼华,可能需要花費(fèi)幾天時(shí)間咐鹤,當(dāng)loss降到10左右時(shí),在tensorflow上看到的images 是沒標(biāo)記的了圣絮,而且此時(shí)loss下降很祈惶。所以你會懷疑你訓(xùn)練的模型是不是錯了,其實(shí)是沒錯的扮匠,當(dāng)它繼續(xù)往下走的捧请,它就慢慢地正常標(biāo)記了。建議開始使用checkpoint棒搜,時(shí)間會快很多疹蛉。