【云駐共創】高效語義分割模型Fast-SCNN實操代碼解析分享
編碼器 - 解碼器框架是用于離線語義圖像分割的最新技術。自從自治系統興起以來,實時計算越來越受歡迎。在本文中,華為云MVP專家厲天一和大家分享高效語義分割模型Fast SCNN,所謂的Fast-SCNN,即是快速分割卷積神經網絡,這是一種高分辨率圖像數據(1024x2048px)的實時語義分割模型,適用于低內存嵌入式設備的高效計算。
本分享圍繞論文概覽、模型的算法剖析和代碼復現三部分展開。
研究背景及語義分割介紹
語義分割將原始圖像分割為多個具有一定語義的區域塊,可以將其簡單的理解為識別物體類別。快速語義分割在實時應用中特別重要,因為輸入需要快速解析,以便于與環境進行快速響應性交互,是進行其他任務的先決條件。
此外,在實際的落地部署應用中往往采用的是嵌入式設備上的實時語義分割(無需訪問強大的GPU)使得更多的應用得以實現,比如可穿戴設備上的增強現實。比如說在真正的應用中比較常見的有齲齒診斷,當下比較火熱的自動駕駛都會使用到這一相關技術。
語義分割存在三個關鍵點
·??????? 盡可能地全面學習主體類別復雜關系
·??????? 保留圖像的空間信息和邊界細節
·??????? 在速度和精度的平衡上進行特定的設計
語義分割通常是深度卷積網絡和encoder-decoder框架實現,以及multi-branch結構,下文將對這兩個算法做出介紹。
算法模型剖析
1、encoder-decoder
SOTA語義分割方法多采用兩個可分離的模塊——encoder和decoder。encoder編碼模塊利用卷積和池化操作提取深度卷積網絡特征。通常是一個簡單深度卷積網絡的變形,如VGG或ResNet。decoder用低分辨率特征上恢復空間信息,然后預測物體的標簽。
正如上圖中所展示,它采用的是vGG作為編碼模塊,雙線性上采樣和連接較低層,最終會有空間細節的信息。encoder-decoder對于計算量要求較大,在輕量級硬件下通常難以達到實時性。
2、Two-branch
“低分辨率+深網絡”和“高分辨率+淺網絡”,即在低分辨率位置使用一個較深的branch捕捉環境信息,在高分辨率位置使用一個較淺的branch學習細節信息。而后將兩者融合,形成最終的語義分割結果,該方法有效的降低了計算量,可以在GPU上達到實時性。
3、Fast-SCNN
本文的主角Fast-SCNN是融合了經典的encoder-decoder和two-branch方法,達到了實時輸出的效果。Fast-SCNN由4部分構成,Learning to Down-sample(學習下采樣),Global Feature Extractor(全局特征提取),?Feature Fusion(特征融合),?Classifier(分類器)。
l? Learning to Down-sample,一個普通的卷積層Conv2D,兩個depthwise separable卷積層(DSConv)。
l? Global Feature Extractor,用于抓取圖像分割的全局特征。與普通multi-branch方法不同,該模塊對于低分辨率圖像進行處理。
l? Feature Fusion,融合特征,并且是以相對簡單方式融合兩個分支的特征,確保效率。
l? Classifier,兩個depthwise separable卷積層(DSConv),一個pointwise卷積層(Conv2D),包含一個softmax操作。
此外,在梯度下降計算中,用argmax將softmax替代,以提高計算效率。
Fast-SCNN的創新點主要在以下兩個方面:、
1.??? “學習下采樣”(Learning to Down-sample)的提出和encoder-decoder中的?skip connection類似,確保了低層次特征能被有效地共享和使用,一共三層。
2.??? Fast-SCNN還借鑒了非常經典的MobileNet的depthwise separable convolution和?residual bottleneck block進行參數的降低,來降低計算成本和內存消耗。
實驗結果展示
本輪的Fast-SCNN是在這個非常經典的數據上進行驗證,首先來介紹一下這個結果,左側這三個是輸入圖像,關于這個數據的介紹,大家可以到網上更加詳細的了解,是一個非常經典的數據,中間的這三個分別對應的是左側這個三側的真實的標簽的,右側的這三列分別代表模型針對的輸出,可以看出分割的效果還是比較好的。
接下來來看一看具體的代碼,在做這篇文章復現的一個思路就是先實現,然后再調節達到要求,這個也適用于平時做自己的課題。如果大家對這個參考的代碼興趣的話,你可以掃描右側下方的二維碼來查看參考的代碼倉庫。
下面介紹一下開發過程中使用到的ModelArts文件,是基于ModelArts進行的論文浮現,在模型構建方面,大家可能在本地有使用的環境來構建和調試。主要是要調整代碼,同時能夠對完整的結構有一個了解,通過這個非常方便的在線式交互調整工具,實現不需要自行創建開發環境去配置環境,而直接使用已經配置好的環境,大大的減輕了配置環境的煩惱,讓更加集中于代碼調試方面。同時經過調試之后,采用的訓練作業來進行訓練,訓練作業可以根據訓練的完成之后自動進行停止。
之后需要去做模型的驗證,就是模型精度的驗證,但是達到了所要求的精度要求,在這上面將訓練的模型進行部署。當然通過建設開發平臺,也可以很好的體現訓練部署的銜接,實現快速的在線推理服務。同時,大家可以同時調動多一點進行處理,會大大加快的速度,最終也是利用批量處理的服務來進行模型的推理和驗證。
代碼詳細解析
在前文中已經詳細介紹過,具體為一個普通的卷積層conv,兩個depthwise separable卷積層dsconv1, dsconv2.?實現特征提取,降低了參數量,提升了速度。
抓取圖像分割的全局特征,分為兩個部分,綠色和粉色(見下圖)。綠色部分,使用?MobileNet-v2?中提出的?bottleneck residual block?構建全局特征提取器,主要目的是為了降低參數量,更快的提取特征。粉色部分,pyramid pooling?模塊,主要用于提取不同尺度的上下文特征,粉色的部分主要目的是為了能夠對不同分辨的不同情況下的特征做一個整合或者說融合
2 個深度可分離卷積dsconv1, dscvon2和1個卷積核尺寸為?1x1?的卷積conv,最后通過?softmax得到最終的結果。
經驗分享總結
1.華為云ModelArts擁有強大的硬件支持支持,特別是顯存的支持,能夠很好的幫助實現開發,不用去擔心,因為硬件顯存不足的問題而影響訓練的結果,
2、在訓練完成之后一定要進行測試驗證,甚至可能說要去做部署工作,這方面提供了非常好的模型管理,不同版本的管理在線、測試模型非常方便。
3、有了算法,大家還需要有數據集,為了方便大家的使用,這個僅11GB的數據集已分享至算法源代碼,并且在文檔中做了詳細的說明。
這個算法完整的過程都可以在線上完成,包括數據及訓練、部署、測試等等,不需要大家去在本地再進行什么樣的操作,需要注意的是,在默認的參數設置下,使用華為的免費體驗規格,即可以完成算法的訓練及后續的測試,但是因為數據集的存儲也是存儲在云端的,所以大家要注意,數級的存儲可能要一定的花費(1元左右),這個主要在對象存儲服務。
如果大家感興趣的話可以掃描上圖中的二維碼,立即進行體驗。
如果感興趣,可以點擊>>>AI開發平臺ModelArts,前往體驗。
查看活動詳情:https://bbs.huaweicloud.com/blogs/281988
機器學習 深度學習 神經網絡
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。