<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          TorchVision 的 MobileNetV3 實現(xiàn)你需要知道的一切

          共 6607字,需瀏覽 14分鐘

           ·

          2021-06-21 14:51

          在 TorchVision v0.9 中,我們發(fā)布了一系列適用于移動設備新模型,可用于分類、對象檢測和語義分割。在本文中,我們將深入研究模型的代碼,分享重要的實現(xiàn)細節(jié),解釋我們?nèi)绾闻渲煤陀柧毸鼈儯娬{(diào)我們在調(diào)整過程中所做的重要權(quán)衡。我們的目標是披露通常在原始論文和模型存儲庫中未記錄的技術(shù)細節(jié)。

          網(wǎng)絡架構(gòu)

          MobileNetV3 架構(gòu)的實現(xiàn)原始論文密切相關(guān)。它是可定制的,并為構(gòu)建分類、對象檢測和語義分割主干提供不同的配置。它被設計為遵循與 MobileNetV2 類似的結(jié)構(gòu),并且兩者共享共同的構(gòu)建塊

          現(xiàn)成的,我們提供了論文中描述的兩種變體:LargeSmall。兩者都是使用相同的代碼構(gòu)建的,唯一的區(qū)別在于它們的配置描述了塊的數(shù)量、大小、激活函數(shù)等。

          配置參數(shù)

          盡管可以編寫自定義 InvertedResidual 設置并將其直接傳遞給 MobileNetV3 類,但對于大多數(shù)應用程序,我們可以通過將參數(shù)傳遞給模型構(gòu)建方法來調(diào)整現(xiàn)有配置。一些關(guān)鍵的配置參數(shù)如下:

          • width_mult 參數(shù)是影響模型通道數(shù)的乘數(shù)。默認值為 1,通過增加或減少它可以改變所有卷積的過濾器數(shù)量,包括第一層和最后一層的過濾器。該實現(xiàn)確保過濾器的數(shù)量始終是8倍數(shù)這是一個硬件優(yōu)化技巧,可以更快地向量化操作。

          • reduced_tail 參數(shù)將網(wǎng)絡最后一個塊上的通道數(shù)減半。這個版本被一些對象檢測和語義分割模型使用。這是一種速度優(yōu)化,在MobileNetV3 論文中有所描述,據(jù)報道可將延遲減少 15%,而不會對準確性產(chǎn)生顯著的負面影響。

          • dilated 參數(shù)影響模型的最后 3 個InvertedResidual 塊,并將它們的正常深度卷積轉(zhuǎn)換為 Atrous Convolutions。這用于控制這些塊的輸出步幅,并對語義分割模型的準確性產(chǎn)生顯著的積極影響。

          實施細則

          下面我們提供有關(guān)該架構(gòu)一些值得注意的實現(xiàn)細節(jié)的附加信息。MobileNetV3類是負責建網(wǎng)出提供配置。以下是該類的一些實現(xiàn)細節(jié):

          • 最后一個卷積塊將最后一個 InvertedResidual 塊的輸出擴展了6 倍。該實現(xiàn)與論文中描述的 Large 和 Small 配置一致,可以適應 multiplier 參數(shù)的不同值。

          • 與 MobileNetV2 等其他模型類似,在分類器的最后一個線性層之前放置了一個 dropout 層。

          InvertedResidual類是網(wǎng)絡的主要組成部分。以下是該塊的一些值得注意的實現(xiàn)細節(jié)以及來自論文圖 4 的可視化:

          • 如果輸入通道和擴展通道相同,則沒有擴展步驟。這發(fā)生在網(wǎng)絡的第一個卷積塊上。

          • 即使擴展通道與輸出通道相同,也始終存在投影步驟。

          • depthwise 塊的激活方法放置Squeeze-and-Excite 層之前,因為這略微提高了準確性。


          分類

          在本節(jié)中,我們提供了預訓練模型的基準以及有關(guān)如何配置、訓練和量化它們的詳細信息。

          基準

          以下是初始化預訓練模型的方法:

          large = torchvision.models.mobilenet_v3_large(pretrained=True, width_mult=1.0,  reduced_tail=False, dilated=False)
          small = torchvision.models.mobilenet_v3_small(pretrained=True)
          quantized = torchvision.models.quantization.mobilenet_v3_large(pretrained=True)

          下面我們有新型號和選定的舊型號之間的詳細基準。正如我們所看到的,MobileNetV3-Large 是 ResNet50 的可行替代品,適用于愿意犧牲一點準確性以獲得大約 6 倍加速的用戶:

          模型帳戶@1加速度@5CPU 推斷(秒)# 參數(shù) (M)
          MobileNetV3-Large74.04291.3400.04115.48
          MobileNetV3-小67.66887.4020.01652.54
          量化的 MobileNetV3-Large73.00490.8580.01622.96
          移動網(wǎng)絡V271.88090.2900.06083.50
          ResNet5076.15092.8700.254525.56
          ResNet1869.76089.0800.103211.69

          請注意,推理時間是在 CPU 上測量的。它們不是絕對的基準,但它們允許模型之間的相對比較。

          培訓流程

          所有預訓練模型的寬度乘數(shù)都配置為 1,具有完整的尾部,未膨脹,并安裝在 ImageNet 上。Large 和 Small 變體都使用相同的超參數(shù)和腳本進行訓練,這些超參數(shù)和腳本可以在我們的參考文件夾中找到下面我們提供有關(guān)培訓過程中最顯著方面的詳細信息。

          實現(xiàn)快速穩(wěn)定的訓練

          正確配置 RMSProp對于實現(xiàn)具有數(shù)值穩(wěn)定性的快速訓練至關(guān)重要。該論文的作者在他們的實驗和運行中使用了 TensorFlow,他們報告說與默認值相比使用了相當高 rmsprop_epsilon的值。通常,此超參數(shù)采用較小的值,因為它用于避免零分母,但在此特定模型中,選擇正確的值對于避免損失中的數(shù)值不穩(wěn)定性似乎很重要。

          另一個重要的細節(jié)是,盡管 PyTorch 和 TensorFlow 的 RMSProp 實現(xiàn)的行為通常相似,但在我們的設置中最顯著的是 epsilon 超參數(shù)的處理方式存在一些差異。更具體地說,PyTorch 將 epsilon 添加到平方根計算之外,而 TensorFlow將其添加到 內(nèi)。這個實現(xiàn)細節(jié)的結(jié)果是,在移植論文的超參數(shù)時需要調(diào)整epsilon值。可以使用公式進行合理的近似PyTorch_eps = sqrt(TF_eps)。

          通過調(diào)整超參數(shù)和改進我們的訓練配方來提高我們的準確性

          配置優(yōu)化器實現(xiàn)快速穩(wěn)定訓練后,我們轉(zhuǎn)而優(yōu)化模型的準確率。有一些技術(shù)可以幫助我們實現(xiàn)這一目標。首先,為了避免過度擬合,我們使用 AutoAugment 算法擴充了數(shù)據(jù),然后是 RandomErasing。此外,我們使用交叉驗證調(diào)整了權(quán)重衰減等參數(shù)。我們還發(fā)現(xiàn)在訓練結(jié)束后在不同時期檢查點之間執(zhí)行權(quán)重平均是有益的。最后,雖然未在我們發(fā)布的訓練配方中使用,但我們發(fā)現(xiàn)使用標簽平滑、隨機深度和 LR 噪聲注入將整體準確度提高了1.5 點以上。

          圖表和表格描述了用于提高 MobileNetV3 Large 變體準確性的最重要迭代的簡化摘要。請注意,訓練模型時完成的實際迭代次數(shù)要大得多,并且準確性的進步并不總是單調(diào)增加。另請注意,圖表的 Y 軸從 70% 開始,而不是從 0% 開始,以使迭代之間的差異更加明顯:



          迭代帳戶@1加速度@5
          使用“MobileNetV2 風格”超參數(shù)的基線71.54290.068
          + RMSProp 與默認 eps70.68489.38
          + RMSProp 調(diào)整后的 eps 和 LR 方案71.76490.178
          + 數(shù)據(jù)增強和調(diào)整超參數(shù)73.8691.292
          + 檢查點平均74.02891.382
          + 標簽平滑和隨機深度和 LR 噪聲75.53692.368

          請注意,一旦我們達到可接受的精度,我們就會在之前未用于訓練或超參數(shù)調(diào)整的保持測試數(shù)據(jù)集上驗證模型性能。此過程可幫助我們檢測過擬合,并且始終在所有預訓練模型發(fā)布之前執(zhí)行。

          量化

          我們目前為MobileNetV3-Large 變體的 QNNPACK 后端提供量化權(quán)重,可提供 2.5 倍的加速。為了量化模型,使用了量化感知訓練 (QAT)。用于訓練模型的超參數(shù)和腳本可以在我們的參考文件夾中找到。

          請注意,QAT 允許我們對量化的影響進行建模并調(diào)整權(quán)重,以便我們可以提高模型的準確性。與簡單的訓練后量化相比,這意味著準確度提高了 1.8 個點:

          量化狀態(tài)帳戶@1加速度@5
          非量化74.04291.340
          量化意識訓練73.00490.858
          訓練后量化71.16089.834

          物體檢測

          在本節(jié)中,我們將首先提供已發(fā)布模型的基準,然后討論如何在特征金字塔網(wǎng)絡中使用 MobileNetV3-Large 主干和 FasterRCNN 檢測器來執(zhí)行對象檢測。我們還將解釋網(wǎng)絡是如何訓練和調(diào)整的,以及我們必須做出的任何權(quán)衡。我們不會詳細介紹它如何與SSDlite一起使用,因為這將在以后的文章中討論。

          基準

          以下是模型的初始化方式:

          high_res = torchvision.models.detection.fasterrcnn_mobilenet_v3_large_fpn(pretrained=True) 
          low_res = torchvision.models.detection.fasterrcnn_mobilenet_v3_large_320_fpn(pretrained=True)

          以下是新型號和選定的舊型號之間的一些基準。正如我們所看到的,對于那些愿意犧牲少量精度點以獲得 5 倍加速的用戶來說,帶有 MobileNetV3-Large FPN 主干的高分辨率 Faster R-CNN 似乎是等效 ResNet50 模型的可行替代品:

          模型地圖CPU 推斷(秒)# 參數(shù) (M)
          Faster R-CNN MobileNetV3-Large FPN(高分辨率)32.80.840919.39
          Faster R-CNN MobileNetV3-Large 320 FPN(低分辨率)22.80.167919.39
          更快的 R-CNN ResNet-50 FPN37.04.151441.76
          RetinaNet ResNet-50 FPN36.44.882534.01

          實施細則

          檢測器使用 FPN 風格的主干,從 MobileNetV3 模型的不同卷積中提取特征。默認情況下,預訓練模型使用第 13 個 InvertedResidual 塊的輸出和池化層之前的卷積的輸出,但實現(xiàn)支持使用更多階段的輸出。

          從網(wǎng)絡中提取的所有特征圖的輸出都被 FPN 塊投影到256 個通道,因為這大大提高了網(wǎng)絡的速度。FPN主干提供的這些特征圖被FasterRCNN檢測器用來提供不同尺度的box和class預測

          訓練和調(diào)優(yōu)過程

          我們目前提供兩種能夠以不同分辨率進行目標檢測的預訓練模型。兩個模型都使用相同的超參數(shù)和腳本在 COCO 數(shù)據(jù)集上進行訓練,這些超參數(shù)和腳本可以在我們的參考文件夾中找到。

          高分辨率檢測用的800-1333px圖像的訓練,而移動友好的低分辨率檢測用的320-640px圖像訓練。我們提供兩組單獨的預訓練權(quán)重的原因是,與將小圖像傳遞給預訓練的高分辨率模型相比,直接在較小的圖像上訓練檢測器會導致精度提高 5 mAP。兩個主干都使用適合 ImageNet 的權(quán)重進行初始化,并且在訓練過程中對其權(quán)重的最后 3 個階段進行了微調(diào)。

          通過調(diào)整 RPN NMS 閾值,可以在移動友好模型上應用額外的速度優(yōu)化通過僅犧牲 0.2 mAP 的精度,我們能夠?qū)⒛P偷?CPU 速度提高大約 45%。優(yōu)化細節(jié)見下圖:

          調(diào)整狀態(tài)地圖CPU 推斷(秒)
          23.00.2904
          22.80.1679

          下面我們提供了一些可視化 Faster R-CNN MobileNetV3-Large FPN 模型預測的示例:



          語義分割

          在本節(jié)中,我們將首先提供已發(fā)布的預訓練模型的一些基準。然后我們將討論如何將 MobileNetV3-Large 主干與LR- ASPP、DeepLabV3FCN等分割頭結(jié)合起來進行語義分割。我們還將解釋網(wǎng)絡是如何訓練的,并為速度關(guān)鍵應用提出一些可選的優(yōu)化技術(shù)。

          基準

          這是初始化預訓練模型的方法:

          lraspp = torchvision.models.segmentation.lraspp_mobilenet_v3_large(pretrained=True) 
          deeplabv3 = torchvision.models.segmentation.deeplabv3_mobilenet_v3_large(pretrained=True)

          以下是新模型和選定現(xiàn)有模型之間的詳細基準。正如我們所看到的,對于大多數(shù)應用程序,帶有 MobileNetV3-Large 主干網(wǎng)的 DeepLabV3 是 FCN 和 ResNet50 的可行替代品,因為它以 8.5 倍的速度實現(xiàn)了類似的精度。我們還觀察到 LR-ASPP 網(wǎng)絡在所有指標中取代了等效的 FCN:

          模型米歐全局像素加速CPU 推斷(秒)# 參數(shù) (M)
          LR-ASPP MobileNetV3-大57.991.20.32783.22
          DeepLabV3 MobileNetV3-Large60.391.20.586911.03
          FCN MobileNetV3-Large(未發(fā)布)57.890.90.37025.05
          DeepLabV3 ResNet5066.492.46.353139.64
          FCN ResNet5060.591.45.014632.96

          實施細則

          在本節(jié)中,我們將討論經(jīng)過測試的分段頭的重要實現(xiàn)細節(jié)。請注意,本節(jié)中描述的所有模型都使用擴張的 MobileNetV3-Large 主干。

          LR-ASPP

          LR-ASPP 是 MobileNetV3 論文的作者提出的 Reduced Atrous Spatial Pyramid Pooling 模型的 Lite 變體。與 TorchVision 中的其他分割模型不同,它不使用輔助損失。相反,它使用輸出步幅分別為 8 和 16 的低級和高級特征。

          與使用具有可變步幅的 49x49 AveragePooling 層的論文不同,我們的實現(xiàn)使用一個AdaptiveAvgPool2d層來處理全局特征。這是因為該論文的作者為 Cityscapes 數(shù)據(jù)集量身定制了頭部,而我們的重點是提供可以在多個數(shù)據(jù)集上工作的通用實現(xiàn)。最后,我們的實現(xiàn)在返回輸出之前總是有一個雙線性插值,以確保輸入和輸出圖像的大小完全匹配。

          DeepLabV3 & FCN

          MobileNetV3 與 DeepLabV3 和 FCN 的組合緊跟其他模型的組合,并且這些方法的階段估計與 LR-ASPP 相同。唯一顯著的區(qū)別是,我們沒有使用高級和低級特征,而是將正常損失附加到輸出步長為 16 的特征圖上,并在輸出步長為 8 的特征圖上附加一個輔助損失。

          最后我們應該注意到模型的 FCN 版本沒有發(fā)布,因為它在速度和準確性方面都被 LR-ASPP 完全取代。預訓練的權(quán)重仍然可用,可以用最小的變化代碼中使用。

          訓練和調(diào)優(yōu)過程

          我們目前提供兩種能夠進行語義分割的 MobileNetV3 預訓練模型:LR-ASPP 和 DeepLabV3。模型的主干用 ImageNet 權(quán)重初始化并進行端到端訓練。兩種架構(gòu)都使用具有相似超參數(shù)的相同腳本在 COCO 數(shù)據(jù)集上進行訓練。他們的詳細信息可以在我們的參考文件夾中找到。

          通常,在推理過程中,圖像被調(diào)整為 520 像素。一個可選的速度優(yōu)化是通過使用高分辨率預訓練權(quán)重并將推理調(diào)整大小減少到 320 像素來構(gòu)建模型的低分辨率配置。這將把 CPU 執(zhí)行時間提高大約 60%,同時犧牲幾個 mIoU 點。可以在下表中找到此優(yōu)化的詳細數(shù)字:

          低分辨率配置千差萬別速度提升米歐全局像素加速CPU 推斷(秒)
          LR-ASPP MobileNetV3-大-2.165.26%55.890.30.1139
          DeepLabV3 MobileNetV3-Large-3.863.86%56.590.30.2121
          FCN MobileNetV3-Large(未發(fā)布)-3.057.57%54.890.10.1571

          以下是一些可視化 LR-ASPP MobileNetV3-Large 模型預測的示例:




          瀏覽 414
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国家一级A片 | 成人水蜜桃视频 | 国产在线内射视频 | 国产一区二区三区无码 | 毛片网站在线 |