【云駐共創】AI論文精讀會第一期:高效語義分割模型Fast-SCNN分享
文章目錄
一、研究背景
二、算法介紹
2.1 encoder-decoder
2.2 Two-branch
2.3 Fast-SCNN
三、實驗結果
3.1 測試數據集Cityscapes
3.2 性能對比
3.3 Fast-SCNN分割結果可視化
四、復現實驗
4.1 Learning to Down-sample
4.2 Global Feature Extractor
4.3 Feature Fusion
4.4 Classifier
一、研究背景
語義分割將原始圖像分割為多個具有一定語義的區域塊,可以將其簡單的理解為識別物體類別。快速語義分割在實時應用中特別重要,因為輸入需要快速解析,以便于與環境進行快速響應性交互,是進行其他任務的先決條件。此外,嵌入式設備上的實時語義分割(無需訪問強大的GPU)使得更多的應用得以實現,比如可穿戴設備上的增強現實。
圖1 原始圖像
圖2 Fast-SCNN輸出圖
語義分割通常是深度卷積網絡和encoder-decoder框架實現,以及multi-branch結構,下文將對這兩個算法做出介紹。
語義分割存在三個關鍵點
盡可能地全面學習主體類別復雜關系
保留圖像的空間信息和邊界細節
在速度和精度的平衡上進行特定的設計
二、算法介紹
2.1 encoder-decoder
SOTA語義分割方法多采用兩個可分離的模塊——encoder和decoder。
encoder利用卷積和池化操作提取深度卷積網絡特征。通常是一個簡單深度卷積網絡的變形,如VGG或ResNet。
decoder用低分辨率特征上恢復空間信息,然后預測物體的標簽。
encoder-decoder對于計算量要求較大,在輕量級硬件下通常難以達到實時性。
圖3 典型的encoder-decoder
2.2 Two-branch
“低分辨率+深網絡”和“高分辨率+淺網絡”,即在低分辨率位置使用一個較深的branch捕捉環境信息,在高分辨率位置使用一個較淺的branch學習細節信息。而后將兩者融合,形成最終的語義分割結果,該方法有效的降低了計算量,可以在GPU上達到實時性。
圖4 某種Two-branch網絡結構
3.3 Fast-SCNN
Fast-SCNN融合了經典的encoder-decoder和two-branch方法,達到了實時輸出的效果。總體結構如下:
圖5 Fast-SCNN
圖6 Fast-SCNN具體結構
Fast-SCNN由4部分構成,Learning to Down-sample(學習下采樣),Global Feature Extractor(全局特征提取), Feature Fusion(特征融合), Classifier(分類器)。
Learning to Down-sample,一個普通的卷積層Conv2D,兩個depthwise separable卷積層(DSConv)。
Global Feature Extractor,用于抓取圖像分割的全局特征。與普通multi-branch方法不同,該模塊對于低分辨率圖像進行處理。
Feature Fusion,融合特征,并且是以相對簡單方式融合兩個分支的特征,確保效率。
Classifier,兩個depthwise separable卷積層(DSConv),一個pointwise卷積層(Conv2D),包含一個softmax操作。
此外,在梯度下降計算中,用argmax將softmax替代,以提高計算效率。
Fast-SCNN的創新點主要在以下兩個方面:
“學習下采樣”(Learning to Down-sample)和encoder-decoder中的 skip connection類似,確保了低層次特征能被有效地共享和使用,共三層。
Fast-SCNN還借鑒了MobileNet的depthwise separable convolution和 residual bottleneck block,來降低計算成本和內存消耗。
圖7 Proposed Fast-SCNN
三、實驗結果
3.1 測試數據集Cityscapes
Cityscapes是關于城市街道場景的語義理解圖片數據集。它主要包含來自50個不同城市的街道場景,,共有19個類別,擁有5000張在城市環境中駕駛場景的高質量像素級注釋圖像。其中2975張圖像用于訓練集,500張圖像用于驗證集, 1525張圖像用于測試集。此外,它還有20000張粗糙標注的圖像(coarse labels)。該數據集已上傳至ModelArts AI Gallery
3.2 性能對比
在Fast-SCNN上訓練1000個epochs,需要注意的是,與其他算法進行對比,Fast-SCNN參數很少,只有111萬,然而在Class以及Category上的分數卻表現良好。這意味著Fast-SCNN效率更高,可以進行實時性計算,在速度和精度上做了很好的平衡。
圖8 ?Fast-SCNN與其他語義分割算法對比,Class以及 category mIoU,參數(百萬)
對Fast-SCNN進行不同的配置,再次對比結果,可以發現,Class mIoU結果相差不是特別大。
圖9 不同的Fast-SCNN對比
對于不同的輸入圖片分辨率,Fast-SCNN在高分辨下,FPS可以達到123.5。在低分辨率下,Class mIoU達到51.9,可以滿足日常需求。
圖10 不同分辨率結果對比
3.3 Fast-SCNN分割結果可視化
第一列:輸入RGB圖像;第二列:Fast-SCNN的輸出;
最后一列:不進行skip connection的輸出。
可以發現,在呈現結果中, Fast-SCNN優勢體現在skip connection,特別是在邊界和細節之處。
圖11 Fast-SCNN分割結果可視化
四、復現實驗
原則是先實現,再調優參數以達到論文要求。
秉承“站在巨人肩膀上”的思想,我們首先在GitHub上查找開源代碼,在開源代碼基礎上進行調優。經過不斷試錯,最終選擇一個基于PyTorch框架的開源代碼。
經過了一些“小插曲”后,代碼調通了,進行優化調整,增加訓練輪數和數據增廣,在單卡和八卡訓練下達到精度要求。
4.1 Learning to Down-sample
在前文中已經詳細介紹過,具體為一個普通的卷積層conv,兩個depthwise separable卷積層dsconv1, dsconv2. 降低了參數量,提升了速度。
圖12,13? Learning to Down-sample模塊代碼及結構圖
4.2 Global Feature Extractor
抓取圖像分割的全局特征,分為兩個部分,綠色和粉色(見下圖)。綠色部分,使用 MobileNet-v2 中提出的 bottleneck residual block 構建全局特征提取器,主要目的是為了降低參數量,更快的提取特征。粉色部分,pyramid pooling 模塊,主要用于提取不同尺度的上下文特征。
圖14,15 Global Feature Extractor模塊代碼及結構圖
4.3 Feature Fusion
對兩個分支特征進行降采樣操作,再進行卷積,最后將兩個卷積輸出相加,合二為一。
圖16,17? Feature Fusion模塊代碼及結構圖
4.4 Classifer
2 個深度可分離卷積dsconv1, dscvon2和1個卷積核尺寸為 1x1 的卷積conv,最后通過 softmax得到最終的結果。
圖18,19? Classifier模塊代碼及結構圖
最終完成代碼上傳到了ModelArts AI Gallery,使用的基于PyTorch框架的開源github代碼。
為更好的幫助學習,ModelArts AI Gallery中代碼函數命名基本與論文中保持一致,歡迎下載學習研究。原始論文下載鏈接:Fast-SCNN: Fast Semantic Segmentation Network 。如果有更好的參數、調優方式或者疑問等可以在評論區留言交流。
注:本文整理自華為云社區內容共創活動第三期之【線上直播】AI論文精讀會第一期:高效語義分割模型Fast-SCNN分享,點此回看直播
查看活動詳情:https://bbs.huaweicloud.com/forum/thread-121168-1-1.html
AI 圖像處理 機器學習 深度學習 神經網絡
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。