日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用英伟达 DIGITS 进行图像分割

發布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用英伟达 DIGITS 进行图像分割 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[轉]?https://www.leiphone.com/news/201706/2h3Q3vs4VOs5fIcc.html

? ? ? ?https://www.leiphone.com/news/201706/lp3AtCJuqAAzfhQO.html


DIGITS 是什么?

7 月 8 日,英偉達深度學習學院 DLI?線下訓練營即將來到深圳,主題是圖像分類、目標檢測與圖像分割的零基礎開發入門。

雖然是全球范圍內頂級的 AI 培訓項目,但 DLI 進入中國的時間太晚,中文網頁也才上線沒多久,導致國內開發者只知英偉達的顯卡,卻不知道英偉達有線上、線下的 AI 技術培訓。此前雷鋒網曾撰文介紹過 DLI,詳情戳這里。

閑話少說,本期深圳 DLI 訓練營主要用到 DIGITS 和 TensorFlow 兩個工具。TensorFlow 大家都知道,不必介紹。但對 DIGITS 就很陌生了,它是什么呢?

DIGITS 是英偉達為普及深度學習開發的圖形化操作界面,簡單易用,旨在幫助初學者跨越入門障礙,迅速上手。因此,DLI 的入門培訓均要求學員從?DIGITS 起步。?

說白了,?DIGITS 就是一個新手工具。但由于 DLI 剛剛進入中國,關于 DIGITS 的教程和信息并不充足,為初學者帶來信息鴻溝。 因此,雷鋒網(公眾號:雷鋒網)對這篇英偉達博客發布的官方教程進行了編譯。該教程指導讀者用 DIGITS 5 和 Caffe 進行圖像分割,它脫胎于 DLI 的線上實驗室(online labs)培訓課。后者收費且只用英文授課,并不對非會員開放。但大家能從這篇教程對其了解一個大概。

更重要的,7 月 8 日深圳的 DLI 線下訓練營,三場主要培訓分別是用?DIGITS 進行圖像分類,用 DIGITS 目標檢測,以及用 TensorFlow 進行圖像分割(了解詳情請點此)。雖然前兩場的內容與本教程并不一致,最后一場的難度比本文高出許多,而且用的是 TensorFlow 而非 Caffe,但這篇教程與 DLI 付費培訓的內容已十分接近。

感謝三位童鞋朱婷、彭艷蕾與馬曉培編譯本文花費的心血。

教程:用 DIGITS 5 進行圖像分割

去年底,英偉達發布了 DIGITS 5,為 DIGITS又增添了新功能,其中兩個是這篇教程非常感興趣的,分別是:

? ? ? 1. 完全集成的分割工作流,它能讓你創建圖像分割數據集,并將分割網絡的輸出結果可視化;

? ? ? 2. DIGITS模型商店,它是一個公共的在線資源庫,你可以從中下載網絡說明以及預訓練的模型。

本文將探索圖像分割這一主題。對于SYNTHIA數據集里合成圖像中的汽車、行人、路標以及各種其他城市物體,我將用DIGITS?5 訓練神經網絡進行識別和定位 。

圖1 是預覽,這就是你將通過本教程學著做的東西:

圖1: 使用 DIGITS 5.0作圖像分割的示例可視化。這交替顯示了輸入圖像、 FCN-Alexnet 預測結果的疊加、 FCN-Alexnet預測結果與ground truth的疊加。

從圖像分類到圖像分割

假設你想為自動駕駛車設計圖像理解軟件。你可能已經聽說過Alexnet [1], GoogLeNet [2], VGG-16 [3]以及其他的圖像分類神經網絡架構,所以你可能從這些著手。假如有一個小狗的照片,圖像分類,就是一個讓計算機告訴你圖中的旺就是旺的過程。

圖像分類模型的輸出是一個離散的概率分布; 其值介于0、1之間,用來表示每個訓練類別的概率。圖2是在DIGITS中使用Alexnet對一張貓的圖像做分類的示例。其結果非常好:要知道Alexnet是在1000不同類別的對象上訓練的,包括動物、樂器、蔬菜、交通工具等等。令人震撼的是,在99%的置信區間內,機器能夠將圖像主題正確歸類為貓。即便是我己,恐怕也不過如此,無法進一步分辨出這只貓是埃及貓、花斑貓還是虎斑貓。

圖2:來自PASCAL VOC數據集的貓圖像的Alexnet分類。

如果一張圖片里同時有貓和狗,對它進行分類會發生什么?從常識來看,你可能會相信神經網絡對我們最喜歡的這兩種寵物圖像分類時,將其歸為每類的概率相同。我們來試試:圖3所示是結果。在預測結果中有貓和狗的混合,但是AlexNet并沒有給出50/50分的希望。在中間圖像中,在前5名的預測中事實上并沒有貓。這真令人失望,但是從另一方面來看,AlexNet是在120萬張圖像的“小”世界上訓練的,在這些圖像中只有一個對象,所以不能想當然的期望在多個對象存在的情況下執行良好。

圖3 來自 PASCAL VOC 數據集的貓狗圖像的Alexnet分類。

分類網絡的另一個限制是它們不能分辨出圖像中對象的位置。這是可以理解的,因為它們不是被訓練來做這個的。盡管如此,這卻是計算機視覺的一個主要障礙:如果一輛自動駕駛車不能檢測到道路的位置,它沒法行駛很遠!

圖像分割解決了部分弊端。它并不是預測整幅圖像的單一概率分布,而是將圖像分成多塊,預測每塊的概率分布。最常見的情況是,圖像被劃分到像素級別,對每個像素做分類:對于圖像中的每個像素,訓練網絡來預測指定像素的類別。這使得網絡不僅能鑒別出每張圖像中多個主題類別,還能檢測出對象的位置。圖像分割通常生成標簽圖像,該圖像的大小與輸入圖像的大小相等,其像素按照各類類標用顏色編碼。圖4 所示是示例,在一幅圖像中分割出4個不同類別:桌子、椅子、沙發和盆栽。

圖4:來自 PASCAL VOC數據集的圖像分割示例(白色區域標記未定義的像素,例如對象輪廓和未分類對象)。

在圖像分割的進一步細化中,即實例感知圖像分割(IAIS),神經網絡要學習識別圖像中每個對象的輪廓。這在應用中特別有用,它一定能識別出單個類別每一次的出現,甚至在各類之間界限不清晰時也是如此。例如在圖5中:中間的圖像是圖像分割類標,而最右邊圖像是IAIS類標(注意顏色編碼是如何唯一地識別每個人的)。我不會深入討論IAIS的主題,我將重點討論實例分割;但是我很鼓勵你看看Facebook在IAIS上的SharpMask?工作。

?圖5: 圖像分割(中)vs.實例感知圖像分割(右)。圖像來自PASCAL VOC數據集。

讓我們看一下如何設計能分割圖像的網絡。

從CNN到FCN

前一節對圖像分類模型和圖像分割模型作了區分,前者對每個圖像做概率分布預測,后者對每個像素做概率分布預測。原則上,這聽起來很相似,你可能覺得它們會使用相同的技術。畢竟,僅僅是問題的空間維度得到了增加。在本文中,我將向你展示,僅僅一些小小的調整就足夠將一個分類神經網絡變成一個語義分割神經網絡。我將使用在這篇論文(?this paper)[4]里面世的技術(我將之稱為FCN論文)。

開始之前,先說一些術語:我將典型的分類網絡,例如Alexnet,稱為卷積神經網絡(CNN)。這有點濫用,畢竟卷積神經網絡除了圖像分類之外還有很多其他用途,但這是一種常見的近似。

CNN中,常見的做法是將網絡分為兩部分:前一部分做特征提取,數據通過若干個卷積層逐步提取到越來越復雜、抽象的特征。卷積層之間通常有非線性轉移函數和池化層。每個卷積層可被看作是一系列圖像濾波器,它們在特定模式下觸發高響應。例如,圖6所示是來自Alexnet第一個卷積層的濾波器的表達以及在虛擬圖像,包括簡單的形狀上的激活結果(輸出)(有趣的是,AlexNet將圖像分類成一個掛鐘!)這些濾波器觸發了在比如水平和垂直邊緣和角這些形狀上的高響應。例如,看下左下角的濾波器,它看起來像黑白相間的豎條紋?,F在看一下相應的激活結果以及在垂直線上的高響應。類似地,在右邊的下一個濾波器在斜線上顯示了高響應。網絡更深的卷積層將能夠在更加復雜的形狀上例如多邊形上觸發高響應,最后學習檢測紋理和各種各樣自然對象的組成成分。在卷積層中,每個卷積輸出都是通過通過將每個濾波器應用到輸入中的窗口上(也叫感受野)計算而來,按該層的步長滑動窗口直到遍歷整個輸入為止。感受野尺寸大小與濾波器相同。如圖7所示,是卷積計算的說明示例。注意,輸入窗口跨越了輸入圖像的所有通道。


圖6:Alexnet conv1 l層在DIGITS中的表現。從上到下:數據層(輸入);conv1層濾波器的可視化;conv1層的激活結果(輸出)。

圖7:左:紅色表示的輸入量示例和第一個卷積層的神經元體示例。卷積層中的每個神經元只與輸入空間中的局部區域相連接,但是卻連接了全部深度(即所有的顏色通道)。注意,沿深度方向有多個神經元(示例中是5個),所有都連接著輸入的相同區域;右:神經元仍然是計算其權值與輸入的點乘,然后是非線性函數,但是它們的連接現在被限制在局部空間上。來源:斯坦福大學CS231 課程。

在CNN的第二部分即最后一部分,分類器包含若干個全連接層,第一個全連接層的輸入來自特征提取器。這些層學習特征間復雜的關系,使網絡對圖像內容有高水平的理解。例如,如果有大眼睛和皮毛,網絡可能傾向于貓。神經網絡能正確理解這些特征,在某種程度上很神奇,但這也是深度學習的魅力所在。這種可解釋性的缺乏有時會受到批評,但在這方面,它和人類大腦的工作方式其實有點像:關于你是怎么知道某張圖片是一只貓不是狗,你能解釋嗎?

全卷積網絡(FCN),顧名思義,就是只包含卷積層和上面提到的臨時非參數層。怎樣消除全連接層來建立看起來更強大的模型呢?為回答這個問題,我們來思考另一個問題。

圖8:DIGITS中顯示的 Alexnet 第一個全連接層(fcn6)的輸入、權值和激活函數。

關鍵問題是:全連接層和全卷積層之間的區別是什么呢?

這很簡單,在全連接層,每個輸出神經元計算輸入中的數據的加權和。相比之下,每個濾波器計算感受野中的數據的加權和。等一下,這難道不是同一件事情嗎?——是的,但這僅發生在該層輸入的大小與感受野的大小相同時。如果輸入比感受野大,接下來卷積層會滑動其輸入窗口,計算另一個加權和。這個過程重復進行,直到輸入圖像被從左到右,從上到下掃描一遍。最后,每個濾波器生成一個激活矩陣;每個這樣的矩陣被稱作特征圖譜。

這提供了一個線索:使用等效的卷積層替換全連接層,把該層濾波器的大小設為與輸入的大小相同,并且使用與全連接層中神經元個數相同的濾波器。我將在Alexnet的第一個全連接層(fcn6)上演示這一點:圖8所示是感興趣層的DIGITS的可視化。你可以看到fcn6從pool5中獲得輸入,輸入的形狀是256個的6*6的圖像。除此之外,在fcn6的激活結果是4096維的長矩陣,這意味著fcn6有4096個輸出神經元。由此可見,如果我想用等價的卷積層替換fcn6,我必須設置濾波器大小為6*6,輸出的特征圖譜的個數為4096.說一個小小的題外話,你認為該層會有多少可訓練的參數?對于每個濾波器,都有一個偏置項加上感受野中每個數值的一個權重。感受野的深度是256,大小為6*6,因此每個濾波器有256x6x6+1=9217個參數。因為這里有4096個濾波器,該層共有37,752,832個參數。這正是DIGITS中fcn6擁有的參數個數。到目前為止,一切都很順利。

在實踐中,很容易替換該層。如果你使用Caffe,僅僅用表1中右邊的定義替換左邊的定義即可。

有了這些知識,現在你可以開始將Alexnet中的所有全連接層轉換為相應的卷積層。注意,你沒必要使用DIGITS計算這些層的輸入的形狀;你可以手動計算出它們。盡管這聽起來很有趣,我確信如果你在VGG-16的16個層(加上中間的池化層)上做這些,你將失去耐心。更不要說你會不可避免地丟掉你的演算紙。此外,作為一個深度學習愛好者,你應該習慣讓機器來做這些工作。所以讓DIGITS為你效力吧。

由此產生的FCN與基礎的CNN有著相同數量的可學習參數,相同的表達能力和相同的計算復雜度。鑒于輸入相同,產生的輸出也相同。你可能會想:為什么要轉換模型這么麻煩呢?是這樣的,CNN的基礎“卷積”引入了太多的靈活性。模型不再受限于在固定輸入大小上(在Alexnet中224*224的像素尺寸大小)操作。它可以像滑動窗口一樣,通過掃描整個輸入來處理更大的圖像,不是對整個輸入產生一個單一的概率分布,而是對每個224*224的窗口,模型會生成一個概率。網絡的輸出是一個形狀為KxHxW的張量,這里,K表示類別的個數,H表示沿縱軸的滑動窗口的數量,W表示沿橫軸的滑動窗口的數量。

在計算效率方面:理論上,你可以通過重復選擇圖像的塊以實現簡單的窗口滑動,然后將這些塊輸入CNN進行處理。在實踐中,這在計算中非常低效:當你逐漸滑動窗口時,在每一步上僅僅能看到少量新的像素值。然而,每個塊都必須由CNN完全處理,即使連續的塊之間存在大量的重疊。每個像素值最終會重復處理很多次。在FCN中,由于那些計算都發生在網絡內部,僅僅只有最少量的操作需要執行,整個處理速度要快的多。

總而言之,這是一個里程碑:在分類網絡的輸出上增加兩個空間維度。在下一節,我將展示如何進一步改進模型。


教程:用 DIGITS 5 進行圖像分割(下)

基于FCN的圖像分割

前一節展示了如何設計一個FCN ,來預測每個窗口的某個類的概率分布。顯然,窗口的數量取決于輸入圖像的大小、窗口的大小和掃描輸入圖像時窗口之間的步長。理想情況下,一個圖像分割模型將生成圖像中所有像素的概率分布。在實踐中如何做到呢?這里將使用FCN paper上的一個方法。

當輸入圖像遍歷卷積化的 Alexnet 的連續層時,像素數據的輸入被高效地壓縮成一組粗化的、更高級的特性表征。圖像分割的目的是篡改這些粗化的特征來重建細分類,對輸入中的每個像素都是如此。事實證明,這在解卷積層中很容易實現。這些層執行與卷積層相反的操作:給定了卷積輸出,一個解卷積層會將輸入生成輸出,從而給出過濾器的定義。記住,卷積中的跨層(或池化層)定義了處理輸入時窗口的滑動距離,以此來衡量下游輸出。相反,解卷積層的步幅是衡量上游取樣的輸出。若選擇步幅為4,那么輸出將是4倍大!

下一個問題是:給定模型中的最終卷積層,需要對其激活做多大幅度的升采樣,才能使輸出與輸入圖像的大小相同?我需要仔細檢查每層并寫下它的縮放因子。一旦每一層都這樣處理,我只需將縮放因子相乘并匯總。讓我們看看第一個卷積Alexnet層。


conv1的步幅是4,因此縮放因子是1/4。所有層都重復這樣做,我確定了總縮放因子在模型中是1/32,如Table 2中概述那樣。這樣,解卷積層的步幅就是32了。


出于嚴謹,我不得不說,“在所有的空間維度上,一個步幅為S的卷積層,產生的輸出都是輸入的1 / S”這句話并不是完全正確的。在實踐中,向輸入加入填充P > 0將會增加激活數。相反,使用大小為 K > 1的核(kernels)將會減少輸入端的激活數。在此限制下,如果你為卷積層提供了一個無限長的輸入,輸入/輸出大小的比例在所有的(空間)維度上實際是1 / S。現實中,每一個卷積(池)層的輸出被偏移了(P -(k - 1)/ 2)/ S。?

例如,考慮conv1:因為這一層在兩側各有100像素的填充,它的輸出比無填充的更大。通過上面的公式,我們可以計算出輸出的每一側在理論上有23.75個額外像素。隨著添加更多層,這會累積起來。通過向后運行圖,可以計算所有層的累計抵消。L1與L2層的組合(i.e. 在Caffe術語中,L2是L1的底層,L1、L2 又分別抵消 O1、O2) 會抵消O2 / F + O1,這里F是L2的累積縮放因子。

參考表2對那些計算的匯總

表2:卷積化的Alexnet中,遍布連續層的縮放因子和抵消補償。* 對反卷積層來說縮放因子等于步幅,抵消等于(k - 1)/ 2 p。

表2表明,通過所有conv1到upscore的層時,神經網絡的輸出被18個像素根據輸入做了相應移動。最后一個分割模型中的技巧,是一個修剪網絡輸出、移除每個邊界上額外的18像素的層。這很容易在Caffe 的 Crop layer 中實現,下面的清單中對這些做了定義。

你可能會注意到,這個版本的Alexnet的內邊距(padding)比你經常在conv1層遇到的多一點。這背后有兩個原因:一個原因是,產生了更大的初始化偏移,以補償連續層沒有吃進圖像的缺失。然而,主要的原因是網絡以最佳方式處理輸入圖像的邊界 ,以命中網絡可接受域的中心,大概就是這樣。

現在,我有了從FCN paper復制FCN FCN-Alexnet模型所需的一切。我們可以放松一下,欣賞一些SYNTHIA數據集里的圖像。

SYNTHIA 數據集

SYNTHIA數據集最初發表在paper [5]。

SYNTHIA數據集的樣本圖像見圖9。這些圖像展示了用不同的對象類合成的城市場景,比如不同條件下的建筑物、道路、車輛和行人, 如晝夜。有趣的是,圖片看起來特真實以致于有時候人們會被它們吸引:嗯,第一張圖片上那個在路中間看報紙的人有點反常,這么干很危險。

在 DIGITS 5.0 中,創建一個圖像分割數據集十分簡單,只需要選中輸入和真實樣本圖像文件夾,點擊“Create”按鍵。DIGITS 支持多種標簽格式,比如畫板圖片(它的標簽圖像中的像素值是彩色畫板的指數)和 RGB 圖片(每種顏色指示一個類)。

在 DIGITS 中創建數據集之后,你可以探索數據庫在視覺上檢查它們的內容,見圖10。

訓練模型

在DIGITS里訓練模型,有數據集和對神經網絡的描述就夠了。如果你覺得用卷積Alexnet太復雜太耗時的話,別煩惱:DIGITS 5.0版有一個模型商店,而且就像你能想象的那樣,FCN-Alexnet可以從這個模型商店里下載!

但如果你決定要走一條更難的路,去創造自己的模型描述,就可能要找一個合適的權重初始值方案,比如說Kaiming方法(另名MSRA),是目前最前沿的修正流線性單元形式。這個在Caffe里很容易實現,只要加上一個權重過濾器?{ type: "msra" }指向你的參數層就好了。如果在DIGITS里用這種方法訓練模型,很有可能得到像圖11的曲線。從圖中可以看出,結果并不盡如人意。驗證集的準確程度在35%的時候達到最高(意思是說只有在驗證數據集里35%的像素被準確地標記出來)。訓練損失跟驗證損失一致,意味著這個網絡(模型)對訓練數據集欠擬合。


圖11: 用Synthia數據訓練FCN-Alexnet網絡(模型),在DIGITS里面利用隨機權重初始值方法得到的訓練集/驗證集的損失和準確率:藍線--訓練集的損失走勢,綠線--驗證集的損失走勢,黃線--模型結果在驗證集里的準確率

你可以在一個樣例圖片上試試運氣,讓DIGITS幫你完成圖片分割的可視化。你會發現網絡(模型)會不分青紅皂白的把所有元素都歸類成“建筑物”,就像圖12所示。原來在SYNTHIA數據中,“建筑物”是最具代表性的目標類別,而網絡(模型)只是懶洋洋地進行了學習并把所有圖片元素都標記成了“建筑物”才達到了35%的準確率。那么,一般可接受的處理這種網絡(模型)在訓練集里欠擬合的方法都有哪些呢?

  • 拉長訓練時間:只觀察損失曲線的走勢,訓練過程貌似達到了最高,然而這很可能沒什么幫助。網絡(模型)很有可能進入了局域最小值而且不能從中脫離出來。

  • 提高學習率同時減少每批量的大小:這樣做可以鼓勵陷入局域最小值不能自拔的網絡(模型)去探索周圍環境之外的區域,盡管這樣會增大網絡(模型)發散的風險。

  • 增加模型大小:這種方法可以加大模型的表現力。

  • 還有一種方法我發現在計算機視覺中應用得非常好:轉化學習。更多請繼續往下讀。


    圖12:圖片分割可視化的樣本展示:網絡(模型)把所有元素都歸類成了“建筑物”。此樣本是利用隨機權重初始值的方法,在DIGITS里用Synthia數據訓練FCN-Alexnet網絡(模型)得到的。

    遷移學習

    你不用非得從隨機初始化權重開始,來訓練一個模型。很多情況下,重新利用網絡(模型)訓練另外一組數據中的得到的認知,會很有幫助。這種方法在計算機視覺里通過CNN網絡(模型)尤其奏效,因為很多低級的特征(線路,拐角,形狀,紋理)可以馬上應用在任意數據中。由于圖片分割是在像素水平下做分類分析,從類似ILSVRC2012這樣的圖片分類數據集里做遷移學習十分合理。利用Caffe這樣做就變得相當簡單---當然需要設立一個或兩個陷阱!

    記得在Alexnet的fc6模型中(圖8),權重的形狀是4096×9216。在FCN-Alexnet的conv6模型中,權重的形狀是4096x256x6x6。這其實是一樣的權重值,但是由于形狀不同,Caffe不能自動把權重轉交到FCN-Alexnet模型里。這個任務可以交給“net surgery(網絡手術)”腳本來履行,腳本例子可以在Github網站里的DIGITS知識庫找到。網絡手術腳本的功能在于把參數從全連接層移植到對應的卷積層里。然而,你會發現從公共的DIGITS模型商店里下載提前訓練好的模型會更簡單一些。圖13展示了模型商店的界面:在“FCN-Alexnet”旁邊,點擊“導入”,DIGITS就會下載提前訓練好的模型。


    圖13:DIGITS模型商店

    你可能會有另外一個顧慮,那就是怎樣初始化早先加入到該文本的升采樣層呢?別忘了,此升采樣層并不是原始Alexnet模型中的一部分。在FCN那篇論文中,作者建議隨機初始化對應的權重,然后讓網絡(模型)學習它們。該篇論文的作者后來意識到,初始化這些權重其實很簡單,通過做雙線性插值,讓升采樣層充當放大鏡就可以了。在Caffe里,這種方法可以通過加上一個權重過濾器?{ type: "bilinear" }指向升采樣層來實現。

    利用一個提前訓練好的FCN-Alexnet模型,你會注意到,在檢測圖14這種個別圖像的時候,準確率會快速超過90%。檢測到9個不同的類別,圖形分割結果會變得更有說服力。但你還是會有點失望,因為物體輪廓仍然非常模糊。請繼續往下讀本文的最后一個章節:如何進一步提高分割模型的精確性和準確性。


    圖14:圖片分割可視化的樣本展示。此樣本是利用一個提前訓練好的ILSVRC2012-Alexnet模型,在DIGITS里用Synthia數據訓練FCN-Alexnet網絡(模型)得到的。

    啟用細化分割

    之前加進FCN-Alexnet的升采樣層,把conv7的輸出值擴大了32倍。在實際應用中,這意著對于每個32×32的像素塊,神經網絡會做一次預測。這也就解釋了為啥目標物體輪廓會那么模糊。那篇FCN文章介紹了另外一個非常棒的主意來解決上面的局限:跳過那些被加入的連接層,直接把pool3和pool4的輸出值重新定向到網絡的輸出值上。由于那些匯總層(pool3, pool4)位于網絡的靠后方向,它們就可以在低水平的特征上運作,從而能夠抓到更細致的細節。

    在一個叫做FCN-8s的網絡結構中,那篇FCN文章介紹了一個基于VGG-16的網絡,利用這個網絡,最后輸出結果可以是pool3的總和采樣層×8,可以是pool4的采樣層×2,還可以是conv7的采樣層×4,如圖15所示。這就引導出一種網絡,能夠在更細分的紋路生成預測,向下到8×8的像素塊。


    圖15: FCN-8s跳過連接層的演示圖。來源:FCN文獻

    為了方便使用,用戶可以在公共的DIGITS模型商店里下載一個提前訓練好的FCN-8s。(你肯定不想自己動手卷積VGG-16)如果你用DIGITS在SYTHIA數據上訓練FCN-8s,你會發現僅僅經過幾個epoch(時期),驗證集的準確率就能超越95%。更重要的是,當你在一個樣本圖片上做實驗,觀察DIGITS的高超圖片分割可視化的時候,你會看到更為清晰的物體輪廓,像圖16中那樣。


    圖16: 圖片分割可視化的樣本展示。此樣本是利用DIGITS在Synthia數據上訓練FCN-8s網絡(模型)得到的。

    現在該你了

    讀過本文之后,怎樣開始做圖片分割,你應該心里有譜了。DIGITS 5會在12月份的第一個星期發布。訪問DIGITS網站繼續學習,注冊NVIDIA Developer program賬號,以便下載版本可用時及時收到通知。

    DIGITS在GitHub上是一個可共享的開源項目。如果你想上手實踐圖片分割技術,請直接訪問DIGITS GitHub項目網頁,以便得到源代碼。

    論文索引

    [1] Krizhevsky, A., Sutskever, I. and Hinton, G. E. “ImageNet Classification with Deep Convolutional Neural Networks”.?NIPS Proceedings. NIPS 2012: Neural Information Processing Systems, Lake Tahoe, Nevada. 2012.

    [2] ?Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich. “Going Deeper With Convolutions”. CVPR 2015.

    [3] Simonyan, Karen, and Andrew Zisserman. “Very deep convolutional networks for large-scale image recognition.” arXiv technical report arXiv:1409.1556. 2014.

    [4] Long, Jonathan, Evan Shelhamer, and Trevor Darrell. “Fully convolutional networks for semantic segmentation.”?Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition 2015: 3431-3440.

    [5] Ros, German, Laura Sellart, Joanna Materzynska, David Vazquez, and Antonio M. Lopez; “The SYNTHIA?Dataset: A large collection of synthetic images for semantic segmentation of urban scenes.”?Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition 2016: 3234-3243.

    [6] He, Kaiming, Xiangyu Zhang, Shaoqing Ren, and Jian Sun “Delving deep into rectifiers: Surpassing human-level performance on imagenet classification.”?Proceedings of the IEEE International Conference on Computer Vision 2015: 1026-1034.

    via?nvidia

    總結

    以上是生活随笔為你收集整理的用英伟达 DIGITS 进行图像分割的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。