移动设备模型靠高效的构建块搭建。MobileNetV1引入了深度可分离卷积来替代传统卷积层。深度可分离卷积将空间滤波与特征生成机制分离,有效地分解了传统卷积。深度可分离卷积有两个独立的层结构:用于空间滤波的轻量级深度卷积层及用于特征生成的 1 × 1 1\times 1 1×1点卷积。
MobileNetV2引入了线性瓶颈及反向残差结构实现更高效的层结构。结构如下图所示,由 1 × 1 1\times 1 1×1扩展卷积层、深度卷积层及 1 × 1 1\times 1 1×1投影卷积层组成。当且仅当输入和输出具有相同通道数的时候,它们之间才会使用残差连接。
MnasNet基于MobileNetV2模型,在瓶颈结构中引入了基于压缩及激发的轻量级注意力模块。与SENet不同的是, MnasNet将压缩及激发模块放置于深度卷积层之后。
对于MobileNetV3,我们使用了上述三种结构相结合构建块来实现更高效的模型。同时我们也引入了改进的 s w i s h \mathrm{swish} swish作为非线性函数。不管是压缩、激活还是 s w i s h \mathrm{swish} swish都会使用 s i g m o i d \mathrm{sigmoid} sigmoid函数,这样可能会导致计算效率低下,并且在定点算法中难以保持精度,因此我们将其替换为硬 s i g m o i d \mathrm{sigmoid} sigmoid函数。
对于MobileNetV3,我们首先使用平台感知NAS算法搜索全局网络架构,接着使用NetAdapt算法搜索每层卷积核个数。这两种算法相互补充,可以结合起来为给定硬件平台优化网络模型。
平台感知NAS算法:是一种使用强化学习设计移动端模型的神经网络架构搜索算法。该算法整体流程如下图所示,包括一个基于递归神经网络(RNN)的控制器,一个获取模型精度的训练器及一个用于测量延迟基于手机的推理引擎。
首先控制器会根据自身参数 θ \theta θ采样一系列超参 a 1 : T a_{1:T} a1:T,采样方法如下图所示,采样输入是来自上一次采样输出的结果。之后,训练器会根据超参生成网络并训练网络得到模型准确率 A C C ( m ) ACC(m) ACC(m),同时模型也会被集成至目标移动平台测量推理延迟 L A T ( m ) LAT(m) LAT(m)。将上述两指标相结合得到强化学习奖励信号:
A C C ( m ) × [ L A T ( m ) T ] w , w = { α , i f L A T ( m ) ≤ T β , o t h e r w i s e (1) ACC(m)\times\left [\frac{LAT(m)}{T} \right]^w,w=\left \{ \begin{matrix}\alpha,&\mathrm{if}\ LAT(m)\leq T\\\beta,&\mathrm{otherwise}\end{matrix} \right.\tag{1} ACC(m)×[TLAT(m)]w,w={α,β,if LAT(m)≤Totherwise(1)
搜索最佳神经网络架构的过程即最大化期望奖励的过程:J ( θ ) = E P ( a 1 : T ; θ ) [ R ] (2) J(\theta)=E_{P(a_{1:T};\theta)}[R]\tag{2} J(θ)=EP(a1:T;θ)[R](2)
虽然奖励信号 R R R不可微,但可以使用策略梯度去迭代更新 θ \theta θ:∇ θ J ( θ ) = ∑ t = 1 T E P ( a 1 : T ; θ ) [ ∇ θ log P ( a t ∣ a ( t − 1 ) : 1 ; θ ) R ] ≈ 1 m ∑ k = 1 m ∑ t = 1 T ∇ θ log P ( a t ∣ a ( t − 1 ) : 1 ; θ ) R k (3) \nabla_\theta J(\theta)=\sum_{t=1}^TE_{P(a_{1:T};\theta)}[\nabla_{\theta}\log P(a_t|a_{(t-1):1};\theta)R]\approx \frac{1}{m}\sum_{k=1}^m\sum_{t=1}^T\nabla_{\theta}\log P(a_t|a_{(t-1):1};\theta)R_k\tag{3} ∇θJ(θ)=t=1∑TEP(a1:T;θ)[∇θlogP(at∣a(t−1):1;θ)R]≈m1k=1∑mt=1∑T∇θlogP(at∣a(t−1):1;θ)Rk(3)
我们使用MnasNet-A1作为初始大移动端模型,然后在其之上使用NdetAdapt及其他算法进行优化。
MnasNet-A1所使用的的奖励函数并没有针对小移动端模型进行优化。具体来说,MnasNet-A1使用多目标奖励函数 A C C ( m ) × [ L A T ( m ) / T A R ] w ACC(m)\times[LAT(m)/TAR]^w ACC(m)×[LAT(m)/TAR]w来逼近Pareto最优解。我们观察到,小模型的准确率对于延迟更加敏感,因此重新调整了权重系数 w = − 0.15 w=-0.15 w=−0.15(MnasNet-A1模型使用 w = − 0.07 w=-0.07 w=−0.07),以此来补偿延迟变换对准确率的影响。我们利用改进后的奖励函数进行网络架构搜索,然后使用NetAdapt及其他算法来优化MobileNetV3小模型。
MnasNet-A1:是论文《MnasNet: Platform-Aware Neural Architecture Search for Mobile》中搜索出的模型结构,架构如下图所示:
我们在架构搜索中采用的第二个技术是NetAdapt算法。该算法是对平台感知NAS算法的补充:它对各层而非全局架构进行微调。简而言之,该算法操作步骤如下:
利用平台感知NAS算法搜索种子网络架构。
本步骤包括以下三个部分:
(a) 生成一组建议。每个建议代表对网络架构的某种的修改,这种修改相对于上一个步骤,使模型在网络延迟上至少有 δ \delta δ的降低。
(b) 我们使用上一个步骤预训练好的模型,根据建议调整网络架构,并适当地截断及随机初始化丢失的权重。对于每个建议,我们使用 T T T步进行模型微调,以此得到粗略的准确率估计。
© 根据某些指标选取最佳建议。
重复上一步,直至达到目标延迟。
我们采用准确率变化率与延迟变化率的比值作为指标。在所有建议中,选取使比值 Δ A C C ∣ Δ l a t e n c y ∣ \frac{\Delta\mathrm{ACC}}{|\Delta\mathrm{latency}|} ∣Δlatency∣ΔACC最大化的那一个,其中 Δ l a t e n c y \Delta\mathrm{latency} Δlatency满足步骤2(a)的约束。
重复上述步骤,直至网络延迟达到预设目标,之后我们会从头开始训练新网络架构。对于MoblieNetV2块,我们使用了如下两种建议:
对于我们的实验,我们使用 T = 10000 T=10000 T=10000及 δ = 0.1 ∣ L ∣ \delta=0.1|L| δ=0.1∣L∣作为参数,其中 L L L是种子模型的延迟。
除网络搜索外,我们也引入了几种新组建用以优化最终模型。我们重新设计了网络输入输出中消耗运算资源较多的层。另外,我们也引入了新的非线性函数 h − s w i s h \mathrm{h-swish} h−swish,它是 s w i s h \mathrm{swish} swish的改进版,运算速度更快且对量化更友好。
我们观察到,架构搜索的模型在输出及输入附近的层所消耗的运算资源相较于其他层更多。我们在保证模型准确率的同时对这些层进行一定的改进。这些改进不在当前搜索的空间范围内。
我们首先改进了网络输出最后几层的结构。架构搜索的模型是基于MobileNetV2的倒瓶颈块及其变种组建,在最后一层使用了 1 × 1 1\times1 1×1卷积进行特征空间维度扩展。这一层用于丰富特征,对于模型预测至关重要,同时,它也会带来额外的延迟。
为了在减少延迟的同时保留高维度特征,我们将该层移动到平均池化层之外。最终,维度扩展是在 1 × 1 1\times1 1×1而非 7 × 7 7\times7 7×7的分辨率上进行。这样的设计与原始结构相比,特征扩展几乎不消耗运算资源及造成延迟。
一旦降低了特征扩展的运算成本,那么之前瓶颈结构中的用于降低运算量的投影层也不再被需要。我们将上一个瓶颈结构的投影及滤波层同时移除,这样可以更进一步地降低运算复杂度。原始及优化后的结构如下图所示。优化后的模型,其延迟减少了 7 m s 7\mathrm{ms} 7ms,大约是运行时间的 11 % 11\% 11%,同时也减少了 3000 3000 3000万次乘加操作,并且几乎没有损失准确率。详细结果见第 6 6 6节。
另一个消耗运算资源较多的层是网络输入层。当前移动端模型的输入层倾向于使用 32 32 32个 3 × 3 3\times3 3×3的全卷积滤波器进行图像边缘检测。我们实验了减少滤波器数目及使用不同非线性函数对模型的影响。最终,我们选择硬 s w i s h \mathrm{swish} swish函数作为非线性函数,它与其他非线性函数具有同样优秀的性能。同时我们也发现,不管使用 R e L U \mathrm{ReLU} ReLU还是 s w i s h \mathrm{swish} swish,在输入层使用 16 16 16个滤波器与使用 32 32 32个滤波器相同的准确率。这样可以减少 2 m s 2\mathrm{ms} 2ms延迟及 1000 1000 1000万次乘加操作。
s w i s h \mathrm{swish} swish作为 R e L U \mathrm{ReLU} ReLU的替代品可以显著地提高神经网络的准确率。该非线性函数定义如下:
s w i s h x = x ⋅ σ ( x ) (4) \mathrm{swish}\ x=x\cdot\sigma(x)\tag{4} swish x=x⋅σ(x)(4)
尽管提高了准确率,但是在移动设备上运算 s i g m o i d \mathrm{sigmoid} sigmoid函数却需要消耗很多的运算资源。我们有两种方式来处理这个问题。
我们可以采用分段线性硬模拟的方式来实现 s i g m o i d \mathrm{sigmoid} sigmoid函数: R e L U ( x + 3 ) 6 \frac{\mathrm{ReLU}(x+3)}{6} 6ReLU(x+3)。同理, s w i s h \mathrm{swish} swish函数的硬版本如下:
h − s w i s h [ x ] = x R e L U 6 ( x + 3 ) 6 (5) \mathrm{h-swish}[x]=x\frac{\mathrm{ReLU6}(x+3)}{6}\tag{5} h−swish[x]=x6ReLU6(x+3)(5)
下图对比了软硬版本的 s i g m o i d \mathrm{sigmoid} sigmoid及 s w i s h \mathrm{swish} swish非线性函数。我们在实验中发现,使用硬版本的函数对于准确率几乎无影响,但是从模型部署的角度来看,硬版本的函数具有多种优势。首先,几乎所有的软件或硬件深度学习框架都提供 R e L U 6 \mathrm{ReLU6} ReLU6的优化实现。其次,在量化模式下,硬版本的 s i g m o i d \mathrm{sigmoid} sigmoid函数相较于其他近似函数其模型精度损失更低。最后,在实际操作中, h − s w i s h \mathrm{h-swish} h−swish函数可以实现为分段函数以减少运算对内存的访问,从而大大降低延迟时间。
尽管使用了上述优化方法, h − s w i s h \mathrm{h-swish} h−swish函数任然会导致一定的延迟升高。
我们将瓶颈结构中压缩及激发的尺寸固定为扩展层通道数的 1 / 4 1/4 1/4。这样做可以在不增加参数量的情况下提高准确率,并且几乎不会增加网络延迟。
MobileNetV3有两种定义版本:MobileNetV3-Large及MobileNetV3-Small。这两种模型分别针对高资源及低资源的应用而设计。模型通过平台感知NAS算法及NetAdapt算法搜索而来并且结合了本节中所提出的改进方法。具体网络完整规格请参见下表。
Input | Operator | exp size | #out | SE | NL | s |
---|---|---|---|---|---|---|
2242 x 3 | conv2d | - | 16 | - | HS | 2 |
1122 x 16 | bneck, 3 x 3 | 16 | 16 | - | RE | 1 |
1122 x 16 | bneck, 3 x 3 | 64 | 24 | - | RE | 2 |
562 x 24 | bneck, 3 x 3 | 72 | 24 | - | RE | 1 |
562 x 24 | bneck, 5 x 5 | 72 | 40 | ✓ | RE | 2 |
282 x 40 | bneck, 5 x 5 | 120 | 40 | ✓ | RE | 1 |
282 x 40 | bneck, 5 x 5 | 120 | 40 | ✓ | RE | 1 |
282 x 40 | bneck, 3 x 3 | 240 | 80 | - | HS | 2 |
142 x 80 | bneck, 3 x 3 | 200 | 80 | - | HS | 1 |
142 x 80 | bneck, 3 x 3 | 184 | 80 | - | HS | 1 |
142 x 80 | bneck, 3 x 3 | 184 | 80 | - | HS | 1 |
142 x 80 | bneck, 3 x 3 | 480 | 112 | ✓ | HS | 1 |
142 x 112 | bneck, 3 x 3 | 672 | 112 | ✓ | HS | 1 |
142 x 112 | bneck, 5 x 5 | 672 | 160 | ✓ | HS | 2 |
72 x 160 | bneck, 5 x 5 | 960 | 160 | ✓ | HS | 1 |
72 x 160 | bneck, 5 x 5 | 960 | 160 | ✓ | HS | 1 |
72 x 160 | conv2d, 1 x 1 | - | 960 | - | HS | 1 |
72 x 960 | pool, 7 x 7 | - | - | - | - | 1 |
12 x 960 | conv2d 1 x 1, NBN | - | 1280 | - | HS | 1 |
12 x 1280 | conv2d 1 x 1, NBN | - | k | - | - | 1 |
Input | Operator | exp size | #out | SE | NL | s |
---|---|---|---|---|---|---|
2242 x 3 | conv2d, 3 x 3 | - | 16 | - | HS | 2 |
1122 x 16 | bneck, 3 x 3 | 16 | 16 | - | RE | 2 |
562 x 24 | bneck, 3 x 3 | 72 | 24 | - | RE | 2 |
282 x 24 | bneck, 3 x 3 | 88 | 24 | - | RE | 1 |
282 x 24 | bneck, 5 x 5 | 96 | 40 | ✓ | HS | 2 |
142 x 40 | bneck, 5 x 5 | 240 | 40 | ✓ | HS | 1 |
142 x 40 | bneck, 5 x 5 | 240 | 40 | ✓ | HS | 1 |
142 x 40 | bneck, 5 x 5 | 120 | 48 | ✓ | HS | 1 |
142 x 48 | bneck, 5 x 5 | 144 | 48 | ✓ | HS | 1 |
142 x 48 | bneck, 5 x 5 | 288 | 96 | ✓ | HS | 2 |
72 x 96 | bneck, 5 x 5 | 576 | 96 | ✓ | HS | 1 |
72 x 96 | bneck, 5 x 5 | 576 | 96 | ✓ | HS | 1 |
72 x 96 | conv2d, 1 x 1 | - | 576 | ✓ | HS | 1 |
72 x 576 | pool, 7 x 7 | - | - | - | - | 1 |
12 x 576 | conv2d 1 x 1, NBN | - | 1024 | - | HS | 1 |
12 x 1024 | conv2d 1 x 1, NBN | - | k | - | - | 1 |
我们的实验结果证明了MobileNetV3的高效性。我们报告了有关分类,检测和分割任务的实验结果。同时也进行了控制变量分析,以研究不同设计决策对模型测试结果的影响。
我们以ImageNet数据集为分类实验标准,比较了各种模型的准确率及资源消耗(例如延迟和乘加操作)。
我们在 4 × 4 4\times4 4×4 TPU Pod上利用tensorflow框架同步训练模型,采用的优化器为 0.9 0.9 0.9动量的RMSProp。我们使用的初始学习速率为 0.1 0.1 0.1,批大小为 4096 4096 4096(每个芯片处理 128 128 128张图片),学习速率每 3 3 3个epcho会减小 0.01 0.01 0.01。我们也使用 0.8 0.8 0.8比例的dropout并且在损失函数中加入了 1 e − 5 1e-5 1e−5比例的 l 2 \mathrm{l2} l2正则化,然后采用Inception中相同的图像预处理方法。最后,我们对权重使用衰减系数为 0.9999 0.9999 0.9999的指数滑动平均。所有的卷积层都使用了平均衰减系数为 0.99 0.99 0.99的批标准化。
TPU Pod:是一组运行在谷歌数据中心中的服务器机架,每个机架都配备了谷歌的Tensor处理器单元(TPU)。
我们在谷歌Pixel手机上,利用TFLite基准工具进行模型延迟测量。因为我们发现多核网络推理对于移动应用来说并不太实用,所以所有的测量都是在单线程大核中进行的。
如下图所示,我们的模型优于目前最先进的技术,如MnasNet、ProxylessNas及MobileNetV2。
在下表中,我们分别对比了各个模型在不同Pixel系列手机上的浮点性能及量化性能。
Network | Top-1 | MAdds | Params | P-1 | P-2 | P-3 |
---|---|---|---|---|---|---|
V3-Large 1.0 | 75.2 | 219 | 5.4M | 51 | 61 | 44 |
V3-Large 0.75 | 73.3 | 155 | 4.0M | 39 | 46 | 40 |
MnasNet-A1 | 75.2 | 315 | 3.9M | 71 | 86 | 61 |
Proxyless | 74.6 | 320 | 4.0M | 72 | 84 | 60 |
V2 1.0 | 72.0 | 300 | 3.4M | 64 | 76 | 56 |
V3-Small 1.0 | 67.4 | 56 | 2.5M | 15.8 | 19.4 | 14.4 |
V3-Small 0.75 | 65.4 | 44 | 2.0M | 12.8 | 15.6 | 11.7 |
Mnas-Small | 64.9 | 65.1 | 1.9M | 20.3 | 24.2 | 17.2 |
V2 0.35 | 60.8 | 59.2 | 1.6M | 16.6 | 19.6 | 13.9 |
Network | Top-1 | P-1 | P-2 | P-3 |
---|---|---|---|---|
V3-Large 1.0 | 73.8 | 44 | 42.5 | 31.7 |
V2 1.0 | 70.9 | 52 | 48.3 | 37.0 |
V3-Small | 64.9 | 15.5 | 14.9 | 10.7 |
V3 0.35 | 57.2 | 16.7 | 15.6 | 11.9 |
在下图中,我们对比了不同乘数及分辨率的MobileNetV3模型。
非线性函数的影响 我们研究了 h − s w i s h \mathrm{h-swish} h−swish函数在模型中的插入位置及优化实现方式对准确率和延迟的影响,结果如下表所示, h − s w i s h @ N \mathrm{h-swish}@N h−swish@N表示从通道数为 N N N的层开始使用 h − s w i s h \mathrm{h-swish} h−swish作为激活函数的MobileNetV3-Large 1.0模型。从表中我们可以看到,优化 h − s w i s h \mathrm{h-swish} h−swish函数后,模型延迟降低了 6 m s 6\mathrm{ms} 6ms(超过 10 % 10\% 10%的运行时间)。优化 h − s w i s h \mathrm{h-swish} h−swish函数的模型仅比传统 R e L U \mathrm{ReLU} ReLU函数的模型慢 1 m s 1\mathrm{ms} 1ms。
Top-1 | P-1 | P-1(no-opt) | |
---|---|---|---|
V3-Large 1.0 | 75.2 | 51.4 | 57.5 |
ReLU | 74.5(-.7%) | 50.5(-1%) | 50.5 |
h-swish@16 | 75.4(+.2%) | 53.5(+4%) | 68.9 |
h-swish@112 | 75.0(-.3%) | 51(-0.5%) | 54.4 |
下图研究了非线性函数及网络宽度的效率边界。
其他组件的影响 在下图中我们展现了不同组件的引入是如何推动模型延迟/准确率曲线移动的。
我们使用MobileNetV3替代SSDLite中的主干特征提取器,并在COCO数据集上与其他主干网络的SSDLite进行了比较。
与MobileNetV2操作相似,我们将SSDLite结构的第一层指定为输出步幅为 16 16 16的最后一个特征提取层,第二层指定为输出步幅为 32 32 32的最后一个特征提取层。我们将这两层分别用 C 4 C4 C4及 C 5 C5 C5表示。对于MobileNetV3-Large而言, C 4 C4 C4是第 13 13 13个瓶颈块的扩展层。对于MobileNetV3-Small而言, C 4 C4 C4是第 9 9 9个瓶颈块的扩展层。对于两个网络而言, C 5 C5 C5都是池化层之前的卷积层。
此外,我们还将 C 4 C4 C4及 C 5 C5 C5的之间的特征层通道数减少了 2 2 2倍。这是因为MobileNetV3的后几层是为 1000 1000 1000种类别ImageNet数据集而设计,这对于 90 90 90种类别的COCO数据集来说是冗余的。
下表给出了各个模型在COCO数据集上的测试结果,其中 + + +表示通道数减少后的模型。通道数减少后的MobileNetV3-Large与MobileNetV2性能相当但是快 27 % 27\% 27%。通道数减少后的MobileNetV3-Small比MobileNetV2和NnasNet性能高 2.4 2.4 2.4和 0.5 0.5 0.5 mAP的同时速度快 15 % 15\% 15%。对于两种MobileNetV3模型而言,通道数减少可以降低约 15 % 15\% 15%的延迟,而且无mAP损失,这意味着对于ImageNet分类任务与COCO目标检测任务而言特征提取器倾向于不同的尺寸。
Backbone | mAP | Latency(ms) | Params(M) | MAdds(B) |
---|---|---|---|---|
V1 | 22.2 | 228 | 5.1 | 1.3 |
V2 | 22.1 | 162 | 4.3 | 0.80 |
MnasNet | 23.0 | 174 | 4.88 | 0.84 |
V3 | 22.0 | 137 | 4.97 | 0.62 |
V3+ | 22.0 | 119 | 3.22 | 0.51 |
V2 0.35 | 13.7 | 66 | 0.93 | 0.16 |
V2 0.5 | 16.6 | 79 | 1.54 | 0.27 |
MnasNet 0.35 | 15.6 | 68 | 1.02 | 0.18 |
V3-Small | 16.0 | 52 | 2.49 | 0.21 |
V3-Small+ | 16.1 | 43 | 1.77 | 0.16 |
SSDLite:是MobileNetV2中提出的一种SSD网络的变体,将SSD网络中预测层部分的传统卷积替换为了深度可分离卷积。SSD整体结构如下图所示。
在本小节中,我们对比使用MobileNetV2及MobileNetV3作为主干网络的移动端语义分割模型。此外,我们还比较了两种分割头。第一种被称为R-ASPP,是ASPP的简化设计,仅包含 1 × 1 1\times1 1×1卷积及全局平均池化两个分支。在本文中,我们提出了另一种轻量级分割头,被称为Lite R-ASPP(或LR-ASPP),如下图所示。Lite R-ASPP是对R-ASPP的改进,它在全局平均池化分支中添加了类似压缩及激发的模块。我们在MobileNetV3的最后一个构建块中使用空洞卷积来提取更稠密的特征,并且在低级特征中添加跳接连线来捕获更详细的信息。
我们在Cityscapes数据集上使用mIOU为度量指标进行实验,并且只使用像素级注释图像。我们所有的模型都从零开始训练,不需要在ImageNet进行预训练,并且使用单尺度输入进行评估。与目标检测实验相似,我们发现将主干网络最后一个构建块中的通道减少 2 2 2倍,模型性能并不会显著降低。我们认为,这是因为主干网络是在ImageNet数据集上进行设计的,该数据集有 1000 1000 1000个类别,然而Cityscapes数据集仅有 19 19 19个类别,这意味着主干网络中存在一些冗余信道。
我们在Cityscapes的验证集上进行实验,结果如下表所示。我们发现(1)将主干网络的最后一个构建块中的通道减少 2 2 2倍后,模型速度显著加快,同时其性能并不会明显变化(第 1 1 1行与第 2 2 2行,第 5 5 5行与第 6 6 6行),(2)LR-ASPP比R-ASPP稍快,同时性能也更优(第 2 2 2行与第 3 3 3行,第 6 6 6行与第 7 7 7行),(3)将分割头中的滤波器由 256 256 256减少到 128 128 128个,模型性能会稍微降低但是速度会提升(第 3 3 3行与第 4 4 4行,第 7 7 7行与第 8 8 8行),(4)对于相同的配置,MobileNetV3在保持相近性能的同时稍快于MobileNetV2(第 1 1 1行与第 5 5 5行,第 2 2 2行与第 6 6 6行,第 3 3 3行与第 7 7 7行,第 4 4 4行及第 7 7 7行),(5)MobileNetV3-Small与MobileNetV2-0.5性能接近,但速度更快,(6)MobileNetV3-Small与MobileNetV2-0.35速度接近,但性能更优。
N | Backbone | RF2 | SH | F | mIOU | Params | MAdds | CPU(f) | CPU(h) |
---|---|---|---|---|---|---|---|---|---|
1 | V2 | - | x | 256 | 72.84 | 2.11M | 21.29B | 3.90s | 1.02s |
2 | V2 | ✓ | x | 256 | 72.56 | 1.15M | 13.68B | 3.03s | 793ms |
3 | V2 | ✓ | ✓ | 256 | 72.97 | 1.02M | 12.83B | 2.98s | 786ms |
4 | V2 | ✓ | ✓ | 128 | 72.74 | 0.98M | 12.57B | 2.89s | 766ms |
5 | V2 | - | x | 256 | 72.64 | 3.60M | 18.43B | 3.55s | 906ms |
6 | V3 | ✓ | x | 256 | 71.91 | 1.76M | 11.24B | 2.60s | 668ms |
7 | V3 | ✓ | ✓ | 256 | 72.37 | 1.63M | 10.33B | 2.55s | 659ms |
8 | V3 | ✓ | ✓ | 128 | 72.36 | 1.51M | 9.74B | 2.47s | 657ms |
9 | V2 0.5 | ✓ | ✓ | 128 | 68.57 | 0.28M | 4.00B | 1.59s | 415ms |
10 | V2 0.35 | ✓ | ✓ | 128 | 66.83 | 0.16M | 2.54B | 1.27s | 354ms |
11 | V3-Small | ✓ | ✓ | 128 | 68.38 | 0.47M | 2.90B | 1.21s | 327ms |
同时,我们也将MobileNetV3与其他网络模型进行了比较。使用MobileNetV3作为主干网络的分割模型其性能分别优于ESPNetv2,CCC2及ESPNetv1, 6.4 % 6.4\% 6.4%, 10.6 % 10.6\% 10.6%及 12.3 % 12.3\% 12.3%,并且所使用乘加操作更少。在MobileNetV3最后一个构建块中,如果不使用空洞卷积,模型性能会略微下降 0.6 % 0.6\% 0.6%,但所使用乘加操作减少到 1.98 B 1.98\mathrm{B} 1.98B,分别比ESPNetv2,CCC2和ESPNetv1少 1.36 1.36 1.36, 1.59 1.59 1.59和 2.27 2.27 2.27倍。另外,以MobileNetV3作为主干网络的模型仍然比其他模型性能至少好 2.1 % 2.1\% 2.1%。
Backbone | OS | mIOU | MAdds(f) | MAdds(h) | CPU(f) | CPU(h) |
---|---|---|---|---|---|---|
V3 | 16 | 72.6 | 9.74B | 2.48B | 2.47s | 657ms |
V3 | 32 | 72.0 | 7.74B | 1.98B | 2.06s | 534ms |
V3-Small | 16 | 69.4 | 2.90B | 0.74B | 1.21s | 327ms |
V3-Small | 32 | 68.3 | 2.06B | 0.53B | 1.03s | 275ms |
ESPNetv2 | - | 66.2 | - | 2.7B | - | - |
CCC2 | - | 62.0 | - | 3.15B | - | - |
ESPNetv1 | - | 60.3 | - | 4.5B | - | - |
ASPP:是DeepLabV3中提出的空洞空间金字塔模块,包括 1 1 1个 1 × 1 1\times1 1×1卷积层, 3 3 3个不同空洞率的空洞卷积层及 1 1 1个池化层,结构如下图所示。
Cityscapes:是关于城市街道场景的语义分割图片数据集。其场景来自于 50 50 50个不同的城市街道,包括 5000 5000 5000张高质量像素级注释图像( 2975 2975 2975张训练图像, 500 500 500张验证图像及 1525 1525 1525张测试图像,共 19 19 19种类别)和 20000 20000 20000张粗造注释图像。
略