致謝聲明
本文在學(xué)習(xí)《Tensorflow object detection API 搭建屬于自己的物體識(shí)別模型(1)——環(huán)境搭建與測(cè)試》的基礎(chǔ)上優(yōu)化并總結(jié)衣式,此博客鏈接:https://blog.csdn.net/dy_guox/article/details/79081499,感謝此博客作者。
0.前言
在進(jìn)行本文操作之前屁柏,需要先安裝好tensorflow的gpu版本闷串。
本文作者的環(huán)境:python3.6鸳址、Windows10、tensorflow_gpu1.10
已經(jīng)安裝好的可以跳過(guò)躲株,學(xué)習(xí)如何安裝tensorflow的gpu版本的讀者請(qǐng)閱讀本文作者的另外一篇文章《深度學(xué)習(xí)環(huán)境搭建-CUDA9.0、cudnn7.3镣衡、tensorflow_gpu1.10的安裝》霜定,鏈接:http://www.reibang.com/p/4ebaa78e0233
本文是寫(xiě)給目標(biāo)檢測(cè)入門新手的指導(dǎo)文章档悠,會(huì)用示意圖將每一步的詳細(xì)實(shí)現(xiàn)過(guò)程展示出來(lái)。
本文作者接觸深度學(xué)習(xí)2個(gè)月后望浩,開(kāi)始進(jìn)行目標(biāo)檢測(cè)實(shí)踐辖所。
本文作者的專題《目標(biāo)檢測(cè)》,鏈接:http://www.reibang.com/c/fd1d6f784c1f
此專題的宗旨是讓基礎(chǔ)較為薄弱的新手能夠順利實(shí)現(xiàn)目標(biāo)檢測(cè)磨德,專題內(nèi)容偏向于掌握技能缘回,學(xué)會(huì)工具的使用。
本文作者尚未具備清楚講述目標(biāo)檢測(cè)原理的能力典挑,學(xué)習(xí)原理請(qǐng)自行另找文章酥宴。
文章編號(hào) | 文章名 | 鏈接 |
---|---|---|
1 | 目標(biāo)檢測(cè)實(shí)踐_tensorflow版SSD運(yùn)行示例 | http://www.reibang.com/p/c1d8f1c76de7 |
2 | 目標(biāo)檢測(cè)實(shí)踐_tensorflow版SSD數(shù)據(jù)準(zhǔn)備 | http://www.reibang.com/p/3d9436b4cb66 |
3 | 目標(biāo)檢測(cè)實(shí)踐_tensorflow版SSD訓(xùn)練自己的數(shù)據(jù) | http://www.reibang.com/p/0e5f9df4686a |
4 | 目標(biāo)檢測(cè)實(shí)踐_tensorflow版SSD模型測(cè)試 | http://www.reibang.com/p/7464c5e00716 |
1.訪問(wèn)tensorflow在github的主頁(yè)
tensorflow在github的主頁(yè)鏈接:https://github.com/tensorflow
主頁(yè)界面如下圖所示。
Repository中文叫做知識(shí)庫(kù)搔弄,對(duì)于程序員來(lái)說(shuō)即代碼庫(kù)幅虑。
tensorflow這個(gè)用戶中有很多Repository,我們需要的目標(biāo)檢測(cè)代碼在models這個(gè)Repository中顾犹。
如下圖2個(gè)紅色箭頭標(biāo)注處所示倒庵,都是我們想要找的models這個(gè)代碼庫(kù)。
這2個(gè)紅色箭頭標(biāo)注處炫刷,隨意選擇一個(gè)點(diǎn)擊擎宝,進(jìn)入下一步。
注意:因?yàn)楸疚膶?xiě)作的時(shí)間與讀者瀏覽網(wǎng)址的時(shí)間不同浑玛,所以本文寫(xiě)作時(shí)的界面與讀者瀏覽網(wǎng)址時(shí)的界面也可能不同绍申,讀者需要在主頁(yè)中往下翻即可找到models這個(gè)代碼庫(kù)。
models這個(gè)代碼庫(kù)也可以使用鏈接直接訪問(wèn):https://github.com/tensorflow/models
代碼庫(kù)界面如下圖所示顾彰。
從下圖中上方紅色箭頭標(biāo)注處可以看出极阅,這個(gè)代碼庫(kù)被44617人點(diǎn)贊,說(shuō)明代碼庫(kù)的流行程度高涨享,受眾程度廣筋搏。
下圖中下方紅色箭頭標(biāo)注處的research文件夾,我們需要的目標(biāo)檢測(cè)在這個(gè)文件夾中厕隧。
點(diǎn)擊下圖中下方紅色箭頭標(biāo)注處奔脐,進(jìn)入下一步。
models這個(gè)代碼庫(kù)中的research文件夾也可以使用鏈接直接訪問(wèn):https://github.com/tensorflow/models/tree/master/research
models這個(gè)代碼庫(kù)中的research文件夾頁(yè)面如下圖所示:
從上圖中可以看出沒(méi)有object_detection這個(gè)文件夾吁讨,讀者需要在頁(yè)面中往下翻可以找到髓迎。
在頁(yè)面中往下翻找到object_detection文件夾如下圖紅色箭頭標(biāo)注處所示。
點(diǎn)擊下圖中紅色箭頭標(biāo)注處,進(jìn)入下一步。
models這個(gè)代碼庫(kù)中的research/object_detection文件夾頁(yè)面如下圖所示厅克。
也可以使用鏈接直接訪問(wèn):https://github.com/tensorflow/models/tree/master/research/object_detection
在上圖頁(yè)面中往下翻释液,可以看到research/object_detection文件夾的指導(dǎo)文件README.md涣雕,如下圖所示艰亮。
閱讀README.md中的內(nèi)容,可以獲得英文版Tensorflow Object Detection API的使用指導(dǎo)挣郭。
2.下載代碼庫(kù)
在models代碼庫(kù)的界面中迄埃,有下載整個(gè)代碼庫(kù)的按鈕,如下圖紅色箭頭標(biāo)注處所示:
通過(guò)vpn訪問(wèn)github兑障,速度會(huì)加快侄非。
從下圖中可以看出,本文作者下載此代碼庫(kù)的速度為5.4MB/s
本文作者將此代碼庫(kù)上傳到百度云盤流译,下載鏈接: https://pan.baidu.com/s/1TnHvqNLT0JEZlugrdyABhQ 提取碼: fnp3
對(duì)于本文的讀者來(lái)說(shuō)逞怨,其實(shí)只需要代碼庫(kù)models中的research/object_detection文件夾就可以。
代碼庫(kù)models文件大小有439M福澡,但是object_detection文件夾只有17M左右叠赦。
壓縮文件object_detection.zip的百度云盤下載鏈接:https://pan.baidu.com/s/1Q9SxtKlOqEty08tpFeUUHA 提取碼: p2sm
下載完成后,在桌面新建文件夾目標(biāo)檢測(cè)革砸,將壓縮文件object_detection.zip放入其中除秀,如下圖所示。
選擇解壓到object_detection算利,如下圖所示册踩。
解壓完成后,文件夾目標(biāo)檢測(cè)中的文件情況如下圖所示效拭。
3.proto文件轉(zhuǎn)py文件
3.1 下載和安裝protoc
Protobuf(Google Protocol Buffers)是google開(kāi)發(fā)的的一套用于數(shù)據(jù)存儲(chǔ)暂吉,網(wǎng)絡(luò)通信時(shí)用于協(xié)議編解碼的工具庫(kù)。它和XML和Json數(shù)據(jù)差不多缎患,把數(shù)據(jù)已某種形式保存起來(lái)慕的。Protobuf相對(duì)與XML和Json的不同之處,它是一種二進(jìn)制的數(shù)據(jù)格式挤渔,具有更高的傳輸业稼,打包和解包效率。
下載Protobuf網(wǎng)址:https://github.com/google/protobuf/releases
下載Protobuf網(wǎng)址頁(yè)面如下圖所示蚂蕴,下圖中紅色箭頭標(biāo)注處是Protobuf在操作系統(tǒng)Windows中可以直接運(yùn)行的protoc程序,下載該壓縮文件protoc-3.6.1-win32.zip
俯邓。
將壓縮文件
protoc-3.6.1-win32.zip
解壓后的文件夾bin中的文件protoc.exe
復(fù)制到路徑:C:\Windows
本文作者復(fù)制文件后骡楼,確認(rèn)路徑
C:\Windows
有文件protoc.exe
,如下圖所示稽鞭。3.2 使用protoc
在工程object_detection文件夾中鸟整,找到文件夾protos,如下圖所示:
進(jìn)入文件夾protos朦蕴,從下圖中可以看出文件夾中有很多以proto為后綴的文件篮条。
接下來(lái)的操作弟头,就是把這些proto文件轉(zhuǎn)換為py文件。
與工程object_detection文件夾同級(jí)目錄中涉茧,打開(kāi)cmd赴恨。
具體操作示意圖如下圖所示,在資源管理器的路徑中輸入
cmd
伴栓,按Enter鍵進(jìn)入伦连。在cmd中輸入并運(yùn)行命令:
jupyter notebook
如下圖紅色箭頭標(biāo)注處所示:
在隨后彈出的瀏覽器界面中選擇新建一個(gè)ipynb文件,即點(diǎn)擊選擇New->Python3钳垮。
具體操作示意圖如下圖所示惑淳。
將下面一段代碼復(fù)制到第1個(gè)單元格中,并且運(yùn)行此段代碼饺窿。
運(yùn)行此段代碼的按鈕選擇Cell->Run Cells即可歧焦。
import os
file_list = os.listdir('object_detection/protos/')
proto_list = [file for file in file_list if '.proto' in file]
print('object_detection/proto文件夾中共有%d個(gè)proto文件' %len(proto_list))
for proto in proto_list:
execute_command = 'protoc object_detection/protos/%s --python_out=.' %proto
os.popen(execute_command)
file_list = os.listdir('object_detection/protos/')
py_list = [file for file in file_list if '.py' in file]
print('通過(guò)protoc命令產(chǎn)生的py文件共有%d個(gè)' %(len(py_list) - 1))
上面一段代碼的運(yùn)行結(jié)果如下圖所示。
如果顯示通過(guò)protoc命令產(chǎn)生的py文件共有27個(gè)
肚医,重新運(yùn)行此段代碼即可绢馍。
重新進(jìn)入文件夾object_detection/protos,文件按照文件名排序忍宋。
從下圖中可以看出文件夾中每個(gè)proto文件后都有一個(gè)py文件痕貌,即將proto文件轉(zhuǎn)py文件成功。
4.下載模型
4.1 下載壓縮文件
下載模型指的是下載已經(jīng)訓(xùn)練好的模型糠排。
在文件object_detection_tutorial.ipynb中有下載模型的代碼語(yǔ)句舵稠。
代碼可以運(yùn)行,但是無(wú)法得到結(jié)果入宦,因?yàn)榇a中的下載鏈接是國(guó)外的網(wǎng)址哺徊。
壓縮文件ssd_mobilenet_v1_coco_2017_11_17.zip上傳到百度網(wǎng)盤,
鏈接: https://pan.baidu.com/s/1ywlp46lK-WYZ_11sUXqftw 提取碼: yv5i
4.2 解壓壓縮文件
將下載好的壓縮文件放到工程object_detection文件夾中乾闰,如下圖所示落追。
選擇解壓到ssd_mobilenet_v1_coco_20...,如下圖紅色箭頭標(biāo)注處所示涯肩。
注意轿钠,不要選擇解壓到當(dāng)前文件夾,否則代碼運(yùn)行時(shí)會(huì)無(wú)法找到模型文件病苗。
4.3 正確解壓示意
如下圖紅色箭頭標(biāo)注處所示疗垛,在壓縮文件解壓后,工程object_detection文件夾中有文件夾ssd_mobilenet_v1_coco_2017_11_17硫朦。
文件夾ssd_mobilenet_v1_coco_2017_11_17中有文件夾saved_model和6個(gè)文件贷腕。
5.運(yùn)行ipynb文件
5.1 打開(kāi)ipynb文件
在工程object_detection文件夾中運(yùn)行cmd。
即在資源管理器的路徑中輸入cmd,按Enter鍵進(jìn)入泽裳。
具體操作示意圖如下圖所示瞒斩。
在cmd中輸入并運(yùn)行命令:
jupyter notebook
如下圖紅色箭頭標(biāo)注處所示:
在新打開(kāi)的瀏覽器界面中打開(kāi)代碼文件object_detection_tutorial.ipynb。
點(diǎn)擊下圖紅色箭頭標(biāo)注處即可打開(kāi)代碼文件涮总。
代碼文件的頁(yè)面如下圖所示胸囱。
5.2 刪除代碼塊
將代碼文件的界面下拉到出現(xiàn)Download Model代碼塊。
刪除下圖中下方紅色箭頭標(biāo)注處的代碼塊妹卿。
操作方法是在選中此代碼塊的情況下旺矾,點(diǎn)擊下圖中上方紅色箭頭標(biāo)注處的剪切按鈕。
此代碼塊的作用是從網(wǎng)絡(luò)中下載模型夺克,這一步我們已經(jīng)在本文第4章中實(shí)現(xiàn)箕宙。
刪除代碼塊成功后,代碼文件的界面如下圖所示铺纽。
5.3 運(yùn)行代碼
在代碼文件的界面中選擇運(yùn)行所有代碼塊柬帕。
具體操作示意圖如下圖所示,點(diǎn)擊下圖中紅色箭頭標(biāo)注處即可狡门。
如果代碼成功運(yùn)行的話陷寝,運(yùn)行結(jié)果如下圖所示。
6.總結(jié)
- 本篇文章只是tensorflow版SSD的第1步其馏。
- 希望讀者閱讀此文章凤跑,能夠順利完成目標(biāo)檢測(cè)的入門。