利用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
需要把164行examples_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資料集路徑
如果在相應的輸出路徑生成record檔案,則說明轉換成功
三、利用TFRcord在SSD架構下訓練model
1、下載SSD訓練model
下載地址:
2、解壓到一定路徑,進入檔案將model.ckpt.*的三個檔案copy到VOC資料夾下面
3、將object_detection/samples/configs/ssd_mobilenet_v1_pets.config檔案copy到2步驟資料夾下,修改配置:
A) num_classes:修改為自己的
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,將他copy到object_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的一致,不然會無法獲取model的size)
--output_directory ../result
在相應資料夾下出現pb檔案說明固化成功
下面就可以直接用這個model了