昇思25天學習打卡營第19天|ShuffleNet圖像分類

今天是參加昇思25天學習打卡營的第19天,今天打卡的課程是“ShuffleNet圖像分類”,這里做一個簡單的分享。

1.簡介

在第15-18日的學習內容中,我們陸陸續續學習了計算機視覺相關的模型包括圖像語義分割、圖像分類、目標檢測等內容,這些模型的運算往往都是在大算力設備上運行的,今天學習一種可以在移動設備上運行的圖像分類模型-“ShuffleNet”。
ShuffleNetV1是曠視科技提出的一種計算高效的CNN模型,和MobileNet, SqueezeNet等一樣主要應用在移動端,所以模型的設計目標就是利用有限的計算資源來達到最好的模型精度。ShuffleNetV1的設計核心是引入了兩種操作:Pointwise Group Convolution和Channel Shuffle,這在保持精度的同時大大降低了模型的計算量。因此,ShuffleNetV1和MobileNet類似,都是通過設計更高效的網絡結構來實現模型的壓縮和加速。

了解ShuffleNet更多詳細內容,詳見論文ShuffleNet。

2.模型架構

ShuffleNet最顯著的特點在于對不同通道進行重排來解決Group Convolution帶來的弊端。通過對ResNet的Bottleneck單元進行改進,在較小的計算量的情況下達到了較高的準確率。這里主要是要學習兩個概念一是Pointwise Group Convolution(逐點分組卷積),二是Channel Shuffle(通道重排)。

2.1Pointwise Group Convolution

Group Convolution(分組卷積)原理如下圖所示,相比于普通的卷積操作,分組卷積的情況下,每一組的卷積核大小為in_channels/gkk,一共有g組,所有組共有(in_channels/gkk)*out_channels個參數,是正常卷積參數的1/g。分組卷積中,每個卷積核只處理輸入特征圖的一部分通道,其優點在于參數量會有所降低,但輸出通道數仍等于卷積核的數量

shufflenet2

圖片來源:Huang G, Liu S, Van der Maaten L, et al. Condensenet: An efficient densenet using learned group convolutions[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 2752-2761.

2.2Channel Shuffle

Group Convolution的弊端在于不同組別的通道無法進行信息交流,堆積GConv層后一個問題是不同組之間的特征圖是不通信的,這就好像分成了g個互不相干的道路,每一個人各走各的,這可能會降低網絡的特征提取能力。這也是Xception,MobileNet等網絡采用密集的1x1卷積(Dense Pointwise Convolution)的原因。

為了解決不同組別通道“近親繁殖”的問題,ShuffleNet優化了大量密集的1x1卷積(在使用的情況下計算量占用率達到了驚人的93.4%),引入Channel Shuffle機制(通道重排)。這項操作直觀上表現為將不同分組通道均勻分散重組,使網絡在下一層能處理不同組別通道的信息。

shufflenet3

2.3 ShuffleNet模塊

如下圖所示,ShuffleNet對ResNet中的Bottleneck結構進行由(a)到(b), ?的更改:

  1. 將開始和最后的1×11×1卷積模塊(降維、升維)改成Point Wise Group Convolution;
  2. 為了進行不同通道的信息交流,再降維之后進行Channel Shuffle;
  3. 降采樣模塊中,3×33×3 Depth Wise Convolution的步長設置為2,長寬降為原來的一般,因此shortcut中采用步長為2的3×33×3平均池化,并把相加改成拼接。

shufflenet5

2.4 ShuffleNet網絡

ShuffleNet網絡結構如下圖所示,以輸入圖像224×224224×224,組數3(g = 3)為例,首先通過數量24,卷積核大小為3×33×3,stride為2的卷積層,輸出特征圖大小為112×112112×112,channel為24;然后通過stride為2的最大池化層,輸出特征圖大小為56×5656×56,channel數不變;再堆疊3個ShuffleNet模塊(Stage2, Stage3, Stage4),三個模塊分別重復4次、8次、4次,其中每個模塊開始先經過一次下采樣模塊(上圖?),使特征圖長寬減半,channel翻倍(Stage2的下采樣模塊除外,將channel數從24變為240);隨后經過全局平均池化,輸出大小為1×1×9601×1×960,再經過全連接層和softmax,得到分類概率。

shufflenet6

3.小結

人工智能模型的小型化對于移動設備上部署和應用來說具有重要的意義,犧牲一定程度的準確性來換取模型在移動設備可用對于用戶來說是可接受的,這也是研究學習ShuffleNet的一個重要意義。ShuffleNet通過分組卷積、通道重排等技術大幅度降低了所需計算的參數,同時能夠獲得不錯的準確率,使得模型在能夠在算力不足的移動設備可用,是這個領域的重大貢獻。

當然,對于移動設備上的人工智能模型,除了模型小型化以外,借助高速發展的5G等移動網絡也可以使用基于云端的應用部署方式來獲取更高性能、更高準確度的模型,這兩種方案應該說是互補的,而不是對立。移動設備在離線環境下的可用性對于很多業務場景都有很高的價值,對在線和離線環境模型都可用有需求的場景,模型小型化的研究是非常有必要的。

以上是第19天的學習內容,附上今日打卡記錄:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44197.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44197.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44197.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

面試遲到了怎么辦

嗨,我是蘭若姐姐。作為一名面試官,最近面試了很多的測試候選人,有了很多感慨,借此抒發一下,我不知道別人面試更看重的是什么,但是在我這里,我最看重的是態度,其次才是技能 我覺得作…

vivado EXTRACT_ENABLE、EXTRACT_RESET

可提取 EXTRACT_ENABLE控制寄存器推斷是否啟用。通常,Vivado工具 提取或不提取基于啟發式方法,通常有利于最大程度的 設計。如果Vivado的行為不符合預期,此屬性將覆蓋 工具的默認行為。如果有不希望的啟用連接到CE引腳 觸發器,此屬…

中關村軟件園發布“數據合規與出境評估服務平臺”

在2024中關村論壇年會期間,中關村軟件園發布“數據合規與出境評估服務平臺”。該平臺是中關村軟件園結合北京市“兩區”建設,立足軟件園國家數字服務出口基地和數字貿易港建設,圍繞園區內外部企業用戶的業務合作、科研創新、跨國運營等場景需…

Python UDP編程之實時聊天與網絡監控詳解

概要 UDP(User Datagram Protocol,用戶數據報協議)是網絡協議中的一種,主要用于快速、簡單的通信場景。與TCP相比,UDP沒有連接、確認、重傳等機制,因此傳輸效率高,但也不保證數據的可靠性和順序。本文將詳細介紹Python中如何使用UDP協議進行網絡通信,并包含相應的示例…

七天.NET 8操作SQLite入門到實戰 - 第一天 SQLite 簡介

什么是SQLite? SQLite是一個輕量級的嵌入式關系型數據庫,它以一個小型的C語言庫的形式存在。它的設計目標是嵌入式的,而且已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾…

Vscode插件推薦——智能切換輸入法(Smart IME)

前言 相信廣大程序員朋友在寫代碼的時候一定會遇到過一個令人非常頭疼的事情——切換輸入法,特別是對于那些勤于寫注釋的朋友,簡直就是噩夢,正所謂懶人推動世界發展,這不,今天就向大家推薦一款好用的vscode插件&#…

ES6 Class(類) 總結(九)

ES6 中的 class 是一種面向對象編程的語法糖,提供了一種簡潔的方式來定義對象的結構和行為。 JavaScript 語言中,生成實例對象的傳統方法是通過構造函數。下面是一個例子。 function Point(x, y) {this.x x;this.y y; } Point.prototype.toString fu…

使用定時器消除抖動

問題:定時器中斷和按鍵中斷屬于什么操作模式,輪詢嗎? 具體怎么實現 定時器中斷 (判斷) 時間參數 按鍵中斷(修改) 中斷 向量表.s文件 DCD SysTick_Handler …

如何理解跨界營銷?詳解跨界營銷的主要類型和方法!

跨界營銷是一種創新的營銷策略,它巧妙地捕捉不同行業、產品和消費者偏好之間的共通點和潛在聯系。這種策略將看似不相關的元素相互融合,相互影響,創造出一種全新的生活方式和審美觀念,以此吸引目標消費者群體的注意和青睞。 通過…

Oracle左連接過濾條件注意事項

1、left join 結果集行數與主表查詢結果集行數一致 2、主表與輔表多關聯條件要括起來 3、對于輔表的過濾條件寫在on后面是先對輔表過濾后再與主表關聯,寫在where后面是對主表與輔表關聯后的結果集再進行過濾 4、對于主表的過濾條件寫在on后面不生效,只能…

LiveNVR監控流媒體Onvif/RTSP用戶手冊-用戶管理:編輯、添加用戶、關聯通道、重置密碼、刪除、過濾搜索

LiveNVR監控流媒體Onvif/RTSP用戶手冊-用戶管理:編輯、添加用戶、關聯通道、重置密碼、刪除、過濾搜索 1、用戶管理1.1、添加用戶1.2、關聯通道1.3、重置密碼1.4、編輯1.5、刪除1.6、過濾搜索 2、RTSP/HLS/FLV/RTMP拉流Onvif流媒體服務 1、用戶管理 1.1、添加用戶 點擊用戶管理…

學習網絡的第一步:全面解析OSI與TCP/IP模型

我是小米,一個喜歡分享技術的29歲程序員。如果你喜歡我的文章,歡迎關注我的微信公眾號“軟件求生”,獲取更多技術干貨! Hello,大家好!我是你們的好朋友小米。今天我們來聊一聊網絡基礎知識中的重量級選手——OSI模型和TCP/IP模型!網絡的世界就像一個巨大的迷宮,而這兩個…

Docker 鏡像構建報 exec xxx.sh: no such file or directory

問題記錄 場景: 處于對nacos docker 部署最新版本的探究,但是nacos/nacos-server鏡像拉取不到最新版本,官網也是給出自己構建鏡像的方案。 具體步驟很簡單,先clone項目,然后簽出你要的nacos版本,通過docke…

算法力扣刷題記錄 四十二【101. 對稱二叉樹、100.相同的樹、572.另一個樹的子樹】

前言 二叉樹篇,開始對二叉樹操作練習。 記錄 四十二【101. 對稱二叉樹】。 繼續。 一、題目閱讀 給你一個二叉樹的根節點 root , 檢查它是否軸對稱。 示例 1: 輸入:root [1,2,2,3,4,4,3] 輸出:true示例 2&#x…

S5730交換機上配置訪問控制列表(ACL)、OSPF路由和PIM-SM組播

配置訪問控制列表(ACL) 假設我們創建一個簡單的ACL,允許或拒絕特定流量通過。 進入系統視圖 sys 創建一個標準ACL,允許192.168.1.0/24網段的流量通過 acl number 2001 rule 5 permit source 192.168.1.0 0.0.0.255 其他流量默…

Pytest單元測試系列[v1.0.0][Pytest基礎]

Pytest安裝與配置 和Unittest一樣,Pytest是另一個Python語言的單元測試框架,與Unittest相比它的測試用例更加容易編寫、運行方式更加靈活、報錯信息更加清晰、斷言寫法更簡潔并且它可以運行有unittest和nose編寫的測試用例。 Pytest 安裝 啟動命令行&…

【Pytorch】Conda環境下載慢換源/刪源/恢復默認源

文章目錄 背景臨時換源永久換源打開conda配置condarc換源執行配置 命令行修改源添加源查看源 刪源恢復默認源使用示范 背景 隨著實驗增多,需要分割創建環境的情況時有出現,在此情況下使用conda create --name xx python3.10 pytorch torchvision pytorc…

uni-app三部曲之二: 封裝http請求

1.引言 前面一篇文章寫了使用Pinia進行全局狀態管理。 這篇文章主要介紹一下封裝http請求,發送數據請求到服務端進行數據的獲取。 感謝: 1.yudao-mall-uniapp: 芋道商城,基于 Vue Uniapp 實現,支持分銷、拼團、砍價、秒殺、優…

電腦自動重啟是什么原因呢?99%人都不知道的解決辦法,直接打破循環

當你的電腦突然毫無預警地自動重啟,不僅打斷了工作流程,還可能導致未保存的數據丟失,這無疑是一件令人沮喪的事情。那么,電腦自動重啟是什么原因呢?有什么方法可以解決呢?別擔心,在大多數情況下…

Android Retrofit post請求,@Body傳遞的參數轉義問題

文章目錄 問題解決原因解決方案一:自己拼接json字符串,Body使用RequestBody類型,比如解決方案二:修改Retrofit的Gson 問題 因為傳遞的參數字符串中有等號 ,結果傳遞的時候,打印出來 原始字符串&#xff…