最近在看ppocrv4相關(guān)的代碼,看到里面運(yùn)用了一種高效的backbone---PP-LCNet,目前這個(gè)模型有3個(gè)版本,V3網(wǎng)上沒有相關(guān)解析也沒有論文,我粗略查看了一下源碼,運(yùn)用的方法大致跟V2差不多,所以我在這里只解析V1和V2
PP-LCNetV1
PP-LCNetV1 的結(jié)構(gòu)非常簡(jiǎn)單,以至于我們模型設(shè)計(jì)常用的跳躍連接都不使用,其結(jié)構(gòu)主要由深度可分離卷積組成(深度卷積+逐點(diǎn)卷積),并結(jié)合SE通道注意力機(jī)制進(jìn)行特征提取,不過SE模塊做了一些加速處理,以提高在CPU端的計(jì)算效率,具體來說就是減少了全連接的層數(shù),使用h-swish來近似代替復(fù)雜度更高的-sigmoid。V1的整體結(jié)構(gòu)如下圖所示。

可以看到V1 基本不用我們模型設(shè)計(jì)里的一些技巧操作,如拼接concat或逐元素elementwise-add相加,這些操作不僅會(huì)降低模型的推理速度,而且在小型模型上也不會(huì)提高準(zhǔn)確度。由于整體結(jié)構(gòu)相當(dāng)簡(jiǎn)單,作者估計(jì)也擔(dān)心精度太差,所以標(biāo)配hard-switch激活函數(shù)。
PP-LCNetV2
V2在V1的基礎(chǔ)上增加了當(dāng)下較為流行的技巧---重參數(shù)化,整體結(jié)構(gòu)如下圖所示。

可以看到V2并不是所有block都用重參數(shù),只用在最后2個(gè)Block,同時(shí)在最后一個(gè)block增加了殘差連接,以及全系激活函數(shù)換回了relu,理由是有很大一部分硬件設(shè)施對(duì)于h-swish的加速不理想,雖然精度有提高,但速度下降很大,有點(diǎn)得不償失。其中重參數(shù)模塊中使用了多尺度卷積核,用于提取不同感受野的特征信息。

整體 PP-LCNet系列結(jié)構(gòu)上的創(chuàng)新不大,主要是小修小改,瞄準(zhǔn)點(diǎn)是速度快然后精度也不差,適用于CPU端模型的設(shè)計(jì),如果是GPU端的話我比較推薦百度的HGNet系列模型。