1. 程式人生 > >利用Tensorflow實現SSD架構model訓練(voc2012)

利用Tensorflow實現SSD架構model訓練(voc2012)

一、VOC圖片獲取

VOC資料下載地址:

 

找到上圖位置,下載training/validation data development kit code and documentation

二、VOC圖片格式轉換為TFRcord

因為tf訓練需要tfrecord格式,所以首先需要把VOC資料集轉換成record格式,ObjectDetectionAPI下提供了格式轉換的方法:create_pascal_tf_record.py

需要把164examples_path修改為:data_dir, year, ‘ImageSets’, ‘main’, FLAGS.set + ‘.txt’

VOC資料集和轉換的record資料集可以自己選擇相應的路徑,把create_pascal_tf_record.py檔案copy到與objectdetection同級目錄下,然後進入dos介面,進入create_pascal_tf_record.py複製後的資料夾路徑下,輸入:

Python  create_pascal_tf_record.py --data_dir=...\VOCdevkit (voc資料集路徑) --year=VOC2012(相應的年份) --set=train --output_path=..\..\**_train.record(輸出檔案路徑)

Python  create_pascal_tf_record.py --data_dir=...\VOCdevkit (voc資料集路徑

) --year=VOC2012(相應的年份) --set=val --output_path=..\..\**_val.record(輸出檔案路徑)

如果在相應的輸出路徑生成record檔案,則說明轉換成功

三、利用TFRcordSSD架構下訓練model

1、下載SSD訓練model

下載地址:

2、解壓到一定路徑,進入檔案將model.ckpt.*的三個檔案copyVOC資料夾下面

3、object_detection/samples/configs/ssd_mobilenet_v1_pets.config檔案copy2步驟資料夾下,修改配置:

A) num_classes:修改為自己的

classes num, 這裡是20

B) 將所有PATH_TO_BE_CONFIGURED的地方類比修改為自己之前設定的路徑(5處),按照自己的路徑修改即可

 

C) 還可以根據自己電腦配置以及訓練效果更改batch_size ,learning rate, step

4、..\models\research\slim下面的deployment nets資料夾copy到與object_detection資料夾同級目錄

5、object_detection 資料夾下找到train.py 將他複製到和object_detection同級目錄下,進入dos視窗,進入train.py路徑下,輸入:

 

Python train.py  --train_dir=’../train’(model 輸出存放路徑)   --pipeline_config_path=’../ssd_mobilenet_v1_pets.config’

出現下圖說明訓練成功

四、固化model

Object detection api 提供了export_inference_graph.py,可將訓練好的model轉換為pb檔案,達到固化的效果

同樣,在object_detection下找到export_inference_graph.py,將他copyobject_detection同級目錄下,進入dos視窗,進入export_inference_graph.py路徑下輸入:

python  export_inference_graph.py  --input_type image_tensor

--pipeline_config_path  ../ssd_mobilenet_v1_pets.config

--trained_checkpoint_prefix  ../model.ckpt[step]* (step是訓練的次數,必須與輸出的model的一致,不然會無法獲取modelsize)

--output_directory  ../result

在相應資料夾下出現pb檔案說明固化成功

下面就可以直接用這個model