MobileOne: 移動(dòng)端僅需1ms的高性能骨干,你值得擁有!
來(lái)源丨AIWalker
MobileOne(≈MobileNetV1+RepVGG+訓練Trick)是由Apple公司提出的一種基于iPhone12優(yōu)化的超輕量型架構,在ImageNet數據集上以<1ms的速度取得了75.9%的Top1精度。
高效率網(wǎng)絡(luò )具有更強的實(shí)用價(jià)值,但學(xué)術(shù)界的研究往往聚焦于FLOPs或者參數量的降低,而這兩者與推理效率之間并不存在嚴格的一致性。比如,FLOPs并未考慮訪(fǎng)存消耗與計算并行度,像無(wú)參操作(如跳過(guò)連接導致的Add、Concat等)會(huì )帶來(lái)顯著(zhù)的訪(fǎng)存消耗,導致更長(cháng)推理耗時(shí)。
為更好的分析高效率網(wǎng)絡(luò )的瓶頸所在,作者以iPhone12平臺為基準,從不同維度進(jìn)行了"瓶頸"分析,見(jiàn)上圖。從中可以看到:
具有高參數量的模型也可以擁有低延遲,比如ShuffleNetV2;
具有高FLOPs的模型也可以擁有低延遲,比如MobileNetV1和ShuffleNetV2;
上表從SRCC角度進(jìn)行了分析,可以看到:
在移動(dòng)端,延遲與FLOPs和參數量的相關(guān)性較弱;
在PC-CPU端,該相關(guān)性進(jìn)一步弱化。
基于上述洞察,作者從先兩個(gè)主要效率"瓶頸"維度上進(jìn)行了對比,然后對性能"瓶頸"進(jìn)行了分析并提出相應方案。
- Activation Functions:上表對比了不同激活函數對于延遲的影響,可以看到:盡管具有相同的架構,但不同激活函數導致的延遲差異極大。本文默認選擇ReLU激活函數。
- Architectural Block:上表對影響延遲的兩個(gè)主要因素(訪(fǎng)存消耗與計算并行度)進(jìn)行了分析,見(jiàn)上表,可以看到:當采用單分支結構時(shí),模型具有更快的速度。此外,為改善效率,作者在大模型配置方面有限的實(shí)用了SE模塊。
基于上述分析,MobileOne的核心模塊基于MobileNetV1而設計,同時(shí)吸收了重參數思想,得到上圖所示的結構。注:這里的重參數機制還存在一個(gè)超參k用于控制重參數分支的數量(實(shí)驗表明:對于小模型來(lái)說(shuō),該變種收益更大)。
在Model Scaling方面類(lèi)似MobileNetV2,上表給出了MobileOne不同配置的參數信息。
在訓練優(yōu)化方面,小模型需要更少的正則,因此作者提出了Annealing的正則調整機制(可帶來(lái)0.5%指標提升);此外,作者還引入漸進(jìn)式學(xué)習機制(可帶來(lái)0.4%指標提升);最后,作者還采用EMA機制,最終MobileOne-S2模型達到了77.4%的指標。
實(shí)驗結果上表給出了ImageNet數據集上不同輕量型方案的性能與效率對比,可以看到:
哪怕最輕量的Transformer也需要至少4ms,而MobileOne-S4僅需1.86ms即可達到79.4%的精度;
相比EfficientNet-B0,MobileOne-S3不僅具有指標高1%,同時(shí)具有更快的推理速度;
相比其他方案,在PC-CPU端,MobileOne仍具有非常明顯的優(yōu)勢。
上表為MS-COCO檢測、VOC分割以及ADE20K分割任務(wù)上的性能對比,很明顯:
在MC-COCO任務(wù)上,MobileOne-S4比MNASNet指標高27.8%,比MobileViT高6.1%;
在VOC分割任務(wù)上,所提方案比MobileViT高1.3%,比MobileNetV2高5.8%;
在A(yíng)DE20K任務(wù)上,所提最佳方案比MobileNetV2高12%,而MobileOne-S1仍比MobileNetV2高2.9%。
在文章最后,作者俏皮的提了一句:"Although, our models are state-of-the art within the regime of efficient architectures, the accuracy lags large models ConvNeXt and Swin Transformer"。筆者想說(shuō)的是:看上圖。
本文僅做學(xué)術(shù)分享,如有侵權,請聯(lián)系刪文。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。