不用寫代碼就能實現深度學習?手把手教你用英偉達 DIGITS 解決圖像...

2020-12-13 雷鋒網

雷鋒網按:本文作者劉志,現於西安電子科技大學智能感知與圖像理解教育部重點實驗室,攻讀博士學位,主要研究方向包括機器學習、深度學習、數字圖像處理等。本文系作者獨家供稿,雷鋒網(公眾號:雷鋒網)首發。

  引言

2006年,機器學習界泰鬥Hinton,在Science上發表了一篇使用深度神經網絡進行維數約簡的論文 ,自此,神經網絡再次走進人們的視野,進而引發了一場深度學習革命。深度學習之所以如此受關注,是因為它在諸如圖像分類、目標檢測與識別、目標跟蹤、語音識別、遊戲(AlphaGo)等多個領域取得了相當優秀的成績,掀起了又一波人工只能浪潮。深度學習技術逐漸成為機器學習領域的前沿技術,近年來得到了突飛猛進的發展,這得益於機器學習技術的進步以及計算設備性能的提升。英偉達公司研發的圖形處理器(Graphics Processing Unit,GPU),無疑為深度學習的發展提供了強有力的硬體支撐!

英偉達想必大家都有所耳聞,但對英偉達開發的深度學習訓練系統(NVIDIA Deep Learning GPU Training System, DIGITS) 知之甚少,今天我們介紹如何使用DIGITS,實現基於深度神經網絡的圖像分類,包括數據集創建、模型創建、模型訓練、模型測試等等。

面對眾多的深度學習開發框架,你是不是安裝配置深度學習開發框架環境中,是不是苦於碼代碼、調試改Bug中。那麼,今天你將發現,世界上還有一款超級簡單易用的深度學習平臺工具,是的,這就是DIGITS。說到底,DIGITS是對現有流行深度學習開發框架的最高級的抽象封裝,你所需做的只不過是點點按鈕、改改參數,就能輕鬆實現基於深度學習模型的圖像分類、目標檢測、分割等任務,並以圖形界面的方式展現出來。目前DIGITS支持 Caffe、Torch,7月份將開始支持Tensorflow,開發人員,正在努力工作,使其支持更多的深度學習框架,如下圖所示:

DIGITS支持的深度學習框架(來自英偉達官網)

下面,讓我們一起學習如何使用DIGITS,實現基於深度卷積網絡的手寫體圖像分類任務,讓我們一起成為人工智慧時代的弄潮兒!

  DIGITS安裝

由於本文重點介紹如何使用DIGITS實現深度學習圖像分類,這裡僅給出安裝參考與注意事項。

現今,DIGITS已經有了三種安裝姿勢:

● Ubuntu 包管理器

● Docker

● 源碼編譯

具體請移步 NVIDIA DIGITS Installation。2015年時,DIGITS出道時還只有源碼安裝方式,時隔一年竟然有了 deb 安裝方式,果斷試用,按照官方說明分分鐘安裝完畢~.~

註:Ubuntu16.04下安裝Caffe,會有比較多的坑,跳進去再跳出來就行了,不過,對於初學者,可能得幾個小時,甚至幾天的時間才能跳出來。

無論哪種安裝姿勢,都要確保有以下核心實料:

● 裝有GPU卡的PC機(有伺服器更好);

● Linux系統(建議Ubuntu,本文 Ubuntu16.04 LTS);

● CUDA驅動(本文版本8.0,Linux版有 run 和 deb 兩種安裝包,前者需要卸載系統自帶驅動,一不小心可能就進不去圖形界面了,需謹慎 ,具體安裝方法,參見英偉達官方安裝手冊)或自行搜索;

● 深度學習框架:如 Caffe, CNTK, TensorFlow, Theano and Torch 等其中的一種或多種(目前支持Caffe和Torch);

● DIGITS

Ubuntu deb 包安裝

很簡單,打開終端(快捷鍵 Ctrl + Alt + T),執行如下命令,既可以自動安裝 digits, caffe-nv, torch7-nv, libcudnn,其中,xxx-nv 是指英偉達 fork 的xxx框架版本。具體安裝方法,參見:DIGITS Ubuntu Installation。

DIGITS Ubuntu deb 安裝命令

#添加源

# For Ubuntu 16.04

CUDA_REPO_PKG=http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb

ML_REPO_PKG=http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb


# Install repo packages

wget "$CUDA_REPO_PKG" -O /tmp/cuda-repo.deb && sudo dpkg -i /tmp/cuda-repo.deb && rm -f /tmp/cuda-repo.deb

wget "$ML_REPO_PKG" -O /tmp/ml-repo.deb && sudo dpkg -i /tmp/ml-repo.deb && rm -f /tmp/ml-repo.deb


# Download new list of packages

sudo apt-get update

# Install 

sudo apt-get install digits

源碼安裝

DIGITS的源碼可以在GitHub上找到,即這裡:GitHub DIGITS,具體編譯構建安裝過程參見:NVIDIA DIGITS Source Installation。

提示:

安裝過程若提示錯誤:ImportError: No module named setuptools 可以使用 sudo apt install python-setuptools 解決。

cd ~/sfw

git clone https://github.com/NVIDIA/DIGITS.git

  DIGITS使用入門

終於可以開始使用DIGITS了,首先打開你的瀏覽器,然後:

● 對於使用deb包安裝的童鞋,在瀏覽器地址欄輸入 http://localhost/ 訪問 DIGITS server 主頁;

● 對於採用其他安裝方式(using digits-devserver)的童鞋,在瀏覽器地址欄輸入 http://localhost:5000/ 訪問 DIGITS server 主頁;

現在開始吧!DIGITS server主頁界面如下,可見使用DIGITS做深度學習應用,非常簡單明了人性化,就是點點按鈕的事;點擊圖中Images下拉菜單按鈕,可以看到,如今DIGITS已經支持 圖像預處理、分類、目標識別、分割:等多種學習任務。

DIGITS Server Home 頁簡介

廢話少說,開始正題,使用 DIGITS ,基本分三步:

● 第一步:準備並創建數據集

● 第二步:設計並創建任務模型

● 第三步:訓練測試模型

下面以手寫體分類為例,說明如何利用 DIGITS,輕鬆實現基於深度學習中的卷積神經網絡的圖像分類任務。

  使用DIGITS實現基於深度學習的圖像分類

● 數據集:手寫體數據集 MNIST:含 0~9 十個數字,60000個訓練樣本,10000個測試樣本;

● 網絡模型:卷積神經網絡 LeNet-5:一種卷積神經網絡。

詳情參見 Yann LeCun 主頁。

下載MNIST數據集

你可訪問上述數據集連結下載並解壓數據,也可以使用 DIGITS 提供的數據集下載工具直接下載解壓數據,數據會被下載到你指定的目錄下(yourdir),本文中:

python -m digits.download_data mnist ~/yourdir/mnist

下載完成後,在你指定的目錄下可以看到如下文件:

創建數據集

在DIGITS server Home頁,以此選擇 Datasets > New Dataset > Images > Classification ,然後隨便取個用戶名(username),提交(Submit),在彈出的頁面中,按下圖所示填寫數據集信息。

DIGITS MNIST 數據集創建頁面

創建完成後,可以在MNIST數據集頁面查看驗證數據集信息,如下圖所示:

創建好的MNIST數據集頁面

創建好的MNIST數據集的訓練集統計信息如下圖所示:

訓練集統計信息——頻率直方圖

創建模型

我們使用經典的LeNet模型來實現手寫體圖像的分類,LeNet是一個卷積神經網絡,它依次包含一個輸入層(INPUT)、卷積層(C1)、池化層,也叫下採樣層(S2)、卷積層(C3)、下採樣層(S4)、卷積層(C5)、全連接層(F6)和一個輸出層,由於有0~9個數字,所以輸出層的神經元的個數是10。這麼複雜的結構,寶寶得寫多少行代碼,寶寶不想當程序猿 ~,~

用於手寫體分類的LeNet網絡結構

然而,你不用擔心,使用DIGITS,你只需要點點按鈕,改改參數即可,由於是經典模型,這裡連該參數都不用,點按鈕就行了。點擊左上角的 DIGITS 按鈕,返回主頁,此時,可以看到數據集(DataSets)頁面多了個剛剛創建的MNIST數據集。依次選擇 Models > New Model > Images > Classification 彈出模型設置界面,依次按如下步驟操作:

● 在Select Dataset 區選擇 「MNIST」 數據集;

● 在下面的Standard Networks 標籤頁選擇Caffe 版的 LeNet network;

● 選擇GPU;

● 給模型命個名字;

● 點擊 Create 按鈕創建模型

如下圖所示:

用於手寫體分類的LeNet網絡模型訓練與測試設置

當然,你也可以設置訓練代數、驗證間隔(代數)、優化方法、學習率等參數。

訓練模型

創建完模型後,DIGITS 開始網絡的訓練,並實時顯示訓練損失、驗證損失、驗證正確率、學習率變化、GPU資源佔用等信息,如下圖所示,非常直觀和友好,有木有,~.~

DIGITS MNIST LeNet分類網絡訓練過程圖

喝杯咖啡,或出去溜達溜達即可!

測試

現在到了測試你的模型的時候了,如下圖所示,有三種選擇:

● Classify One:單幅圖像分類,可以可視化數據、權重、隱藏層輸出等;

● Classify Many:多幅圖像分類,可以查看多幅圖像的分類結果統計信息;

● Top N Predictions per Category:每類的Top N分類預測圖示。

測試你的手寫體分類模型

上述手寫體分類模型,對數字6的某幅圖像分類結果如下圖所示,非常直觀友好有木有,寶寶瞬間喜歡上人工智慧了耶:

上述手寫體分類模型,對10000個測試樣本圖像的分類統計結果如下圖所示,哇,這麼高大上的矩陣我也有了:

上述手寫體分類模型,Top N分類統計結果如下圖所示,寶寶決定要搞深度了,誰都不能阻擋我:

  後記

本文介紹了 DIGITS 及其安裝,以及使用 DIGITS 進行圖像分類的步驟與方法,包括數據集的創建、模型的創建與訓練、模型測試等等。總結起來,使用DIGITS做深度學習應用,簡直就是點點點,免去了使用Caffe等其它框架繁瑣的環境配置、枯燥的碼代碼 Debug 的過程,你不需要去學習Python等語言,你甚至都不需要了解模型算法原理,就能輕鬆享受深度學習的樂趣,這一切 DIGITS 都已經為你做好,簡直太爽啦!~.~ ~.~ ~.~

如果你不是程序猿,如果你不了解深度學習,如果你不知道選擇何種深度學習框架,如果你不想把精力耗費在碼代碼上,而你卻非常想了解深度學習,以至於你想成為人工智慧時代的弄潮兒,那麼DIGITS是你最好的入門選擇!生活原本很簡單,為什麼要過得複雜呢?

如果你已經迫不及待地想在 DIGITS 上一試身手,如果你想找個深度學習「老司機」領路,如果你有諸多深度學習技術相關的難題有待解決,那麼這裡正好有個絕佳的機會:

7 月 8 日,在第二屆 CCF-GAIR 2017 全球人工智慧與機器人峰會上(詳情連結),雷鋒網將聯合英偉達深度學習學院(Deep Learning Institute,DLI),面向 AI 技術從業者,特別推出一個深度學習開發者專場。對深度學習和英偉達 GPU 加速感興趣的開發者們,可以通過這次活動跟英偉達官方認證工程師來一次面對面的技術暢談。

具體議程安排如下:

目前,開發者專場門票正在火熱售賣中,只需 999元 即可獲得與英偉達官方深度學習團隊現場交流的機會,數量有限,售完即止,各位對深度學習感興趣的 AI 從業者們千萬不可錯過!(悄悄告訴你,使用優惠碼還有 200元 折扣哦)

優惠碼:

1024MOOC64155

1024MOOC58424

購買連結:

http://www.mooc.ai/course/90

雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • NVIDIA實戰營:手把手教你使用開源軟體DIGITS實現目標檢測|第二期...
    4月2日20點,智東西聯合NVIDIA深度學習學院共同組織的NVIDIA實戰營第二期將開講,主題為《手把手教你使用開源軟體DIGITS實現目標檢測》,由NVIDIA深度學習學院認證講師侯宇濤主講。在本期實戰營,你將可以藉助NVIDIA雲端完全配置的GPU資源,並配合開源軟體DIGITS,基於Caffe框架打造自己的神經網絡模型,從而實現目標檢測。
  • 看一遍你也會做!用英偉達 DIGITS 進行圖像分割(下)
    7 月 8 日,英偉達深度學習學院 DLI 線下訓練營即將來到深圳,主題是圖像分類、目標檢測與圖像分割的零基礎開發入門。雖然是全球範圍內頂級的 AI 培訓項目,但 DLI 進入中國的時間太晚,中文網頁也才上線沒多久,導致國內開發者只知英偉達的顯卡,卻不知道英偉達有線上、線下的 AI 技術培訓。
  • EC2上的深度學習:CUDA 7/cuDNN/caffe/DIGITS實戰教程
    圖像分類的卷積深度神經網絡(DNN)對於圖像的分類或回歸,你有兩種選擇: 特徵工程及把圖像轉換為向量; 依賴於一個卷積DNN求出特徵。 深度神經網絡對計算的要求相當苛刻。而如果你要使你的特徵工程智能一些,那麼1000個神經元已經是一個很大的數量了; 讓網絡有計算出相關特徵也需要一個更複雜的網絡結構和更多層。 幸運的是,許多浮點矩陣的運算都被顯卡的GPU無意中解決。
  • 《吃豆人》遊戲誕生40周年,英偉達用AI做了一個復刻版
    熱衷於用AI講故事的英偉達也不願意錯過這個熱點,在剛剛的技術發表中,英偉達宣布使用5萬局遊戲訓練出的人工智慧模型重建了這個40年前的經典遊戲——不用寫代碼、不用構建遊戲引擎渲染圖像,僅僅通過神經網絡「看」原版《吃豆人》的運行狀況,自行理解遊戲規則,最終完成了遊戲製作。
  • 十行代碼就能搞定深度學習?飛槳框架高層API,輕鬆玩轉AI
    機器之心發布機器之心編輯部嚮往深度學習技術,可是深度學習框架太難學怎麼辦?百度傾心打造飛槳框架高層 API,零基礎也能輕鬆上手深度學習,一起來看看吧?為了簡化深度學習的學習過程、降低深度學習的開發難度,百度飛槳框架歷經近一年的打磨,不斷地優化深度學習 API,並針對開發者的使用場景進行封裝,在飛槳框架的最新版本中,推出了高低融合、科學統一的飛槳全新 API 體系。飛槳框架將 API 分為兩種,基礎 API 和高層 API。
  • 英偉達再出黑魔法GauGAN:憑藉幾根線條,草圖秒變風景照
    此番可謂「你只管亂畫,最後不好看算我輸」!  這是網上流傳甚廣的一個圖,教你一步步來畫一匹馬。但這些不是固定的圖像模板。GauGAN可以根據不同的輸入生成獨有的結果。畫一個圓圈,在用顏料工具填充,可以使生成的雲的質感變得更蓬鬆。  用戶可以使用輸入工具勾勒出一棵樹的形狀,軟體就能自動生成一棵樹。畫一條直線,會產生一個裸露的樹幹。在頂部畫一個「燈泡」一樣的形狀,軟體將自動用葉子進行填充,生成一棵完整的樹。
  • 掌握深度學習,數據不足也能進行圖像分類!
    ——吳恩達圖像分類即根據固定類別對輸入的圖像設置標籤。儘管計算機視覺過於簡單,但是它在實際中仍有廣泛的應用,而圖像分類就是其中的核心問題之一。在本文中,小芯將示範如何在數據不足的情況下應用深度學習。現已創建特製汽車和巴士分類器兩個數據集,每個數據集包含100個圖像。
  • Delta Tracing利用英偉達™iray和英偉達GPU實現重生
    Tsangaropoulos 表示:「過去,每次渲染照片般逼真的測試圖像都要耗費 40 多分鐘的時間,因此想要製作出能夠展示給客戶看的東西,我們可能要在測試圖像上花費一整天的時間。 使用英偉達? iray 對我們公司來說意味著一次新的革命。 現在,同樣的製作過程只用區區 15 分鐘而已,而且質量更高。然而更重要的是,你可以讓視覺反應時間變得非常短,大約為 20 秒鐘。
  • 如何利用 TVM 優化深度學習GPU op?教你用幾十行Python代碼實現2-3...
    歡迎對於深度學習,編譯原理,高性能計算,硬體加速有興趣的同學一起加入 dmlc 推動領導開源項目社區 。」據雷鋒網(公眾號:雷鋒網)AI科技評論了解,大多數現有系統針對窄範圍的伺服器級 GPU 進行優化,且需要在包括手機、IOT 設備及專用加速器上部署大量工作。而 TVM 是一種將深度學習工作負載部署到硬體的端到端 IR(中間表示)堆棧。
  • 從基因診斷到醫療影像分析,11個案例幫你讀懂深度學習的應用
    大綱:1.深度學習在醫療領域發展現狀及常見應用場景2.深度學習加速藥物研發3.深度學習加速基因研究4.深度學習加速疾病診斷5.醫療領域英偉達解決方案平臺上圖展示的是用SocialEyes,基於我們的NVIDIA SHIELD 平板電腦上,可以利用裡面的GPU,運行深度學習的模型,去判斷眼部疾病,因為在一些偏遠地區看眼科是非常難的,通過這樣一些模型,就能夠解決這些問題。
  • 不到1000行代碼,GitHub 1400星,天才黑客開源深度學習框架tinygrad
    tinygrad 的代碼數量不到 1000 行,目前該項目獲得了 GitHub 1400 星。 在深度學習時代,谷歌、Facebook、百度等科技巨頭開源了多款框架來幫助開發者更輕鬆地學習、構建和訓練不同類型的神經網絡。而這些大公司也花費了很大的精力來維護 TensorFlow、PyTorch 這樣龐大的深度學習框架。
  • 不用寫代碼就能學用Pandas,適合新老程式設計師的神器Bamboolib
    我們希望大家「不用寫任何代碼也可以學習和使用 Pandas」,可以辦到嗎?接下來,本文就從數據設置及使用 Bamboolib 內容入手,帶領大家一起體驗這個新鮮奇妙之旅。例如,可以通過運行導出的代碼,以圖表的形式展現 price_range 和 ram 這兩個列,你就會看到一個將這些圖表以 PNG 格式下載的選項。
  • 一行代碼都不用寫就能完成簡單的精美網頁設計
    是一篇由 Chris Kellett 為大家帶來的教程,只需利用Ai CC 以及Muse CC,就可以在一行代碼都不寫的情況下,完成簡單的網頁設計和發布。 根據AI導出的圖層,用PS進行視覺設計。03.
  • 深度學習:Caffe實戰
    簡單解釋一下深度學習:它其實是機器學習的一個分支。機器學習就是通過算法,使得機器能從大量歷史數據中學習規律,從而對新的樣本做智能識別或對未來做預測。總結而言,就是從反覆的規律中學習並進行自己的判斷。深度學習需要建立可以模擬人腦進行分析學習的神經網絡。它模仿人腦的機制來解釋數據。這就包含了更多方面,例如,圖像、聲音和文本。
  • NVIDIA深度學習軟體平臺推出三項重大更新
    這一工作流程讓開發人員能夠開發出先進的深度學習解決方案,例如衛星影像中的對象追蹤、安保與監控、高級駕駛員輔助系統以及醫學診斷篩選等等。當訓練深度神經網絡時,研究人員必須反覆調整各種參數,使訓練的模型達到極高的精度。DIGITS 4 可以使用一系列調整參數自動訓練神經網絡,從而大幅縮短打造最精確的解決方案所需的時間。
  • 下一代GPU再加速 DIGITS深度學習科技會
    採用 3D 堆疊顯存將可提高比 Maxwell 架構高出三倍的帶寬和近三倍的容量,讓開發人員能建立更大的神經網絡,大大提升深度學習訓練中帶寬密集型部分的速度。Pascal 採用顯存晶片逐個堆疊的技術,位置接近 GPU 而不是處理器板更往下的地方。如此就能把輸出在顯存與 GPU 間往返的距離從幾英寸減縮到幾毫米,大幅加快傳輸速度和擁有更好的省電錶現。
  • 英偉達首席科學家解讀「黃氏定律」:替代摩爾定律,定義AI時代?
    對於矩陣乘法,一旦將權重稀疏為2/4模式,就可以實現雙倍的性能。與此同時,Ampere技術的真正優勢在於,它不僅在深度學習方面表現出色,在高性能計算方面也有不俗的表現。在11月舉行的超算TOP500榜單中,採用NVIDIA技術的超算在前10名中佔了8位,Selene超算在TOP500和Green500中都排名第五。
  • 今日Paper|人體圖像生成和衣服虛擬試穿;魯棒深度學習;圖像風格...
    為了幫助各位學術青年更好地學習前沿研究成果和技術,AI科技評論聯合Paper 研習社(paper.yanxishe.com),重磅推出【今日 Paper】欄目, 每天都為你精選關於人工智慧的前沿學術論文供你學習參考。
  • 剛刷完李飛飛斯坦福CS231n,我反手就是滿屏原創代碼
    第一期《我來手把手教你用TensorFlow實現DQN》將於3月28日(周三)20:30開場!/實戰分享課01/畢業後如願以償地成為一名深度學習算法工程師,從事圖像優化方面的研究。分享提要史丹福大學的CS231n被許多深度學習領域的大咖讚譽,其優質的內容更是受到所有學習者的肯定。本次分享就CS231n課程L14中提到的經典算法 DQN 進行更加深入與細緻的講解。
  • 深度:如何將深度學習和自動駕駛結合在一起?
    圖片上是對於人臉識別過程的一個描述,如果你拋開技術不看,你直接看,你會看到圖象識別的時候,每過一個識別階段,由很多個識別階段組成。它的圖像的信息會減少一些,最開始會把圖像的彩色性去掉,只留下一個歸錄信息。