Windows下實現(xiàn)將Pascal VOC轉(zhuǎn)化為TFRecords
前言
由于TensorFlow常用TFrecords作為輸入格式,我們需要將制作好的Pascal VOC轉(zhuǎn)為TFrecords格式。使用 object detection API 內(nèi)提供的腳本。
TFRecords格式如下:
-uint64 length
-uint32 masked_crc32_of_length
-byte data[length]
-uint32 masked_crc32_of_data
前置要求:
Anaconda3(使用python3.x)
制作好的Pascal VOC數(shù)據(jù)集
1、配置protobuf
Google的protobuf是一種輕便高效的結(jié)構(gòu)化數(shù)據(jù)存儲格式,結(jié)構(gòu)擴展性高,速度快,密度大。我們下載對應(yīng)的protoc-3.4.0-win32.zip版本。解壓之后的文件內(nèi)容如下:

將bin文件夾所在路徑添加到環(huán)境變量PATH,再將bin下的protoc.exe移動到C:\Windows\System32目錄下。
cmd下進入~models/reseach目錄下,輸入:
protoc object_detection/protos/*.proto --python_out=.
2、設(shè)置搜索路徑
Windows下的API使用時會出現(xiàn)圖示bug,需要創(chuàng)建xx.pth文件,將以下兩條路徑添加進去:
~\models\research
~\models\research\slim
接著,將pth文件移動到python安裝目錄的site-packages下。

最后,我們利用cmd運行model_builder_test.py文件,測試環(huán)境是否搭建成功。

3、修改pascal_label_map.pbtxt
打開~models/research/object_detection/data/pascal_label_map.pbtxt,修改其中的name為自己的分類名。
如圖所示,這里我要識別分類的是圖片數(shù)字0~3,所以修改了對應(yīng)的name。

4、修改create_pascal_tf_record.py文件
(1)47行:根據(jù)自己的VOC數(shù)據(jù)集格式,修改年份,如果是2007,則保持默認(rèn);
(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里的內(nèi)容是~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數(shù)據(jù)位置、轉(zhuǎn)換的record文件存儲位置。
注:
1、protoc必須使用3.4版本而非3.5,否則會出現(xiàn)找不到*.proto的bug;
2、運行時出現(xiàn)很多bug,根據(jù)bug一步一步回推代碼修改。
以上這篇Windows下實現(xiàn)將Pascal VOC轉(zhuǎn)化為TFRecords就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python不相等的兩個字符串的 if 條件判斷為True詳解
這篇文章主要介紹了python不相等的兩個字符串的 if 條件判斷為True詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Python中常用操作字符串的函數(shù)與方法總結(jié)
這篇文章主要介紹了Python中常用操作字符串的函數(shù)與方法總結(jié),包括字符串的格式化輸出與拼接等基礎(chǔ)知識,需要的朋友可以參考下2016-02-02
關(guān)于Django ForeignKey 反向查詢中filter和_set的效率對比詳解
今天小編就為大家分享一篇關(guān)于Django ForeignKey 反向查詢中filter和_set的效率對比詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
詳解用Python調(diào)用百度地圖正/逆地理編碼API
這篇文章主要介紹了詳解用Python調(diào)用百度地圖正/逆地理編碼API,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
python+pygame實現(xiàn)坦克大戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了python+pygame實現(xiàn)坦克大戰(zhàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-09-09

