天天看點

深度學習動手入門:GitHub上四個超棒的TensorFlow開源項目TensorFlow簡介項目一:Neural Style項目二:Mozilla Deep Speech項目三:句子分類項目四:圖像分類/物體識别結論

本文來自AI新媒體量子位(QbitAI)

作者簡介:akshay pai,資料科學工程師,熱愛研究機器學習問題。Source Dexter網站創辦人。

TensorFlow是Google的開源深度學習庫,你可以使用這個架構以及Python程式設計語言,建構大量基于機器學習的應用程式。而且還有很多人把TensorFlow建構的應用程式或者其他架構,開源釋出到GitHub上。

這次跟大家分享一些GitHub上令人驚奇的TensorFlow項目,你可以直接在你的應用中使用,或者根據自身所需進一步予以改進。

如果你已經知道TensorFlow是什麼,以及它是如何工作的,建議直接跳到下一節。如果你對使用Python學習TensorFlow感興趣,網上也有相關的教程可以參考。

這一節内容比較傲适合初學者。如前所述,TensorFlow是一個深度學習庫,使用這一架構,可以用來建構和測試深度神經網絡。

深度學習讓我們能夠以極高的準确性建構複雜的應用程式。圖像、視訊、文本、音頻等領域的問題,都可以通過深度學習解決。TensorFlow可以用于實作前述所有應用。

2015年11月9日,Google正式釋出并開源TensorFlow,目前官方正式版本為TensorFlow 1.2。下面這段視訊,是當年TensorFlow剛釋出時,Google釋出的一個官方介紹短片,Jeff Dean等出鏡講述。

TensorFlow很快成為GitHub上使用者最多的深度學習架構。這個庫之是以如此流行,是因為開發人員可以輕松的用其來搭建、測試和部署機器學習應用。

深度學習動手入門:GitHub上四個超棒的TensorFlow開源項目TensorFlow簡介項目一:Neural Style項目二:Mozilla Deep Speech項目三:句子分類項目四:圖像分類/物體識别結論

TensorFlow使用資料流圖,上面是一個TensorFlow的示意圖。我們不用關心這張圖具體代表什麼,但你需要知道,其中的橢圓和正方形代表節點,節點就是一些數學函數,你可以将節點分組形成各種數學計算,并得到輸出。

箭頭代表流動到各個節點的資料。是以TensorFlow也被成為資料流庫。

OK,簡介到此,下面分享四個我非常喜歡的TensorFlow GitHub項目。

這是最酷的TensorFlow GitHub項目之一。神經風格是将一張照片的風格遷移到另一張照片上的過程,同時保留相關的特張。簡單的來說,通過這個項目,你可以使用TensorFlow建立自己的Prisma應用程式。

深度學習動手入門:GitHub上四個超棒的TensorFlow開源項目TensorFlow簡介項目一:Neural Style項目二:Mozilla Deep Speech項目三:句子分類項目四:圖像分類/物體識别結論

如上圖所示,把梵高畫作的風格,遷移到一張獅子的照片上,就得到一個星空風格的獅子照片,這就是所謂的風格遷移。下面再展示一組這個項目的風格遷移,能把這張獅子的照片,變成哪些非常有趣的效果。

深度學習動手入門:GitHub上四個超棒的TensorFlow開源項目TensorFlow簡介項目一:Neural Style項目二:Mozilla Deep Speech項目三:句子分類項目四:圖像分類/物體識别結論

這個項目在風格遷移的同時,還能對圖像進行語義分割。進而實作對内容的前景、背景進行不同的風格遷移處理。這個過程如下圖所示:

深度學習動手入門:GitHub上四個超棒的TensorFlow開源項目TensorFlow簡介項目一:Neural Style項目二:Mozilla Deep Speech項目三:句子分類項目四:圖像分類/物體識别結論

另外這個算法還能适用于視訊處理。

深度學習動手入門:GitHub上四個超棒的TensorFlow開源項目TensorFlow簡介項目一:Neural Style項目二:Mozilla Deep Speech項目三:句子分類項目四:圖像分類/物體識别結論

上述圖檔處理使用的軟硬體如下:

CPU: Intel Core [email protected]×12

GPU: NVIDIA GeForce GTX 1080/PCIe/SSE2

OS: Linux Ubuntu 16.04.1 LTS 64-bit

CUDA: 8.0

python: 2.7.12

tensorflow: 0.10.0rc

opencv: 2.4.9.1

https://github.com/cysmith/neural-style-tf

這個GitHub項目使用TensorFlow将語音轉換為文本。語音轉文本是一個熱門的機器學習領域,然而各地的人們有着不同的口音,這也是一個難以解決的問題。不過仍然可以通過深度學習實作非常不錯的準确性。

其實這個項目,是一個基于百度DeepSpeech架構的TensorFlow實作。換句話說,這個項目是百度的核心,Google的外貌。

百度的相關論文位址在此:

https://arxiv.org/abs/1412.5567

深度學習動手入門:GitHub上四個超棒的TensorFlow開源項目TensorFlow簡介項目一:Neural Style項目二:Mozilla Deep Speech項目三:句子分類項目四:圖像分類/物體識别結論

DeepSpeech是吳恩達帶領百度團隊研發出的成果,最早釋出于2014年底。今年初,百度基于DeepSpeech2,開發出一款名為SwiftScribe的應用(swiftscribe.ai),可以把語音檔案更為快速、便捷的轉換為文字。目前隻限于英文。

回到這個項目。

所需軟體環境如下:

Git Large File Storage

TensorFlow 1.0 or 1.1

SciPy

PyXDG

python_speech_features (nb: deprecated)

python sox

pandas

DeepSpeech native client libraries

如果你有至少8GB顯存的英偉達GPU,強烈建議安裝支援GPU的TensorFlow,因為使用GPU的訓練比CPU快得多。

https://github.com/mozilla/DeepSpeech

句子分類就是識别句子類型的過程。例如,對于“食物非常糟糕”這個句子,你可能希望将其分類為正面句子或負面句子,這也被稱為情緒分析。這個問題的難點在于:句子結構帶來的複雜性。

利用卷積神經網絡,我們可以嘗試建構一個強大的文本分類器。

深度學習動手入門:GitHub上四個超棒的TensorFlow開源項目TensorFlow簡介項目一:Neural Style項目二:Mozilla Deep Speech項目三:句子分類項目四:圖像分類/物體識别結論

這裡介紹的項目,是Yoon Kim論文《Convolutional Neural Networks for Sentence Classification(使用卷積神經網絡進行句子分類)》的簡單實作。這個論文的位址如下:

https://arxiv.org/abs/1408.5882

通過一個簡單的CNN卷積神經網絡,隻進行很少的超參數調整和靜态矢量,就可以得到出色的句子分類結果。

Python 3

Tensorflow > 0.12

Numpy

https://github.com/dennybritz/cnn-text-classification-tf

圖像分類,也就是訓練系統識别貓貓狗狗,或者車道、海灘、天際線等場景。計算機視覺是一個範圍巨大的領域,從面部識别到情感識别,甚至可以進行視覺氣體洩漏檢測。雖然實作流程各異,但底層系統是相通的。

是以作者建立了一個TensorFlow GitHub庫,其中包括兩個互相關聯的部分。第一部分:能夠識别1000個對象的TensorFlow圖像分類器。第二部分:建立并訓練一個全新的圖像分類器。

深度學習動手入門:GitHub上四個超棒的TensorFlow開源項目TensorFlow簡介項目一:Neural Style項目二:Mozilla Deep Speech項目三:句子分類項目四:圖像分類/物體識别結論

Google的TensorFlow圖像識别系統是目前最準确的圖像分類軟體。所謂圖像識别,就是對圖檔中的内容進行識别,然而這并非對任意圖檔都能識别。

隻有被訓練過的對象,系統才能識别。例如,我們用三個類型訓練分類器:貓、狗和牛。三個分類器隻能識别相應類别中的一個。如果給出一張駱駝的圖檔會怎樣?圖檔仍會通過一個分類器,但是置信率會非常的低。

如何快速建立一個TensorFlow圖像分類器?隻需要簡單的三步。當然前提是你已經裝好了TensorFlow,而且懂程式設計、會用Python。

第一步:下載下傳

下載下傳預訓練的模型、圖檔和腳本。使用如下指令即可。

第二步:運作腳本找到最佳預測

給定一個圖檔,運作腳本來進行分類。預設情況下,會顯示最佳預測。

為了獲得top n分類,可以使用如下參數。

示例:比方我們給出這樣一張圖檔。

深度學習動手入門:GitHub上四個超棒的TensorFlow開源項目TensorFlow簡介項目一:Neural Style項目二:Mozilla Deep Speech項目三:句子分類項目四:圖像分類/物體識别結論

分類器表示:這是石榴,準确率98%。

第三步:運作腳本獲得top n識别分類

現在我們嘗試給出一個具有更多屬性的圖像,如下圖的房子。

深度學習動手入門:GitHub上四個超棒的TensorFlow開源項目TensorFlow簡介項目一:Neural Style項目二:Mozilla Deep Speech項目三:句子分類項目四:圖像分類/物體識别結論

從上面的結果可以看出,分類器以95%的可能性預測圖檔中有一個栅欄,另外分類器還發現了其他圍欄、庭院、露台等。

到此為止,你已經學到如何設定TensorFlow圖像識别系統。雖然,這個系統被限制在預訓練模型的幾個分類器之間。

也是三個步驟。

第一步:下載下傳預訓練模型以及所需腳本

我已經把全部所需的檔案整合進一個git倉庫裡。使用下面的指令可以下載下傳。

第二步:設定圖像檔案夾

這個步驟用于設定檔案夾結構,以便資料流圖可以簡單地拾取分類。假設,你想重新訓練五種新的花朵分類器:玫瑰、郁金香、蒲公英、五月花和萬壽菊,那麼需要如下的三個步驟來建立相應的檔案夾結構:

1、為每種花型建立一個檔案夾,檔案夾的名稱就是類型的名稱

2、将花的所有圖像添加到各自的檔案夾中,所有的玫瑰放入玫瑰花檔案夾

3、将所有的檔案夾,添加到一個父檔案夾中,可以命名為:花

然後我們就得到如下的結構:

這樣,檔案夾結構已經OK了。

第三步:運作預訓練腳本

使用如下指令運作腳本。

部分指令行參數:

-model_dir 這個參數給出了預訓練模型的位置。

-image_dir 在步驟二中建立的檔案夾路徑

-output_graph 存儲新訓練圖的位置

-how_many_training_steps 這代表要執行的疊代次數,預設為4000

好了,以上就是如何重新訓練一個TensorFlow Inception模型。一旦你有了模型,就能開始用來進行分類處理。

我希望你們也能體會到上述這些項目的精彩之處。學習一件事最好的方法就是動手去做。如果你還有更值得推薦的TensorFlow GitHub項目,可以留言給我們,讓更多的人看到。今天就先到這裡吧。休息,休息一下~

【完】

本文作者:問耕

原文釋出時間:2017-07-31