Windows下實(shí)現(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ù)存儲(chǔ)格式,結(jié)構(gòu)擴(kuò)展性高,速度快,密度大。我們下載對(duì)應(yīng)的protoc-3.4.0-win32.zip版本。解壓之后的文件內(nèi)容如下:
將bin文件夾所在路徑添加到環(huán)境變量PATH,再將bin下的protoc.exe移動(dòng)到C:\Windows\System32目錄下。
cmd下進(jìn)入~models/reseach目錄下,輸入:
protoc object_detection/protos/*.proto --python_out=.
2、設(shè)置搜索路徑
Windows下的API使用時(shí)會(huì)出現(xiàn)圖示bug,需要?jiǎng)?chuàng)建xx.pth文件,將以下兩條路徑添加進(jìn)去:
~\models\research
~\models\research\slim
接著,將pth文件移動(dòng)到python安裝目錄的site-packages下。
最后,我們利用cmd運(yùn)行model_builder_test.py文件,測試環(huán)境是否搭建成功。
3、修改pascal_label_map.pbtxt
打開~models/research/object_detection/data/pascal_label_map.pbtxt,修改其中的name為自己的分類名。
如圖所示,這里我要識(shí)別分類的是圖片數(shù)字0~3,所以修改了對(duì)應(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改為絕對(duì)路徑
(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、運(yùn)行
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文件存儲(chǔ)位置。
注:
1、protoc必須使用3.4版本而非3.5,否則會(huì)出現(xiàn)找不到*.proto的bug;
2、運(yùn)行時(shí)出現(xiàn)很多bug,根據(jù)bug一步一步回推代碼修改。
以上這篇Windows下實(shí)現(xiàn)將Pascal VOC轉(zhuǎn)化為TFRecords就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python不相等的兩個(gè)字符串的 if 條件判斷為True詳解
這篇文章主要介紹了python不相等的兩個(gè)字符串的 if 條件判斷為True詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03Python中常用操作字符串的函數(shù)與方法總結(jié)
這篇文章主要介紹了Python中常用操作字符串的函數(shù)與方法總結(jié),包括字符串的格式化輸出與拼接等基礎(chǔ)知識(shí),需要的朋友可以參考下2016-02-02Python如何根據(jù)字幕文件自動(dòng)給視頻添加字幕效果
視頻中字幕的重要性不用多說了,下面這篇文章主要給大家介紹了關(guān)于Python如何根據(jù)字幕文件自動(dòng)給視頻添加字幕效果的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02關(guān)于Django ForeignKey 反向查詢中filter和_set的效率對(duì)比詳解
今天小編就為大家分享一篇關(guān)于Django ForeignKey 反向查詢中filter和_set的效率對(duì)比詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12詳解用Python調(diào)用百度地圖正/逆地理編碼API
這篇文章主要介紹了詳解用Python調(diào)用百度地圖正/逆地理編碼API,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07python+pygame實(shí)現(xiàn)坦克大戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了python+pygame實(shí)現(xiàn)坦克大戰(zhàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09