人工智能(AI)和深度學習(Deep Learning)在最近幾年得到迅猛的發(fā)展憾朴,除了AlphaGO擊敗人類棋手外狸捕,AI正在向生活的各個領域進軍。更讓人激動的是众雷,國內外的互聯(lián)網巨頭們紛紛將自己的深度學習產品開源灸拍,讓每個人都有機會參與到人工智能的開發(fā)中。
幾年前開源的Hadoop成就了大數(shù)據(jù)的爆發(fā)砾省,眼下眾多深度學習框架的開源必將在未來幾年內引領下一波人工智能的大爆發(fā)鸡岗。對于沒有抓住上次機會的小伙伴們來說,現(xiàn)在的機會不容錯過编兄。
Rapp也開始了深度學習之旅轩性,并且先給自己制訂了一個小目標:打造一款簡單的AI產品,比如圖像識別app
經過一番Google和深入思考狠鸳,我打算使用以下的策略來開發(fā):
- 選擇谷歌的TensorFlow作為后端的AI引擎(不要問我為什么選擇它揣苏,也不要花過多時間比較哪個深度學習框架最好,先拿一個來學件舵,以后再嘗試其他的)
- 現(xiàn)在沒有大量的圖片數(shù)據(jù)作為訓練集怎么辦卸察?那就先利用TensorFlow預先訓練好的圖像識別模型:Inception-v3,它能識別1000種類別的物體芦圾,對于初學者來說已經足夠強大
- 使用Shiny為App開發(fā)UI和Server端程序
- 最終的效果是:用戶上傳一張圖片(jpg格式)蛾派,app會識別圖片中的主要物體,列出前幾種可能的物體名稱以及它們的置信度
我們先來安裝TensorFlow(基于Ubuntu系統(tǒng)):
- 先安裝pip
$ sudo apt-get install python-pip python-dev - 再安裝TensorFlow
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0rc0-cp27-none-linux_x86_64.whl
$ sudo pip install --upgrade $TF_BINARY_URL
接下來个少,準備TensorFlow預先訓練好的圖像識別模型:
- 找到classify_image.py程序的路徑洪乍,比如:
/usr/local/lib/python2.7/dist-packages/tensorflow/models/image/imagenet/classify_image.py - 第一次運行該程序的時候會自動下載模型文件,默認的目錄是/tmp/imagenet夜焦,可以用--model_dir參數(shù)設置模型保存的目錄:
$ python classify_image.py --model_dir model - 在默認的情況下壳澳,程序會對一張自帶的熊貓照片進行識別,如果一切正常茫经,你會看到識別的結果巷波,排在第一位的就是“giant panda”
TensorFlow的準備工作已經結束,下面我們需要用Shiny來開發(fā)Web應用卸伞。Shiny應用程序的開發(fā)很敏捷抹镊,只需要安裝好Shiny Server,再寫2個程序:ui.R(用戶界面)和server.R(服務器端程序)荤傲,上傳到指定目錄下即可通過瀏覽器使用垮耳。(本文的重點并不是介紹Shiny程序的開發(fā)和部署,如果讀者對這個方面感興趣,可以繼續(xù)關注【App開發(fā)】系列文章)
以下是Shiny程序的代碼:
ui.R
server.R
我給開發(fā)好的app起了個名字:RappEyes终佛,并部署在我的個人網站上:http://112.74.107.44/shiny/rappeyes
打開網頁后俊嗽,RappEyes會對TensorFlow自帶的熊貓照片進行識別:
也可以自己上傳圖片:
當背景比較干凈的時候,識別準確率會很高:
我以為RappEyes會告訴我它們是apple铃彰,沒想到還讓我學習了用英語怎么說“青蘋果”:Granny Smith绍豁,真是意外收獲:)
掌握deep learning是一件很有挑戰(zhàn)性的任務,我們今天只是邁出了第一步:安裝了TensorFlow牙捉,對圖像識別有了一個感性的認識竹揍,也練習了基于R的Web開發(fā)。我相信鹃共,“邊學習邊應用”是掌握一門技能最好的方法鬼佣,希望今天的文章能給大家?guī)硪恍椭?/p>
如果你喜歡本文驶拱,歡迎積極打賞:)