1. 程式人生 > 程式設計 >Windows下實現將Pascal VOC轉化為TFRecords

Windows下實現將Pascal VOC轉化為TFRecords

前言

由於TensorFlow常用TFrecords作為輸入格式,我們需要將製作好的Pascal VOC轉為TFrecords格式。使用 object detection API 內提供的指令碼。

TFRecords格式如下:

-uint64 length

-uint32 masked_crc32_of_length

-byte data[length]

-uint32 masked_crc32_of_data

前置要求:

Anaconda3(使用python3.x)

製作好的Pascal VOC資料集

1、配置protobuf

Google的protobuf是一種輕便高效的結構化資料儲存格式,結構擴充套件性高,速度快,密度大。我們下載對應的protoc-3.4.0-win32.zip版本。解壓之後的檔案內容如下:

Windows下實現將Pascal VOC轉化為TFRecords

將bin資料夾所在路徑新增到環境變數PATH,再將bin下的protoc.exe移動到C:\Windows\System32目錄下。

cmd下進入~models/reseach目錄下,輸入:

protoc object_detection/protos/*.proto --python_out=.

2、設定搜尋路徑

Windows下的API使用時會出現圖示bug,需要建立xx.pth檔案,將以下兩條路徑新增進去:

~\models\research

~\models\research\slim

接著,將pth檔案移動到python安裝目錄的site-packages下。

Windows下實現將Pascal VOC轉化為TFRecords

最後,我們利用cmd執行model_builder_test.py檔案,測試環境是否搭建成功。

Windows下實現將Pascal VOC轉化為TFRecords

3、修改pascal_label_map.pbtxt

開啟~models/research/object_detection/data/pascal_label_map.pbtxt,修改其中的name為自己的分類名。

如圖所示,這裡我要識別分類的是圖片數字0~3,所以修改了對應的name。

Windows下實現將Pascal VOC轉化為TFRecords

4、修改create_pascal_tf_record.py檔案

(1)47行:根據自己的VOC資料集格式,修改年份,如果是2007,則保持預設;

(2)49行:將data/pascal_label_map.pbtxt改為絕對路徑

(3)81行:改為img_path = os.path.join('JPEGImages'

,data['filename'])

(4)82行:改為full_path =os.path.join(dataset_directory,'VOC2012',img_path+'.jpg')

(5)163行 : 改為examples_path =os.path.join(data_dir,year,'ImageSets','Main','xx' + FLAGES.set + '.txt')

xx裡的內容是~VOCdevkit\VOC2012\ImageSets\Main目錄下的檔案字首名稱,如果沒有,留空就可以。

5、執行

cmd下輸入:

python ~/models/research/object_detection/dataset_tools/create_pascal_tf_record.py\

--data_dir=~/VOCdevkit \

--year=VOC2012 \

--output_path=~/xx.record

其中,波浪線的地方分別為自己的py檔案位置、VOC資料位置、轉換的record檔案儲存位置。

注:

1、protoc必須使用3.4版本而非3.5,否則會出現找不到*.proto的bug;

2、執行時出現很多bug,根據bug一步一步回推程式碼修改。

以上這篇Windows下實現將Pascal VOC轉化為TFRecords就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。