0
本文作者: AI研習(xí)社-譯站 | 2018-09-17 15:03 |
本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 Tensorflow Vs Keras? — Comparison by building a model for image classification,作者為DataTurks: Data Annotations Made Super Easy。
翻譯 | shunshun 整理 | 凡江
是的,標(biāo)題中的問題在數(shù)據(jù)科學(xué)家之間的談話中是很常見。有人說TensorFlow更好,有人說Keras更好。讓我們看看這個(gè)問題在圖像分類的實(shí)際應(yīng)用中的答案。
在此之前,先介紹Keras和Tensorflow這兩個(gè)術(shù)語,幫助你在10分鐘內(nèi)構(gòu)建強(qiáng)大的圖像分類器。
Tensorflow是開發(fā)深度學(xué)習(xí)模型最常用的庫。它是有史以來最好的庫,在日常實(shí)驗(yàn)中被許多極客選擇。如果我說Google已經(jīng)將Tensor Processing Units(TPU)用于處理張量,你能想象嗎?是的,他們已經(jīng)這樣做了。他們提出了一個(gè)名為TPU的獨(dú)立實(shí)例,它具有最強(qiáng)大的功率驅(qū)動(dòng)計(jì)算能力來處理tensorflow的深度學(xué)習(xí)模型。
我現(xiàn)在將幫助你使用tensorflow創(chuàng)建一個(gè)功能強(qiáng)大的圖像分類器。等等!什么是分類器?這只是一個(gè)簡單的問題,你向你的tensorflow代碼詢問,給定的圖像是玫瑰還是郁金香。所以,首先的首先,讓我們?cè)跈C(jī)器上安裝tensorflow。官方文檔有兩個(gè)版本,即CPU和GPU版本。對(duì)于CPU版本:
請(qǐng)注意,我是在GPU上而非CPU上進(jìn)行實(shí)驗(yàn)后才寫的這篇博客。這里給出了詳細(xì)的GPU安裝。
現(xiàn)在,讓我們采用Google的Tensorflow進(jìn)行實(shí)驗(yàn)來訓(xùn)練模型。谷歌的這個(gè)倉庫有許多令人驚嘆的處理圖像的簡單實(shí)驗(yàn)的腳本。它非常簡潔,足以滿足我們的目的。還記得前面我用過“強(qiáng)大”這個(gè)詞嗎?是的,當(dāng)我們使用稱為遷移學(xué)習(xí)的方法時(shí),這個(gè)詞就會(huì)生效。遷移學(xué)習(xí)是一種有效的方式,它使用預(yù)訓(xùn)練模型,這些模型已經(jīng)訓(xùn)練了幾天或幾周,然后改變最后一層以適應(yīng)我們自己的類別。
Inception V3是一個(gè)非常好的模型,在[2015 ImageNet Challenge](http://image-net.org/challenges/LSVRC/2015/results)圖像分類競賽中排名第二。當(dāng)數(shù)據(jù)集的每個(gè)類別具有較少圖像數(shù)量時(shí),它被提及為遷移學(xué)習(xí)的最佳網(wǎng)絡(luò)。
Inception V3
現(xiàn)在克隆git倉庫:
現(xiàn)在,你可以選擇圖像。你所要做的就是以下面的方式存儲(chǔ)數(shù)據(jù)集文件夾。
FLOWER DATA
它看起來應(yīng)該像上面圖那樣(忽略image.py)。通過下面代碼獲得flower_photos文件夾:
創(chuàng)建數(shù)據(jù)
你可以使用任何你喜歡的圖像。越多越好(目標(biāo)是幾千)。向上面文件夾格式那樣以類別將它們分開,并確保它們?cè)谝粋€(gè)名為tf_files的文件夾中。
你可以下載已經(jīng)存在的有多種任務(wù)使用的數(shù)據(jù)集,如癌癥檢測,權(quán)力的游戲中的人物分類。這里有各種圖像分類數(shù)據(jù)集。
或者,如果你有自己獨(dú)特的用例,則可以為其創(chuàng)建自己的數(shù)據(jù)集。你可以從網(wǎng)上下載圖像并立即制作大型數(shù)據(jù)集,使用像Dataturks這樣的注釋工具,你可以手動(dòng)上傳圖像并標(biāo)記圖像。更好的是,Dataturks的輸出可以很容易地用于構(gòu)建tf_files。
使用Dataturks創(chuàng)建數(shù)據(jù)
我發(fā)現(xiàn)了一個(gè)很棒的插件,可以在Google Chrome上批量下載圖像。這個(gè)和Dataturks將使構(gòu)建訓(xùn)練數(shù)據(jù)變得輕而易舉。鏈接在這里。
您可以嘗試使用dataturks的image_classification工具執(zhí)行此操作。這里該工具提供的最佳功能是,如果我們有一個(gè)非結(jié)構(gòu)化數(shù)據(jù)集,其中所有圖像都在一個(gè)文件夾中。通過手動(dòng)標(biāo)記圖像的類別,你可以下載一個(gè)json文件,該文件包含嵌入其中的類的圖像的所有詳細(xì)信息。然后使用下面給出的keras和tensorflow腳本:
訓(xùn)練
現(xiàn)在是時(shí)候訓(xùn)練模型了。在tensorflow-for-poets-2文件夾中,有一個(gè)名為scripts的文件夾,它包含重新訓(xùn)練模型所需的一切。retrain.py有一種特殊的裁剪和縮放圖像的方式,非??帷?/p>
然后使用以下命令訓(xùn)練,選項(xiàng)名稱本身描述所需的訓(xùn)練路徑的位置。
這將下載inception模型并使用training文件夾和給定的參數(shù)訓(xùn)練最后一層。我使用12GB Nvidia Tesla k80和7GB Vram在GCP實(shí)例上訓(xùn)練了4000步。
訓(xùn)練時(shí)80%數(shù)據(jù)集用作訓(xùn)練,20%用作測試,我們可以看到,它給出了91%的test_accuracy?,F(xiàn)在是時(shí)候測試了!我們?cè)赻tf_files/`中有一個(gè).pb文件,可用于測試。`label_image.py`中添加了以下更改:
上面的代碼將幫助我們繪制正在測試的圖像的準(zhǔn)確性并保存它。對(duì)于rodom圖像的置信度百分比如下所示
下面顯示了幾個(gè)測試圖像的輸出
包含所有類別的少量輸出的拼貼畫
正如我們所看到的,結(jié)果對(duì)于所述任務(wù)來說真的很好了。
Keras是一個(gè)基于TensorFlow構(gòu)建的高級(jí)API(也可以在Theano之上使用)。與Tensorflow相比,它更加用戶友好且易于使用。如果我們是所有這些深度學(xué)習(xí)的新手,并想從頭開始編寫一個(gè)新模型,那么我會(huì)建議使用Keras,因?yàn)槠湟鬃x性和易寫性。可以通過下面指令安裝:
甚至這個(gè)東西都包含了tensorflow,所以CPU v/s GPU兼容性變化也將適用于此。
因?yàn)椋覀儽仨殘?zhí)行使用inception模型的遷移學(xué)習(xí)對(duì)花進(jìn)行分類的相同任務(wù),我已經(jīng)看到Keras以標(biāo)準(zhǔn)格式加載模型,如API編寫的那樣。
Keras有一種加載數(shù)據(jù)集的標(biāo)準(zhǔn)格式,即我們不是直接在數(shù)據(jù)集文件夾中提供文件夾,而是手動(dòng)劃分訓(xùn)練和測試數(shù)據(jù),并按以下方式排列。我使用了我在tensorflow部分下載的相同數(shù)據(jù)集,并按照以下說明進(jìn)行了一些更改。
它看起來應(yīng)該如下所示:
TRAIN FOLDER
至于,我們現(xiàn)在已完成數(shù)據(jù)集的設(shè)置,是時(shí)候進(jìn)行訓(xùn)練了。我已經(jīng)寫了一小段代碼來進(jìn)行下面的訓(xùn)練:
想要繼續(xù)閱讀并且查看更多代碼、鏈接和參考文獻(xiàn)?
戳鏈接:http://www.gair.link/page/TextTranslation/997
雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
A研習(xí)社每日更新精彩內(nèi)容,點(diǎn)擊鏈接http://www.gair.link/page/translate即可觀看更多精彩內(nèi)容:
如何利用深度學(xué)習(xí)和 Pytorch 實(shí)現(xiàn)推薦系統(tǒng)
想了解 MIT 發(fā)布的最新編程語言 Julia,這篇文章就夠了
開發(fā)者必看:8月 Python 熱門開放源碼
亞馬遜、谷歌、微軟等各家公司人臉識(shí)別對(duì)比
斯坦福CS231n李飛飛計(jì)算機(jī)視覺經(jīng)典課程(中英雙語字幕+作業(yè)講解+實(shí)戰(zhàn)分享)
等你來譯:
使用 Python 完成自動(dòng)特征工程——如何自動(dòng)創(chuàng)建機(jī)器學(xué)習(xí)特征
利用 Pytorch 和 CoreML 建立一個(gè)風(fēng)格轉(zhuǎn)換的 iOS 程序
10個(gè) Python 中常見的安全問題以及如何避免他們
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。