MobileNets: 高效的卷積神經網絡用于移動視覺應用

摘要

我們提出了一類高效的模型,稱為MobileNets,專門用于移動和嵌入式視覺應用。MobileNets基于一種簡化的架構,利用深度可分離卷積構建輕量級的深度神經網絡。我們引入了兩個簡單的全局超參數,能夠有效地在延遲和準確性之間進行權衡。這些超參數使得模型開發者能夠根據問題的約束選擇適合的模型。我們在資源和準確性之間的權衡上進行了廣泛的實驗,并展示了與其他流行模型相比,MobileNets在ImageNet分類任務上的強勁表現。隨后,我們展示了MobileNets在廣泛的應用和用例中的有效性,包括物體檢測、細粒度分類、面部屬性和大規模地理定位。

1. 引言

自從AlexNet[19]通過在2012年ImageNet挑戰賽(ILSVRC 2012)中獲勝而讓深度卷積神經網絡(CNN)廣為人知以來,卷積神經網絡已經在計算機視覺中變得無處不在。一般的趨勢是通過加深網絡的層數和增加網絡的復雜性來提高準確性[27, 31, 29, 8]。然而,這些提高準確性的進展并不一定使得網絡在大小和速度上變得更加高效。在許多現實應用中,如機器人、自駕車和增強現實,識別任務需要在計算資源有限的平臺上及時完成。

本文描述了一種高效的網絡架構和一組兩個超參數,用于構建非常小的、低延遲的模型,能夠輕松匹配移動和嵌入式視覺應用的設計需求。第二節回顧了構建小型模型的相關工作。第三節描述了MobileNet架構和兩個超參數:寬度乘數和分辨率乘數,用于定義更小、更高效的MobileNets。第四節介紹了在ImageNet上的實驗以及各種不同應用和用例。第五節總結并得出結論。

2. 相關工作

最近文獻中對構建小型高效神經網絡的興趣不斷上升,例如[16, 34, 12, 36, 22]。許多不同的方法可以大致分為兩類:壓縮預訓練網絡或直接訓練小型網絡。本文提出了一類網絡架構,使得模型開發者能夠根據應用的資源限制(延遲、大小)選擇合適的小型網絡。MobileNets主要集中在優化延遲,但也能生成小型網絡。許多關于小型網絡的論文只關注大小,而沒有考慮速度。

MobileNets主要由深度可分離卷積構建,深度可分離卷積最早在[26]中提出,并隨后在Inception模型[13]中使用,以減少前幾層的計算量。扁平化網絡[16]通過完全分解的卷積構建網絡,并展示了極度分解網絡的潛力。與本文無關的另一篇論文,Factorized Networks[34]引入了類似的分解卷積以及拓撲連接的使用。隨后,Xception網絡[3]展示了如何擴展深度可分離濾波器,從而超越Inception V3網絡。另一個小型網絡是Squeezenet[12],它通過瓶頸方法設計了一個非常小的網絡。其他減少計算量的網絡包括結構變換網絡[28]和深度卷積神經網絡[37]。

獲得小型網絡的另一種方法是壓縮、因式分解或壓縮預訓練網絡。基于乘積量化[36]、哈希[2]、剪枝、向量量化和霍夫曼編碼[5]等方法在文獻中有所提出。此外,已經提出了各種因式分解方法以加速預訓練網絡[14, 20]。另一種訓練小型網絡的方法是蒸餾[9],它使用較大的網絡來訓練較小的網絡。它與我們的方法是互補的,并在第四節的一些用例中有所涉及。另一個新興的方向是低位網絡[4, 22, 11]。
在這里插入圖片描述

3. MobileNet架構

在本節中,我們首先描述MobileNet所基于的核心層——深度可分離卷積。接著,我們描述MobileNet的網絡結構,并最終介紹兩個用于縮小模型的超參數:寬度乘數(width multiplier)和分辨率乘數(resolution multiplier)。

3.1. 深度可分離卷積

MobileNet模型基于深度可分離卷積,這是一種因式分解卷積的形式,它將標準卷積分解為深度卷積和一個1×1卷積(稱為逐點卷積)。在MobileNet中,深度卷積對每個輸入通道應用一個單獨的濾波器。隨后,逐點卷積應用1×1卷積,將深度卷積的輸出進行合并。標準卷積同時進行濾波和合并操作,生成一個新的輸出集合;而深度可分離卷積將這個過程分解為兩層:一個單獨的濾波層和一個單獨的合并層。這種因式分解大大減少了計算量和模型大小。圖2展示了標準卷積(圖2a)是如何分解為深度卷積(圖2b)和1×1的逐點卷積(圖2c)。

標準卷積層的輸入是一個尺寸為 DF×DF×MD_F \times D_F \times MDF?×DF?×M 的特征圖 FFF,輸出是一個尺寸為 DF×DF×ND_F \times D_F \times NDF?×DF?×N 的特征圖 GSG_SGS?,其中 DFD_FDF? 是輸入特征圖的空間寬度和高度,MMM 是輸入通道數(輸入深度),DSD_SDS? 是輸出特征圖的空間寬度和高度,NNN 是輸出通道數(輸出深度)。

標準卷積層由一個大小為 DK×DK×M×ND_K \times D_K \times M \times NDK?×DK?×M×N 的卷積核 KKK 參數化,其中 DKD_KDK? 是卷積核的空間維度,假設其為正方形,MMM 是輸入通道數,NNN 是輸出通道數。

對于標準卷積,假設步幅為1且有填充,輸出特征圖的計算公式為:

Gk,l,n=∑i,j,mKi,j,m,n?Fk+i?1,l+j?1,m(1)\mathbf { G } _ { k , l , n } = \sum _ { i , j , m } \mathbf { K } _ { i , j , m , n } \cdot \mathbf { F } _ { k + i - 1 , l + j - 1 , m } \quad(1) Gk,l,n?=i,j,m?Ki,j,m,n??Fk+i?1,l+j?1,m?(1)

標準卷積的計算復雜度為:

DK?DK?M?N?DF?DF(2)D _ { K } \cdot D _ { K } \cdot M \cdot N \cdot D _ { F } \cdot D _ { F }\quad(2) DK??DK??M?N?DF??DF?(2)

其中,計算復雜度依賴于輸入通道數 MMM、輸出通道數 NNN、卷積核的大小 DK×DKD_K \times D_KDK?×DK? 和特征圖的大小 DF×DFD_F \times D_FDF?×DF?。MobileNet通過使用深度可分離卷積來解決這些因素及其相互作用,首先通過深度可分離卷積將輸出通道數與卷積核大小之間的相互作用解耦。

標準卷積操作通過卷積核對特征進行過濾,并將特征結合以生成新的表示。過濾和結合步驟可以通過使用因式分解卷積(稱為深度可分卷積)來分開,從而顯著減少計算成本。深度可分卷積由兩層組成:深度卷積和逐點卷積。我們使用深度卷積為每個輸入通道(輸入深度)應用一個濾波器。然后,使用逐點卷積,一個簡單的 1×1 卷積,來對深度層的輸出進行線性組合。MobileNet 在兩層中都使用批歸一化(batchnorm)和 ReLU 非線性函數。深度卷積使用每個輸入通道(輸入深度)一個濾波器可以寫成如下形式:
G^k,l,m=∑i,jK^i,j,m?Fk+i?1,l+j?1,m(3)\hat { \mathbf { G } } _ { k , l , m } = \sum _ { i , j } \hat { \mathbf { K } } _ { i , j , m } \cdot \mathbf { F } _ { k + i - 1 , l + j - 1 , m }\quad(3) G^k,l,m?=i,j?K^i,j,m??Fk+i?1,l+j?1,m?(3)
其中,K^\hat { \mathbf { K } }K^ 是大小為 DK×DK×MD _ { K } \times D _ { K } \times MDK?×DK?×M 的深度卷積核,其中 mthm _ { t h }mth? 個濾波器應用于 FFF 中的第 mthm _ { t h }mth? 通道,從而生成過濾后的輸出特征圖 G^\hat { \mathbf { G } }G^ 的第 mthm _ { t h }mth? 通道。

深度卷積的計算成本為:
DK?DK?M?DF?DF(4)D _ { K } \cdot D _ { K } \cdot M \cdot D _ { F } \cdot D _ { F }\quad(4) DK??DK??M?DF??DF?(4)
與標準卷積相比,深度卷積的計算效率極高。然而,它只過濾輸入通道,而不結合它們以生成新的特征。因此,需要一個額外的層來通過 1×11 \times 11×1 卷積對深度卷積的輸出進行線性組合,以生成這些新的特征。

深度卷積和 1×11 \times 11×1(逐點)卷積的組合稱為深度可分卷積,最早由 [26] 中提出。

深度可分卷積的計算成本為:
DK?DK?M?DF?DF+M?N?DF?DF(5)D _ { K } \cdot D _ { K } \cdot M \cdot D _ { F } \cdot D _ { F } + M \cdot N \cdot D _ { F } \cdot D _ { F }\quad(5) DK??DK??M?DF??DF?+M?N?DF??DF?(5)
這是深度卷積和 1×11 \times 11×1 逐點卷積的總和。

通過將卷積表示為過濾和結合的兩步過程,我們得到了計算上的降低:
DK?DK?M?DF?DF+M?N?DF?DFDK?DK?M?N?DF?DF=N ̄1+1DK2\frac { D _ { K } \cdot D _ { K } \cdot M \cdot D _ { F } \cdot D _ { F } + M \cdot N \cdot D _ { F } \cdot D _ { F } } { D _ { K } \cdot D _ { K } \cdot M \cdot N \cdot D _ { F } \cdot D _ { F } } = _ { \overline { { N } } } ^ { 1 } + \frac { 1 } { D _ { K } ^ { 2 } } DK??DK??M?N?DF??DF?DK??DK??M?DF??DF?+M?N?DF??DF??=N1?+DK2?1?
MobileNet 使用 3 × 3 的深度可分卷積,與標準卷積相比,計算量減少了 8 到 9 倍,同時準確度僅有小幅下降,如第 4 節所示。
在空間維度上進行額外的因式分解,例如在 [16, 31] 中所做的,實際上并不會節省太多計算,因為在深度卷積中消耗的計算量非常少。

在這里插入圖片描述

3.2. 網絡結構和訓練

MobileNet 的結構基于前一節提到的深度可分卷積,唯一的例外是第一層,它是一個標準的卷積層。通過以如此簡單的方式定義網絡,我們能夠輕松探索網絡拓撲,從而找到一個合適的網絡。MobileNet 的架構定義如表 1 所示。除最后一個全連接層外,所有層后都跟有批歸一化(batchnorm)[13] 和 ReLU 非線性激活,最后的全連接層沒有非線性激活,輸出進入 softmax 層進行分類。圖 3 對比了常規卷積層(包括批歸一化和 ReLU 非線性激活)與因式分解層(包括深度卷積、1 × 1 逐點卷積,以及每個卷積層后的批歸一化和 ReLU)。下采樣通過在深度卷積以及第一層中使用步幅卷積(strided convolution)來處理。最終的平均池化層將空間分辨率減少到 1,之后是全連接層。將深度卷積和逐點卷積視為獨立的層時,MobileNet 一共有 28 層。

僅僅根據少量的 Mult-Adds 來定義網絡是不夠的,確保這些操作可以高效實現也同樣重要。例如,非結構化的稀疏矩陣運算通常并不比密集矩陣運算更快,除非稀疏度非常高。我們的模型結構將幾乎所有的計算都放在密集的 1 × 1 卷積中。這可以通過高度優化的通用矩陣乘法(GEMM)函數來實現。通常,卷積是通過 GEMM 來實現的,但需要在內存中進行初步重排,稱為 im2col,以便將其映射到 GEMM。例如,流行的 Caffe 包 [15] 就使用了這種方法。1 × 1 卷積不需要這種內存重排,可以直接通過 GEMM 實現,而 GEMM 是最優化的數值線性代數算法之一。MobileNet 將 95% 的計算時間花費在 1 × 1 卷積上,這也占據了 75% 的參數,如表 2 所示。幾乎所有的額外參數都在全連接層中。
在這里插入圖片描述

MobileNet 模型在 TensorFlow [1] 中使用 RMSprop [33] 和類似于 Inception V3 [31] 的異步梯度下降進行訓練。然而,與訓練大型模型不同,我們使用較少的正則化和數據增強技術,因為小型模型在過擬合方面問題較少。在訓練 MobileNets 時,我們不使用側頭或標簽平滑(label smoothing),并且通過限制在大規模 Inception 訓練中使用的小裁剪的大小,減少圖像失真的數量。此外,我們發現,對于深度卷積濾波器,由于其中的參數非常少,因此非常重要的一點是幾乎不使用或完全不使用權重衰減(L2 正則化)。在接下來的 ImageNet 基準測試中,所有模型都使用相同的訓練參數,無論模型的大小如何。

3.3. 寬度乘數:更精簡的模型

盡管基礎的 MobileNet 架構已經很小且延遲低,但許多特定的使用場景或應用可能需要模型更小、更快。為了構建這些更小且計算開銷更低的模型,我們引入了一個非常簡單的參數 α,稱為寬度乘數。寬度乘數 α 的作用是均勻地在每一層對網絡進行縮減。對于給定的層和寬度乘數 α,輸入通道數 M 變為 αMαMαM,輸出通道數 N 變為 αNαNαN
在這里插入圖片描述

深度可分卷積的計算成本在寬度乘數 Q 下為:
DK?DK?αM?DF?DF+αM?αN?DF?DF(6)D _ { K } \cdot D _ { K } \cdot \alpha M \cdot D _ { F } \cdot D _ { F } + \alpha M \cdot \alpha N \cdot D _ { F } \cdot D _ { F }\quad(6) DK??DK??αM?DF??DF?+αM?αN?DF??DF?(6)

溫馨提示:
閱讀全文請訪問"AI深語解構" MobileNets: 高效的卷積神經網絡用于移動視覺應用

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

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

相關文章

SDP服務發現協議:動態查詢設備能力的底層邏輯(面試深度解析)

SDP的底層邏輯揭示了物聯網設備交互的本質——先建立認知,再開展協作。 一、SDP 核心知識點高頻考點解析 1.1 SDP 的定位與作用 考點:SDP 在藍牙協議棧中的位置及核心功能 解析:SDP(Service Discovery Protocol,服務發現協議)位于藍牙協議棧的中間層,依賴 L2CAP 協議傳…

CppCon 2018 學習:GIT, CMAKE, CONAN

提到的: “THE MOST COMMON C TOOLSET” VERSION CONTROL SYSTEM BUILDING PACKAGE MANAGEMENT 這些是 C 項目開發中最核心的工具鏈組成部分。下面我將逐一解釋每部分的作用、常見工具,以及它們如何協同構建現代 C 項目。 1. VERSION CONTROL SYSTEM&am…

使用tensorflow的線性回歸的例子(五)

我們使用Iris數據,Sepal length為y值而Petal width為x值。import matplotlib.pyplot as pltimport numpy as npimport tensorflow as tffrom sklearn import datasetsfrom tensorflow.python.framework import opsops.reset_default_graph()# Load the data# iris.d…

虛幻基礎:動作——蒙太奇

能幫到你的話,就給個贊吧 😘 文章目錄 動作——蒙太奇如果動作被打斷,則后續的動畫通知不會執行 動作——蒙太奇 如果動作被打斷,則后續的動畫通知不會執行

[工具系列] 開源的 API 調試工具 Postwoman

介紹 隨著 Web 應用的復雜性增加,API 測試已成為開發中不可或缺的一部分,無論是前端還是后端開發,確保 API 正常運行至關重要。 Postman 長期以來是開發者進行 API 測試的首選工具,但是很多基本功能都需要登陸才能使用&#xff…

【力扣 簡單 C】746. 使用最小花費爬樓梯

目錄 題目 解法一 題目 解法一 int min(int a, int b) {return a < b ? a : b; }int minCostClimbingStairs(int* cost, int costSize) {const int n costSize; // 樓頂&#xff0c;第n階// 爬到第n階的最小花費 // 爬到第n-1階的最小花費從第n-1階爬上第n階的花費…

python+django開發帶auth接口

pythondjango開發帶auth接口 # coding utf-8 import base64 from django.contrib import auth as django_authfrom django.core.exceptions import ObjectDoesNotExist from django.http import JsonResponsefrom sign.models import Eventdef user_auth(request):"&quo…

RBAC權限模型如何讓API訪問控制既安全又靈活?

url: /posts/9f01e838545ae8d34016c759ef461423/ title: RBAC權限模型如何讓API訪問控制既安全又靈活? date: 2025-07-01T04:52:07+08:00 lastmod: 2025-07-01T04:52:07+08:00 author: cmdragon summary: RBAC權限模型通過用戶、角色和權限的關聯實現訪問控制,核心組件包括用…

安達發|告別低效排產:APS高級排程如何助力電池企業智造升級?

在全球能源轉型的背景下&#xff0c;動力電池、儲能電池等市場需求快速增長&#xff0c;電池制造企業面臨著訂單波動大、工藝復雜、交期嚴格等挑戰。傳統的手工排產或基于ERP的簡單計劃模式已難以滿足高效、精準的生產需求。APS高級排程通過智能算法優化生產計劃&#xff0c;實…

數據結構20250620_數據結構考試

試卷01 天津金海通軟件筆試題 選擇題(4*416) 對于雙向循環鏈表,在p指針所指的結點之后插入s指針所指結點的操作應為 p->nexts; s->prip; p->next->pris; s->nextp->nextp->nexts; p->next->pris; s->prip; s->nextp->nexts->pri …

4. 尋找正序數組的中位數

題目&#xff1a; 給定兩個大小分別為 m 和 n 的正序&#xff08;從小到大&#xff09;數組 nums1 和 nums2。請你找出并返回這兩個正序數組的 中位數 。 算法的時間復雜度應該為 O(log (mn)) 。 示例&#xff1a; 輸入&#xff1a;nums1 [1,3], nums2 [2] 輸出&#xff1a…

DeepSeek飛機大戰小游戲HTML5(附源碼)

用DeepSeek幫忙生成的飛機大戰小游戲網頁版&#xff0c;基于HTML5。 提示詞prompt 幫我做一個網頁版的飛機大戰游戲 html5的游戲功能說明 玩家控制&#xff1a; 使用鍵盤方向鍵或WASD移動飛機 空格鍵發射子彈 移動設備支持觸摸控制 游戲機制&#xff1a; 敵機會從屏幕頂部隨機位…

全素山藥開發指南:從防癢處理到高可用食譜架構

摘要&#xff1a;本文系統性解析山藥的化學特性&#xff08;黏液蛋白/皂苷致癢機制&#xff09;及全素場景下的烹飪解決方案&#xff0c;提供6種高內聚低耦合的食譜實現&#xff0c;附完整防氧化與黏液控制技術方案。一、核心問題分析&#xff1a;山藥處理中的“痛點”致癢物質…

OpenLayers 入門指南:序言

本專欄旨在幫助零GIS基礎的開發人員系統掌握OpenLayers這一強大的開源Web地圖庫&#xff0c;通過 “理論實戰” 結合的方式&#xff0c;逐步實現從創建地圖到構建一個基礎地圖應用模版。無論你是前端開發者、GIS愛好者&#xff0c;都可以通過此專欄零基礎開始用OpenLayers開發一…

WebRTC輕量學習 libdatachannel

最近想了解一些在瀏覽器中推送音視頻流&#xff0c;尋找很多版本的代碼&#xff0c;C、Go、Python等語言實現的webRTC協議。 按照搭建難度和快速實現首選Python版本的WebRTC&#xff0c;這種是最適合原型開發的。 選型&#xff1a;C的開源庫libdatachannel Python的開源庫Ai…

Vue2中的keep-alive:組件狀態緩存與性能優化實戰指南

目錄 一、什么是keep-alive&#xff1f; 與普通組件切換的對比 二、核心用法詳解 1. 基礎用法&#xff1a;動態組件緩存 2. 路由視圖緩存 3. 生命周期鉤子 三、進階配置與優化 1. 精準控制緩存組件 &#xff08;1&#xff09;include/exclude屬性 &#xff08;2&…

FastAPI安全加固:密鑰輪換、限流策略與安全頭部如何實現三重防護?

url: /posts/f96ba438de34dc197fd2598f91ae133d/ title: FastAPI安全加固:密鑰輪換、限流策略與安全頭部如何實現三重防護? date: 2025-07-02T22:05:04+08:00 lastmod: 2025-07-02T22:05:04+08:00 author: cmdragon summary: FastAPI框架安全加固方案包括密鑰輪換自動化、請…

NeighborGeo:基于鄰居的IP地理定位(五)

NeighborGeo:基于neighbors的IP地理定位 X. Wang, D. Zhao, X. Liu, Z. Zhang, T. Zhao, NeighborGeo: IP geolocation based on neighbors, Comput. Netw. 257 (2025) 110896, 5. Case analysis 為了說明NeighborGeo在優化圖結構和利用鄰居信息進行預測方面的優勢,將目標I…

Ethernet IP與Profinet共舞:網關驅動綠色工業的智慧脈動

Ethernet IP與Profinet共舞&#xff1a;驅動綠色工業的智慧脈動 光伏建筑一體化&#xff0c;建筑碳中和&#xff0c;在全球氣候變化、國家碳達峰碳中和戰略大背景下&#xff0c;敬畏生活、生產與自然和諧共處&#xff0c;確立自身資源循環高效利用的倒計時和路線圖。 在全球氣…

衡石科技破解指標管理技術難題:語義層建模如何實現業務與技術語言對齊?

在數字化轉型的深水區&#xff0c;企業指標管理體系普遍面臨一個核心矛盾&#xff1a;業務部門需要敏捷的數據洞察支撐決策&#xff0c;而IT部門卻受困于復雜的數據架構和冗長的需求響應周期。這種矛盾的本質&#xff0c;是傳統指標管理體系中“技術語言”與“業務語言”的割裂…