0
本文作者: 夏睿 | 2017-02-09 17:42 |
編者按:Pete Warden是TensorFlow移動(dòng)團(tuán)隊(duì)的技術(shù)負(fù)責(zé)人。曾在Jetpac擔(dān)任首次技術(shù)官。Jetpac的深度學(xué)習(xí)技術(shù)經(jīng)過優(yōu)化,可在移動(dòng)和嵌入式設(shè)備上運(yùn)行。該公司已于2014年被谷歌收購。Pete還曾在蘋果公司從事GPU優(yōu)化領(lǐng)域的圖像處理工作,并為O'Reilly撰寫多本數(shù)據(jù)處理方面的書籍。本文為Pete Warden為一般大眾撰寫的如何用TensorFlow構(gòu)建圖片分類器(TensorFlow for poets,How to build your own image classifier with no coding),希望讓不太懂機(jī)器學(xué)習(xí)專業(yè)知識(shí)的人也能享受到機(jī)器學(xué)習(xí)的益處。以下為雷鋒網(wǎng)編譯。(此前雷鋒網(wǎng)報(bào)道過如何用TensorFlow搭建圖像識(shí)別系統(tǒng)的文章,詳情請點(diǎn)擊查看)
剛開始著手研究深度學(xué)習(xí)時(shí),我發(fā)現(xiàn)在這個(gè)領(lǐng)域真是難起步??晒﹨⒖嫉馁Y料沒有多少,就算有,也只有那些很懂行的學(xué)術(shù)研究員們才能看得懂。不過幸好,隨著過去這幾年指導(dǎo)深度學(xué)習(xí)的資料越來越多,入門已經(jīng)不像過去那么高不可攀了。
我一直覺得,把EC2設(shè)計(jì)成連詩人也會(huì)用的形式,很不錯(cuò)。它讓用戶一步步利用基本的計(jì)算機(jī)知識(shí),通過在平臺(tái)上搭建一個(gè)簡單的應(yīng)用,以省去那些又難懂、又沒必要的過程。不過到目前為止,我還沒看到一個(gè)同樣有大眾化用戶群體的深度學(xué)習(xí)平臺(tái)。為此,我向大家展示了如何在不會(huì)電腦編程的情況下,用TensorFlow搭建一個(gè)屬于自己圖片分類器。以下是具體步驟(相關(guān)Youtube視頻請點(diǎn)擊這里):
第一步:安裝Docker
為什么需要Docker呢?
讓TensorFlow在OS X 上進(jìn)行本地化運(yùn)行應(yīng)該是沒什么問題。但是像Python這樣的開發(fā)工具,安裝時(shí)的標(biāo)準(zhǔn)化程度就沒那么高,給出的指令不能統(tǒng)一適用。為了方便起見,我使用的是免費(fèi)版Docker應(yīng)用容器引擎,以便在 MacBook Pro.上安裝Linux虛擬機(jī)( virtual machine)。Docker下載地址請點(diǎn)擊這里。
安裝完成后是這樣的:
第二步:安裝TensorFlow
安裝并運(yùn)行了Docker以后,我們可以得到一個(gè)預(yù)裝TensorFlow的Linux虛擬機(jī)。然后:
1.下載能在Docker上應(yīng)用的TensorFlow(下載地址:https://www.tensorflow.org/get_started/os_setup#docker-installation)
2.在終端機(jī)(treminal)上用下列指令使它能夠正常運(yùn)行(此過程下載和提取內(nèi)容較多,可能會(huì)比較耗時(shí)):
3.下載完成后,你會(huì)看到一個(gè)新的終端機(jī),也就是你已經(jīng)下載好的Linux 虛擬機(jī)。點(diǎn)擊下述指令,確保安裝成功。
4.現(xiàn)在,你能看到一系列目錄,包括TensorFlow目錄,***.build文件和其他,如下圖所示:
第三步:優(yōu)化Docker
Docker通常被用來測試網(wǎng)頁應(yīng)用。在運(yùn)行這個(gè)功能時(shí),計(jì)算性能無關(guān)緊要,所以虛擬機(jī)中處理器的運(yùn)行速度不算快。但是在構(gòu)建圖片分類器這個(gè)案例中,計(jì)算機(jī)需要處理大量運(yùn)算,因此,在這里我們必須優(yōu)化一下Docker的計(jì)算速度。
Docker 內(nèi)部使用VirtualBox驅(qū)動(dòng),所以,我們將用VirtualBox 的控制面板來管理設(shè)置。方法如下:
1.在你的Mac上找到VirtualBox應(yīng)用并打開它,你會(huì)在面板左側(cè)看到虛擬機(jī)。現(xiàn)在它應(yīng)該處于default(系統(tǒng)默認(rèn)值)。
2.右鍵點(diǎn)擊“default”,在出現(xiàn)的菜單選擇Close->ACPI Shutdown
3.關(guān)閉完成后,“default”下方會(huì)出現(xiàn)“Powered off”,再次點(diǎn)擊右鍵,在出現(xiàn)的菜單中選擇“Settings”。
4. 點(diǎn)擊“System”圖標(biāo),然后選擇“Motherboard”選項(xiàng)卡。
5. 拖動(dòng)“Base Memory”滑塊到綠色部分。一般讓它占筆記本電腦總內(nèi)存的75%左右。我把它設(shè)置為12GB,我的電腦是16GB的。
6.點(diǎn)擊“Processor”,把處理器數(shù)量設(shè)置為大于1。通常,在MacBook Pro上設(shè)置4比較好,不過用滑塊下的綠色條作為參考也可以。
7.點(diǎn)擊設(shè)置對話框上的“OK”,右鍵點(diǎn)擊 “default”,選擇“Start->Headless Start”。
8.再次運(yùn)行下列指令:
完成這一系列的操作后,虛擬機(jī)就可以借助計(jì)算機(jī)的計(jì)算能力,加快運(yùn)轉(zhuǎn)速度啦!
第四步:下載圖片
下面的步驟則基于TensorFlow的圖形再訓(xùn)練案例(詳情請點(diǎn)擊這里)。
它展示了如何把你的圖片分到不同目錄的文件夾下,并再用它快速訓(xùn)練起始圖片識(shí)別神經(jīng)網(wǎng)絡(luò)的頂層,以識(shí)別這些目錄。
1.接下來,你需要得到一些案例照片。進(jìn)入終端機(jī)中,如果你仍看到“root@…”提示,那么這說明你仍處在Linux虛擬機(jī)環(huán)境下。那么,你需要點(diǎn)擊“exit”,退出虛擬機(jī)。
2.運(yùn)行以下命令,在Downloads 目錄中創(chuàng)建一個(gè)新文件夾以保存訓(xùn)練圖像,并下載、提取花朵照片:
3.完成之后,你會(huì)看到一個(gè)新的窗口,如下所示:
這表明你已經(jīng)成功下載花朵的案例圖片。另外,你還可以在文件里換上其他種類的花或照片,然后把文件名改成對應(yīng)名稱。
第五步:在虛擬機(jī)上運(yùn)行文件夾
1.有了可供訓(xùn)練的照片之后,你就可以在Linux上使用文件夾里使用它們了,以便把照片放到TensorFlow上:
2.出現(xiàn)一個(gè)Linux提示。為確保文件夾正常在虛擬機(jī)上共享,嘗試下列指令:
3.生成花朵文件夾列表,如下:
第六步:更新代碼
本案例需要使用到最新的代碼,并且以下會(huì)涉及到源代碼控制程序git。
1.抽取代碼需要一個(gè)默認(rèn)郵箱地址:
2.抽取最新資源:
3.現(xiàn)在,你應(yīng)該已經(jīng)處在vim窗口下。點(diǎn)擊“quit”離開。完成之后你就做的了最新的版本的代碼。接下來,將它同步到一個(gè)可運(yùn)行的版本中,運(yùn)行下列命令:
第七步:編制代碼
這一步的任務(wù)是編制代碼。在指令中,你會(huì)發(fā)現(xiàn)有一些優(yōu)化標(biāo)記,它可以用AVX加快處理器的運(yùn)行:
編制代碼可能會(huì)持續(xù)5-10分鐘,此過程可能會(huì)彈出很多警告。不過不要擔(dān)心,這是正常現(xiàn)象。
第八步:運(yùn)行代碼
運(yùn)行以下命令可運(yùn)行重訓(xùn)練程序:
接下來會(huì)出現(xiàn)下載初始模型的信息,然后是一長串創(chuàng)造瓶頸( bottlenecks)的信息。如果你想知道后臺(tái)具體是怎么運(yùn)行的,可以點(diǎn)擊這里。
我已經(jīng)把default /tmp 目標(biāo)改成了輸出圖像和shared /tf_files 中的已緩存瓶頸,這樣從OS X中也可以獲得最后結(jié)果,并保存在不同的虛擬機(jī)中。
瓶頸緩存完成后,就進(jìn)入到照片訓(xùn)練過程。這可能要花費(fèi)5min左右的時(shí)間。最后的輸出線路精確值應(yīng)該在90%左右,也就是說,如果有10張照片的話,你的圖片分類器能把其中9張正確分類到其對應(yīng)的文件夾中。
第九步:使用圖片分類器
經(jīng)過分類的圖片被放在/tmp/output_graph.pb中。將它進(jìn)行一下測試,那么你可以得到另外一份樣本代碼。label_image示例是一個(gè)小C ++程序,它可以加載圖形并將其應(yīng)用于用戶提供的圖像中??梢栽囋囅旅娌襟E:
你會(huì)看到它已經(jīng)能分辨出一張雛菊的照片了。因?yàn)橛?xùn)練過程是隨機(jī)進(jìn)行的,所以你的模型可能有時(shí)會(huì)出錯(cuò),你可以再嘗試一些其他圖片,看看它的成績?nèi)绾巍?/p>
大功告成
是不是已經(jīng)迫不及待想讓它在你的應(yīng)用里運(yùn)行了呢?很簡單,只需在 Downloads/tf_images 目錄下創(chuàng)建一個(gè)新的文件夾,把你想訓(xùn)練的圖片放在子文件夾里,然后重新運(yùn)行分類器。
現(xiàn)在,在應(yīng)用里運(yùn)行它吧!把label_image示例作為模板,可以很清楚的看到是否可以將C ++集成到你的產(chǎn)品中,它甚至可以再移動(dòng)設(shè)備上運(yùn)行。想在智能手機(jī)上運(yùn)行,請查看Android示例代碼。
最后我希望本教程能夠激發(fā)你的靈感,讓你能夠多思考怎樣利用深度學(xué)習(xí)幫助用戶獲得更好的體驗(yàn)。感謝觀看~
via:oreilly
更多類似教程,請?jiān)诶卒h網(wǎng)站內(nèi)搜索關(guān)鍵詞“機(jī)器學(xué)習(xí)教程”、“TensorFlow”等~
【兼職召集令!】
如果你對未來充滿憧憬,喜歡探索改變世界的科技進(jìn)展,look no further!
我們需要這樣的你:
精通英語,對技術(shù)與產(chǎn)品感興趣,關(guān)注人工智能學(xué)術(shù)動(dòng)態(tài)的蘿莉&萌妹子&技術(shù)宅;
文字不求妙筆生花,但希望通俗易懂;
在這里,你會(huì)收獲:
一群來自天南地北、志同道合的小伙伴;
前沿學(xué)術(shù)科技動(dòng)態(tài),每天為自己充充電;
更高的生活品質(zhì),翻翻文章就能掙到零花錢;
有意向的小伙伴們把個(gè)人介紹/簡歷發(fā)至 guoyixin@leiphone.com,如有作品,歡迎一并附上。
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。