0
雷鋒網(wǎng) AI 科技評論按:2017 年 7 月,美國二手汽車零售平臺 Carvana 在知名機器學習競賽平臺 kaggle 上發(fā)布了名為 Carvana 圖像掩模大挑戰(zhàn)賽(Carvana Image Masking Challenge)的比賽項目,吸引了許多計算機視覺等相關領域的研究者參與。
Carvana 希望為消費者提供全面、透明的購車信息,以提升購買體驗。傳統(tǒng)的二手車銷售平臺向消費者提供的車輛展示圖片往往是模糊的,缺少標準規(guī)范的汽車信息圖片往往也不能全面地向消費者展示全面的信息。這嚴重降低了二手車的銷售效率。為了解決這一問題,Carvana 設計了一套用以展示 16 張可旋轉(zhuǎn)的汽車圖片的系統(tǒng)。然而,反光以及車身顏色與背景過于相似等問題會引起一系列視覺錯誤,使得 Carvana 不得不聘請專業(yè)的圖片編輯來修改汽車圖片。這無疑是一件費時費力的工作。因此,Carvana 希望此次比賽的參賽者設計出能夠自動將圖片中的汽車從背景中抽離的算法,以便日后將汽車融合到新的背景中去。
此次比賽歷時約 2 個月,共吸引了來自 735 支參賽隊伍的 875 名選手。其中,來自 Lyft 公司的 Vladimir Iglovikov 和來自 MIT 的 Alexey Shvets 憑借名為 TernausNet 的工作拔得頭籌。獲獎之后他們也撰寫了一篇論文介紹了自己的比賽思路和使用的模型,雷鋒網(wǎng) AI 科技評論把論文主要內(nèi)容介紹如下。
近年來,用于密集計算的計算機硬件取得了進步,并且隨著這些硬件越來越平民化,研究者們能夠處理擁有數(shù)以百萬計的參數(shù)的復雜模型。其中,卷積神經(jīng)網(wǎng)絡(CNN)是一種在圖像分類、目標識別、場景分類等任務中被廣泛應用的模型,取得了巨大的成功。不例外地,此次競賽獲得第一名的工作 TernausNet 也用到了基于 CNN 的神經(jīng)網(wǎng)絡組件。TernausNet 是一個可用于密集圖像分割的深度學習模型,能夠根據(jù)使用者的要求,對原始圖像進行劃分,將原始圖像分成有不同意義的若干部分。避免傳統(tǒng)的手動圖像分割的耗時耗力的麻煩,達到高效、高質(zhì)量、標準化的圖像分割要求。
TernausNet 使用利用 ImageNet 數(shù)據(jù)預訓練得到的 VGG11 編碼器達到了提高 U-Net 網(wǎng)絡性能的目的,出色的完成圖像分割的任務。
U-Net 是一種編碼器-解碼器結(jié)構(gòu),在網(wǎng)絡向前傳播的過程中,編碼器逐漸收縮,減少池化層的空間維度;而解碼器逐漸擴張,逐步修復物體的細節(jié)和空間維度。編碼器和解碼器之間通常存在跳躍連接(skip connection),跳躍連接能夠?qū)⒌蛯哟蔚奶卣鲌D和高層次的特征圖結(jié)合起來,能幫助解碼器更好地修復目標的細節(jié),實現(xiàn)像素級的定位。在上采樣部分,大量的特征通道能向更高分辨率的層傳送上下文信息。
U-Net 的編碼器是一個基于全卷積神經(jīng)網(wǎng)絡(FCN)的網(wǎng)絡結(jié)構(gòu),即將卷積神經(jīng)網(wǎng)絡(CNN)中的全連接層替換為卷積層。FCN 可以接受任意尺寸的輸入圖像,采用反卷積層對最后一個卷積層的特征圖進行上采樣, 使它恢復到輸入圖像相同的尺寸,從而可以對每個像素都產(chǎn)生了一個預測, 同時保留了原始輸入圖像中的空間信息, 最后在上采樣的特征圖上進行逐像素分類。
具體而言,TernausNet 的模型結(jié)構(gòu)如圖 1 所示。編碼器是一個特征圖尺寸逐漸收縮、通道數(shù)逐漸增加的 FCN 網(wǎng)絡結(jié)構(gòu),卷積層和池化層交替工作,用來捕捉上下文的信息,逐步對特征圖進行下采樣;解碼器是一個與編碼器對稱的結(jié)構(gòu),其特征圖尺寸逐漸擴張,通道數(shù)逐漸減少,對特征圖進行上采樣,逐步恢復高分辨率的圖片細節(jié)。根據(jù) U-Net 的思想,解碼器可以通過跳躍連接將對應的編碼器的高分辨率特征和解碼器上采樣得到的特征圖結(jié)合起來,最終輸出一個逐像素的掩碼。
TernausNet 采用 VGG11 作為 U-Net 網(wǎng)絡的編碼器。如圖 2 所示,VGG11 由 11 個向前傳播的網(wǎng)絡層組成。其中有 8 個卷積層,每個卷積層采用了 3*3 的卷積核,每個卷積層后都緊跟一個 ReLU 激勵函數(shù)層,第 1、2、4、6、8 個卷積層后都緊跟一個 2*2 的最大池化操作,每次操作后特征圖尺寸減半。第一個卷積層通道數(shù)為 64,第二層通道數(shù)為 128,第三層第四層通道數(shù)為 256,第五層到第八層通道數(shù)為 512。為了達到語義分割的目的,編碼器采用了類似 FCN 的設計思路,將 VGG11 的最后 3 層替換為了一個 512 通道的卷積層,它同時也是編碼器與解碼器的「瓶頸」,將 U-Net 的左右兩個部分分開。
為了構(gòu)建解碼器,TernausNet 用兩倍于特征圖大小的轉(zhuǎn)置卷積層同時將通道數(shù)減半。轉(zhuǎn)置卷積的輸出接著被連接到相應的編碼器輸出。得到的特征圖通過卷積運算處理,保持通道數(shù)量與對應的編碼器相同。上采樣步驟重復了 5 次用來與 5 個最大池化層配對。如圖 1 所示,由于 TernausNet 有 5 個最大池化層,每層下采樣圖像兩次,因此,只有邊可以被 32,即 2 的 5 次方,整除的圖像可以用作此模型的輸入。
通常 U-Net 的權(quán)重是隨機初始化的。而 TernausNet 相對于傳統(tǒng)的 U-Net 網(wǎng)絡最大的改進在于:TernausNet 先用 ImageNet 預訓練的權(quán)重初始化了 U-Net 的前幾層,并應用了微調(diào)(fine tuning)。事實上,對于圖像分割任務而言,手動標注的圖像分割數(shù)據(jù)集往往至多也只有幾千張圖像,這樣的數(shù)據(jù)規(guī)模相對于 ImageNet 等包含數(shù)百萬張圖像的數(shù)據(jù)集來說是很小的。為了避免過擬合問題,數(shù)據(jù)集合應該要足夠大,然而這會帶來很高的時間開銷。為了減小時間開銷并防止過擬合,TernausNet 使用了 ImageNet 數(shù)據(jù)集上訓練的網(wǎng)絡權(quán)重作為預訓練的參數(shù)。
作者在 Inria 航空圖像標注數(shù)據(jù)集上測試了 TernausNet 的性能。作者采用了 Jaccard 相似系數(shù)作為評價模型的標準。Jaccar 相似系數(shù)是兩個有限集合之間的相似度度量。給定兩個集合 A 和 B,Jaccard 相似系數(shù)定義為 A 與 B 交集的大小與 A 與 B 并集的大小的比值,定義如下:
在圖像分割任務中,由于圖像由像素點組成,在離散問題中,我們可以將jaccard相似系數(shù)改寫為:
其中,是像素點i的二值類別屬性,
是通過模型預測得出的像素點的概率。
此時,可以將圖像分割問題看作一個像素的二分類問題,其交叉熵損失函數(shù)可以表示為:
換句話說,整個 TernausNet 的損失函數(shù)可以表示為:
在測試集上得到的實驗結(jié)果如圖3所示:
TernausNet 在 Inria 航拍圖片數(shù)據(jù)集上的圖像分割效果如圖 4 所示:
TernausNet 的作者認為,未來可以考慮更多先進的預訓練編碼器,例如:VGG16或者ResNet,用來構(gòu)造編碼器-解碼器模型。
原論文地址:https://arxiv.org/pdf/1801.05746.pdf ,雷鋒網(wǎng) AI 科技評論編譯
相關文章:
Kaggle比賽冠軍經(jīng)驗分享:如何用 RNN 預測維基百科網(wǎng)絡流量
Kaggle16000份問卷揭示數(shù)據(jù)科學家平均畫像:30歲,碩士學位,年薪36萬
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。