博客專欄

        EEPW首頁 > 博客 > 地平線高效 backbone: HENet - V1.0

        地平線高效 backbone: HENet - V1.0

        發(fā)布人:地平線開發(fā)者 時間:2025-06-22 來源:工程師 發(fā)布文章

        一、背景 & 目標(biāo)

        為了提供針對征程 6 系列芯片專門設(shè)計的高效 backbone,我們充分利用了征程 6 芯片的硬件特性,設(shè)計了高效模型 HENet (HybridEfficient Network)。


        二、性能&精度數(shù)據(jù)


        img


        三、HENet_TinyM3.1 總體結(jié)構(gòu)

        HENet_TinyM (Hybrid Efficient Network, Tiny for 征程 6M) 采用了純 CNN 架構(gòu),總體分為四個 stage,每個 stage 會進(jìn)行一次 2 倍下采樣。以下是總體的結(jié)構(gòu)配置:

        # ---------------------- TinyM ----------------------
        depth = [4, 3, 8, 6]
        block_cls = ["GroupDWCB", "GroupDWCB", "AltDWCB", "DWCB"]
        width = [64, 128, 192, 384]
        attention_block_num = [0, 0, 0, 0]
        mlp_ratios, mlp_ratio_attn = [2, 2, 2, 3], 2
        act_layer = ["nn.GELU", "nn.GELU", "nn.GELU", "nn.GELU"]
        use_layer_scale = [True, True, True, True]
        final_expand_channel, feature_mix_channel = 0, 1024
        down_cls = ["S2DDown", "S2DDown", "S2DDown", "None"]

        參數(shù)含義:

        depth:每個 stage 包含的 block 數(shù)量

        block_cls:每個 stage 使用的基礎(chǔ) block 類型

        width:每個 stage 中 block 的輸出 channel 數(shù)

        attention_block_num:每個 stage 中的 attention_block 數(shù)量,將用在 stage 的尾部(TinyM 中沒有用到)

        act_layer:每個 stage 使用的激活函數(shù)

        use_layer_scale:是否對 residual 分支進(jìn)行可學(xué)習(xí)的縮放

        final_expand_channel:在網(wǎng)絡(luò)尾部的 pooling 之前進(jìn)行 channel 擴(kuò)增的數(shù)量,0 代表不使用擴(kuò)增

        feature_mix_channel :在分類 head 之前進(jìn)行 channel 擴(kuò)增的數(shù)量

        down_cls:每個 stage 對應(yīng)的下采樣類型


        3.2 基礎(chǔ) block 結(jié)構(gòu)


        3.2.1 DWCB

        img

        DWCB (DWConvBlock) 是 HENet 中主要使用的一個基礎(chǔ) block,它在主分支上使用一個 depthwise 卷積進(jìn)行空間維度的信息融合(k=3x3),然后使用兩個連續(xù)的 pointwise 卷積進(jìn)行 channel 維度的信息融合,這種結(jié)構(gòu)一定程度上借鑒了 transformer 中的 attention + mlp 的架構(gòu),同時將 latency 控制在一個較輕量級的程度。在 residual 分支上,DWCB 使用了一層可學(xué)習(xí)的 layer_scale,然后將兩個分支的輸出做 elementwise_add 然后輸出。


        3.2.2 GroupDWCB

        img

        GroupDWCB 是基于 DWCB 的一個輕量化改進(jìn), 相比 DWCB,GroupDWCB 將主分支的第一個 pointwise 卷積改為了 pointwise group 卷積,以此來達(dá)到提速的目的。我們在實驗中觀察到,當(dāng)滿足 ① channel 數(shù)量不太小 ② 較淺的位層 兩個條件時,GroupDWCB 可以達(dá)到精度無損,同時提速的效果,推測可能是 low_level feature 的性質(zhì)決定的。在 TinyM 中,我們在第二個 stage 使用 GroupDWCB 來構(gòu)建(g=2)。


        3.2.3 AltDWCB

        img

        AltDWCB 是基于 DWCB 的一個變種,相比 DWCB,AltDWCB 將主分支的 depthwise 卷積的 kernel 改為了(1,5)或者(5,1),根據(jù) block 所在層次位置交替使用。在我們的實驗中,使用 AltDWCB 構(gòu)建第三個 stage 將帶來一定的定能提升。我們推薦在層數(shù)較多的 stage 嘗試交替使用 AltDWCB。


        3.2.4 S2DDown

        img

        S2DDown (Space2Depth Downsample) 使用一個 space to depth 操作進(jìn)行降采樣,以 stride = 2 為例,降采樣后,feature 的空間維度將變?yōu)樵瓉淼?1/2,channel 維度將變?yōu)樵瓉淼?4 倍。對應(yīng)的代碼實現(xiàn)為:

        N, C, H, W = x.size()  # self.bs = 2
        x = x.view(N, C, H // self.bs, self.bs, W // self.bs, self.bs)  # (N, C, H//bs, bs, W//bs, bs)
        x = x.permute(0, 3, 5, 1, 2, 4).reshape(N, C * (self.bs ** 2), H // self.bs, W // self.bs)  # (N, C*bs^2, H//bs, W//bs)

        地平線征程 6 系列芯片對于 tensor layout 相關(guān)操作的高效支持,這一降采樣操作得以以較快的速度完成。

        四、HENet_TinyE

        HENet_TinyE 結(jié)構(gòu)與 TinyM 類似,以下是總體的結(jié)構(gòu)配置:

        # ---------------------- TinyE ----------------------
        depth = [3, 3, 8, 6]
        block_cls = ["DWCB", "GroupDWCB", "AltDWCB", "DWCB"]
        width = [48, 96, 192, 384]
        attention_block_num = [0, 0, 0, 0]
        mlp_ratios, mlp_ratio_attn = [2, 2, 2, 3], 2
        act_layer = ["nn.GELU", "nn.GELU", "nn.GELU", "nn.GELU"]
        use_layer_scale = [True, True, True, True]
        final_expand_channel, feature_mix_channel = 0, 1024
        down_cls = ["S2DDown", "S2DDown", "S2DDown", "None"]


        五、使用建議5.1 總體結(jié)構(gòu)使用建議

          1.針對輸入輸出相近的場景,或者作為主 backbone 使用的場景,我們推薦直接使用 TinyM / TinyE 原生結(jié)構(gòu)。針對其他場景,我們建議參考 TinyM 的基礎(chǔ) block 結(jié)構(gòu),靈活構(gòu)建模型。

          2.對于感知模型中的多 camera backbone,我們推薦針對不同類型的 camera 使用不同量級的 backbone,比如對于 front/rear camera,推薦使用較強(qiáng)的結(jié)構(gòu),對于 side camera,推薦使用較輕量的結(jié)構(gòu)

        5.2 基礎(chǔ) block 使用建議


        *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 彩票| 个旧市| 深圳市| 荆门市| 汝阳县| 梅州市| 徐汇区| 磴口县| 南岸区| 元朗区| 开原市| 定襄县| 武汉市| 全州县| 射洪县| 天峻县| 城步| 辽源市| 万安县| 镇江市| 阜平县| 临夏县| 旺苍县| 桦南县| 容城县| 乌苏市| 开封县| 通道| 雷州市| 佳木斯市| 玉屏| 津市市| 莎车县| 赣州市| 华亭县| 奈曼旗| 泰州市| 常熟市| 尉氏县| 奉新县| 黄山市|