當前位置:
首頁 > 知識 > 最容易做的圖像分割教程:用英偉達 DIGITS 進行圖像分割,看一遍你也會做!(上)

最容易做的圖像分割教程:用英偉達 DIGITS 進行圖像分割,看一遍你也會做!(上)

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 是預覽,這就是你將通過本教程學著做的東西:

GIF/334K

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

從圖像分類到圖像分割

圖像分類模型的輸出是一個離散的概率分布; 其值介於 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 將圖像分類成一個掛鐘!)這些濾波器觸發了在比如水平和垂直邊緣和角這些形狀上的高響應。例如,看下左下角的濾波器,它看起來像黑白相間的豎條紋。現在看一下相應的激活結果以及在垂直線上的高響應。類似地,在右邊的下一個濾波器在斜線上顯示了高響應。網路更深的卷積層將能夠在更加複雜的形狀上例如多邊形上觸發高響應,最後學習檢測紋理和各種各樣自然對象的組成成分。在卷積層中,每個卷積輸出都是通過通過將每個濾波器應用到輸入中的窗口上(也叫感受野)計算而來,按該層的步長滑動窗口直到遍歷整個輸入為止。感受野尺寸大小與濾波器相同。如圖 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 中,由於那些計算都發生在網路內部,僅僅只有最少量的操作需要執行,整個處理速度要快的多。

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

(未完待續)

via nvidia

研習社特供福利ID:OKweiwu

開發者專場 | 英偉達深度學習學院現場授課

學習形式:線下授課 + 交流答疑

地點:深圳市福田區福華路大中華喜來登酒店

培訓價格:1999 元

報名優惠:

優惠一:CCF-GAIR 開發者專場票最後 50 個優惠名額,CCF-GAIR 參會人員、雷鋒網公開課資深群友、AI 慕課學院老學員,半價優惠

優惠二:半價外,還可享受 200 優惠碼(現價 799 元)

優惠三:公司組團報名(3 人以上)限時 599 元

領取優惠:

方式一:進入 AI 慕課學院課程頁面,提交訂單後,聯繫客服留言改價即可。掃碼使用優惠,立即報名:

方式二:雷鋒網 CCF-GAIR 購票頁面直接領取 200 優惠。掃碼使用優惠,立即報名:

優惠截止日期:7 月 1 日(7 月 2 日課程價:1499 元,150 名之後將恢復原價;名額有限,如報名超員,我們將全額退款)

客服諮詢:18201476932;15210889238

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 唯物 的精彩文章:

AI 助你無碼看片,生成對抗網路大顯身手
《哈利·波特》出版二十周年,教大家用神經網路寫咒語!
訓練深度神經網路的必知技巧,你知道哪些?
聊天機器人還能這麼玩!教你用 Tensorflow 搭建能理解語境的客服小二!
一文詳解 Word2vec之Skip-Gram 模型

TAG:唯物 |

您可能感興趣

AI從入門到放棄:CNN的導火索,用MLP做圖像分類識別?
ISSCC上的最新圖像感測器技術了解一下
ESO的HAWK-I紅外成像儀使星團圖像看起來像藝術圖
SONY 發布車載攝像頭用CMOS圖像感測,可實現HDR攝像和閃光共存
NASA TESS拍攝了最初的測試圖像,即將進入最終軌道
透過ISICDM,看醫學圖像分析的未來趨勢與挑戰
XnView:最佳照片查看器,圖像調整器和批量轉換器
StarGAN - 圖像到圖像的翻譯
只需幾秒鐘,AI看大腦掃描圖像判斷你的智商
解讀谷歌NASNet:一個大規模圖像識別架構!
如何使用Mask RCNN模型進行圖像實體分割?
基於CEVA最新一代圖像和視覺DSP平台,酷芯微電子新一代Edge AI晶元正式量產
完美填充空缺圖像 NVIDIA的AI通過智能識別來修復照片
ISSCC上的最新圖像感測器技術
想讓你的圖像會說話,標註 APP 了解一下
四方框框|ROB GONSALVES的圖像幻覺,精彩圖集,張張傳神
Nvidia 用於數據增強和 JPEG 圖像解碼的 GPU 加速庫 DALI
MXNet 作者李沐:用深度學習做圖像分類,教程+代碼
從VGG到NASNet,一文概覽圖像分類網路
蘋果明年的新 iPhone 可能會採用能構建更精準 3D 圖像的 ToF 鏡頭