0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AI模型部署邊緣設(shè)備的奇妙之旅:目標(biāo)檢測(cè)模型

福州市凌睿智捷電子有限公司 ? 2024-12-19 14:12 ? 次閱讀

1簡(jiǎn)介

人工智能圖像識(shí)別是人工智能領(lǐng)域的一個(gè)重要分支,它涉及計(jì)算機(jī)視覺(jué)深度學(xué)習(xí)、機(jī)器學(xué)習(xí)等多個(gè)領(lǐng)域的知識(shí)和技術(shù)。圖像識(shí)別主要是處理具有一定復(fù)雜性的信息。計(jì)算機(jī)采用與人類類似的圖像識(shí)別原理,即對(duì)圖像的重要特征進(jìn)行分類和提取,并有效排除無(wú)用的多余特征,進(jìn)而實(shí)現(xiàn)圖像識(shí)別。一般而言,圖像識(shí)別有四大類任務(wù):(1)分類-Classification:解決“是什么?”的問(wèn)題,即給定一張圖片或一段視頻判斷里面包含什么類別的目標(biāo)。(2)定位-Location:解決“在哪里?”的問(wèn)題,即定位出這個(gè)目標(biāo)的的位置。(3)檢測(cè)-Detection:解決“在哪里?是什么?”的問(wèn)題,即定位出這個(gè)目標(biāo)的位置并且知道目標(biāo)物是什么。(4)分割-Segmentation:分為實(shí)例的分割(Instance-level)和場(chǎng)景分割(Scene-level),解決“每一個(gè)像素屬于哪個(gè)目標(biāo)物或場(chǎng)景”的問(wèn)題。

我們之前已經(jīng)介紹了如何使用分類任務(wù)進(jìn)行手寫數(shù)字的分類。相信大家腦海中可能會(huì)產(chǎn)生如下疑問(wèn):

數(shù)據(jù)依賴性強(qiáng):分類模型的表現(xiàn)通常依賴于大量的標(biāo)注數(shù)據(jù)進(jìn)行訓(xùn)練。獲取高質(zhì)量、大規(guī)模的數(shù)據(jù)集既耗時(shí)又昂貴。

泛化能力有限:模型可能在訓(xùn)練數(shù)據(jù)上表現(xiàn)良好,但在遇到未曾見(jiàn)過(guò)的數(shù)據(jù)(例如不同環(huán)境、光照條件、角度等)時(shí)性能可能會(huì)下降。

對(duì)異常值敏感:如果訓(xùn)練集中包含異常值或者噪聲數(shù)據(jù),這可能導(dǎo)致模型學(xué)習(xí)到不正確的模式,從而影響其準(zhǔn)確性。

類別不平衡問(wèn)題:當(dāng)某些類別的樣本數(shù)遠(yuǎn)多于其他類別時(shí),分類器可能會(huì)偏向多數(shù)類別,導(dǎo)致少數(shù)類別的預(yù)測(cè)精度較低。

過(guò)擬合風(fēng)險(xiǎn):復(fù)雜的模型容易在訓(xùn)練數(shù)據(jù)上過(guò)擬合,即學(xué)到了訓(xùn)練數(shù)據(jù)中的特定特征而不是一般化的規(guī)律,從而降低了模型在新數(shù)據(jù)上的泛化能力。

對(duì)抗攻擊易感性:圖像分類模型容易受到精心設(shè)計(jì)的對(duì)抗樣本的影響,這些樣本在人類看來(lái)幾乎與原始圖像相同,但卻會(huì)導(dǎo)致模型做出錯(cuò)誤的分類。

背景干擾:在自然場(chǎng)景中,目標(biāo)物體周圍復(fù)雜的背景信息可能會(huì)干擾分類結(jié)果,使得分類器難以專注于真正重要的區(qū)域。

在深入探討了圖像分類任務(wù)及其面臨的挑戰(zhàn)之后,我們現(xiàn)在將目光轉(zhuǎn)向一個(gè)更為復(fù)雜的計(jì)算機(jī)視覺(jué)問(wèn)題——目標(biāo)檢測(cè)。

如果說(shuō)分類任務(wù)是識(shí)別圖像中主體內(nèi)容的是什么?的問(wèn)題,那么目標(biāo)檢測(cè)則是進(jìn)一步解答在哪里?

目標(biāo)檢測(cè)不僅需要識(shí)別出圖像或視頻流中存在哪些類型的物體,還需要精確定位每個(gè)物體的位置。這種能力對(duì)于許多實(shí)際應(yīng)用場(chǎng)景至關(guān)重要,比如:

自動(dòng)駕駛汽車需要準(zhǔn)確地識(shí)別并定位行人、其他車輛和交通標(biāo)志;

安防監(jiān)控系統(tǒng)依賴于實(shí)時(shí)檢測(cè)異?;顒?dòng)的具體位置;

而在零售環(huán)境中,智能貨架可以通過(guò)檢測(cè)商品來(lái)管理庫(kù)存;

隨著物聯(lián)網(wǎng)IoT)的發(fā)展以及邊緣計(jì)算能力的增強(qiáng),越來(lái)越多的目標(biāo)檢測(cè)應(yīng)用開始直接在靠近數(shù)據(jù)源的邊緣設(shè)備上運(yùn)行。這不僅減少了數(shù)據(jù)傳輸延遲,保護(hù)了用戶隱私,同時(shí)也減輕了云端服務(wù)器的壓力。然而,在邊緣端部署高效且準(zhǔn)確的目標(biāo)檢測(cè)模型并非易事,它涉及到從選擇合適的算法架構(gòu)到針對(duì)特定硬件平臺(tái)進(jìn)行優(yōu)化等一系列復(fù)雜的工作。

接下來(lái),我們將詳細(xì)介紹如何在資源受限的邊緣設(shè)備上成功部署目標(biāo)檢測(cè)模型,探索其背后的原理和技術(shù),并討論解決該領(lǐng)域內(nèi)常見(jiàn)挑戰(zhàn)的方法。

2 目標(biāo)檢測(cè)模型介紹

在目標(biāo)檢測(cè)的任務(wù)中,有著許許多多的模型,如 Picodet、Faster R-CNN、YOLO、SSD等,它們都實(shí)現(xiàn)了檢測(cè)目標(biāo)并定位其位置的功能。我們主要介紹的是百度的Picodet模型,它是一種基于深度卷積網(wǎng)絡(luò)(DNN)的輕量級(jí)目標(biāo)檢測(cè)模型,具有非常高的檢測(cè)精度,可以在低算力設(shè)備進(jìn)行實(shí)時(shí)的端到端推理檢測(cè)。

2.1 Picodet模型介紹

目標(biāo)檢測(cè)在各個(gè)領(lǐng)域都有廣泛的應(yīng)用,然而,在移動(dòng)端工業(yè)領(lǐng)域的實(shí)際應(yīng)用中,對(duì)目標(biāo)檢測(cè)算法提出了更為苛刻的要求:需要實(shí)現(xiàn)高速度、高精度、小體積、易部署等特性。為應(yīng)對(duì)這一挑戰(zhàn),百度于2021年末發(fā)布了一篇關(guān)于移動(dòng)端性能卓越的實(shí)時(shí)目標(biāo)檢測(cè)網(wǎng)絡(luò) PP-PicoDet。PP-PicoDet 具有以下架構(gòu)優(yōu)點(diǎn):

網(wǎng)絡(luò)架構(gòu)優(yōu)化: PP-PicoDet 基于 ShuffleNetV2 進(jìn)行改進(jìn),引入了 SE 模塊和 Ghost 模塊,同時(shí)采用神經(jīng)網(wǎng)絡(luò)搜索(NAS)技術(shù),最終形成了 ESNet(Enhanced ShuffleNet)作為骨干網(wǎng)絡(luò),以在移動(dòng)端保證高效性能。

采樣策略和標(biāo)簽分配: 使用 SimOTA 采樣策略,動(dòng)態(tài)變換標(biāo)簽分配方式,并采用VFL+GloU替代CELoss+IoU作為損失函數(shù),從而提高模型的訓(xùn)練效果。

激活函數(shù)和學(xué)習(xí)率策略: 將 H-Swish 替代 Relu 作為激活函數(shù),采用 cosine 學(xué)習(xí)率衰減策略,以提高模型的學(xué)習(xí)能力和泛化性能。

硬件友好性: 在驍龍865等硬件平臺(tái)上表現(xiàn)出色,并支持快速導(dǎo)出為 ONNX 格式,使得模型在硬件部署時(shí)更加友好和高效。

在此基礎(chǔ)上,2022年初,PaddleDetction 再次發(fā)布了增強(qiáng)版本的 PP-PicoDet,在以下方面做出了改進(jìn):

引入 TAL 及 ETA Head,優(yōu)化 PAN 等結(jié)構(gòu),精度提升2個(gè)點(diǎn)以上

優(yōu)化 CPU 端預(yù)測(cè)速度,同時(shí)訓(xùn)練速度提升一倍

導(dǎo)出模型將后處理包含在網(wǎng)絡(luò)中,預(yù)測(cè)直接輸出 box 結(jié)果,無(wú)需二次開發(fā),遷移成本更低,端到端預(yù)測(cè)速度提升10%-20%。

32dbd9ac-bdd0-11ef-8084-92fbcf53809c.png

2.2 模型結(jié)構(gòu)

PP-PicoDet 網(wǎng)絡(luò)結(jié)構(gòu)圖如下所示:

Backbone:基于 shuffleNetV2 改進(jìn),ESNet,輸出 C3,C4,C5 特征圖進(jìn)入 neck;

Neck:CSP-PAN,接受 C3,C4,C5輸入,輸出 P3,P4,P5,P6;

3301cdec-bdd0-11ef-8084-92fbcf53809c.png

2.2.1 BackBone

基于大量實(shí)驗(yàn),發(fā)現(xiàn) ShuffleNetV2 比移動(dòng)設(shè)備上的其他網(wǎng)絡(luò)更穩(wěn)健。為了進(jìn)一步提高 ShuffleNet V2 的性能,遵循 PP-LCNet 的一些方法來(lái)增強(qiáng)網(wǎng)絡(luò)結(jié)構(gòu)并構(gòu)建一個(gè)新的骨干網(wǎng),即增強(qiáng)型 ShuffleNet(ESNet)。下圖詳細(xì)描述了 ESNet 的 ES 塊。SE 模塊在加權(quán)網(wǎng)絡(luò)通道以獲得更好的功能方面做得很好。因此,將 SE 模塊添加到所有塊中。與MobileNetV3 一樣,SE 模塊兩層的激活函數(shù)分別是 ReLU 和 H-Sigmoid。信道混洗提供了 ShuffleNetV2 信道的交換信息,但它會(huì)導(dǎo)致融合特征的丟失。為了解決這個(gè)問(wèn)題,當(dāng)步幅為2時(shí),添加了深度卷積和逐點(diǎn)卷積來(lái)整合不同的信道信息(圖 a)。GhostNet 的作者提出了一種新的 Ghost 模塊,該模塊可以用更少的參數(shù)生成更多的特征圖,以提高網(wǎng)絡(luò)的學(xué)習(xí)能力。在步幅設(shè)置為1的塊中添加 Ghost 模塊,以進(jìn)一步提高 ESNet 的性能(圖b)。

33311480-bdd0-11ef-8084-92fbcf53809c.png

2.2.2 Neural Architecture Search(NAS)

Picodet 提出首個(gè)針對(duì)目標(biāo)檢測(cè)器的 one-shot 搜索的工作。目標(biāo)檢測(cè)模型搭配在分類上高性能的主干網(wǎng)絡(luò),可能會(huì)因?yàn)椴煌蝿?wù)間的差異而性能下降。Picodet 沒(méi)有去搜索一個(gè)較佳的分類器,而是在檢測(cè)數(shù)據(jù)集上訓(xùn)練和搜索檢測(cè)的超網(wǎng)絡(luò),從而介紹了大量計(jì)算并且達(dá)到檢測(cè)而不是分類的最優(yōu)。此框架僅需兩步:(1)在檢測(cè)數(shù)據(jù)集上訓(xùn)練 one-shot 超網(wǎng),(2)使用 EA(evolutionary algorithm,進(jìn)化算法)算法對(duì)訓(xùn)練好的超網(wǎng)絡(luò)進(jìn)行架構(gòu)搜索。

2.2.3 CSP-PAN and Detector Head

使用PAN結(jié)構(gòu)來(lái)獲得多層特征圖以及 CSP 結(jié)構(gòu)來(lái)進(jìn)行相鄰特征圖間的特征連接和融合。在原始的 CSP-PAN 中,每個(gè)輸出特征圖的通道數(shù)與來(lái)自主干網(wǎng)絡(luò)的輸入特征圖保持相同。對(duì)于移動(dòng)設(shè)備來(lái)說(shuō),這樣大通道數(shù)的結(jié)構(gòu)具有昂貴的計(jì)算成本。為了解決這個(gè)問(wèn)題,本文用1 × 1 卷積使所有特征圖中的通道數(shù)與最小的通道數(shù)相等,(也就是都設(shè)為96)。通過(guò) CSP 結(jié)構(gòu)實(shí)現(xiàn) top-down 和 bottom-up 的特征融合??s小的特征使得計(jì)算成本更低且不損失準(zhǔn)確性。此外,在原有 CSP-PAN 的頂部加入了一個(gè)特征圖尺度分支來(lái)檢測(cè)更多物體。與此同時(shí),所有除了1 × 1 卷積外的卷積層都使用深度可分離卷積(Depthwise Separable Convolution)。深度可分離卷積使用5 × 5 卷積擴(kuò)大感受野。這種結(jié)構(gòu)在使用很少參數(shù)的情況下給精度帶來(lái)了大幅度提升。模塊的具體結(jié)構(gòu)如下圖所示。

334f72f4-bdd0-11ef-8084-92fbcf53809c.png

在檢測(cè)頭中,使用 Depthwise Separable Convolution和5 × 5 卷積來(lái)擴(kuò)大感受野。深度可分離卷積的數(shù)量可以被設(shè)置為2、4或更多。Neck 和 head 部分都有四個(gè)尺度分支。其中 head 部分的通道數(shù)與 neck 部分保持一致,并將分類和回歸分支耦合在一起,在 Picodet 中耦合預(yù)測(cè)頭在沒(méi)有降低通道數(shù)時(shí)表現(xiàn)更好。

3370a3de-bdd0-11ef-8084-92fbcf53809c.png

2.3 神經(jīng)網(wǎng)絡(luò)的相關(guān)知識(shí)點(diǎn)

2.3.1 卷積的基本概念

卷積是一種數(shù)學(xué)運(yùn)算,在計(jì)算機(jī)視覺(jué)中被廣泛應(yīng)用于特征提取。它通過(guò)一個(gè)小型矩陣(稱為卷積核或濾波器)與輸入圖像的局部區(qū)域進(jìn)行相乘并求和,生成新的特征圖(Feature Map)。這個(gè)過(guò)程可以看作是用卷積核掃描整個(gè)輸入圖像,以捕捉圖像中的模式,如邊緣、紋理等。

卷積操作有幾個(gè)關(guān)鍵參數(shù):

卷積核(Kernel):也被叫做濾波器(filter),假設(shè)卷積核的高和寬分別為?和,則將稱為?×卷積,比如3×3卷積,就是指卷積核的高為3, 寬為3。卷積核中數(shù)值為對(duì)圖像中與卷積核同樣大小的子塊像素點(diǎn)進(jìn)行卷積計(jì)算時(shí)所采用的權(quán)重。

填充(Padding): 填充(Padding)是在卷積神經(jīng)網(wǎng)絡(luò)(CNN)中為輸入張量的邊緣添加額外的像素,以控制輸出特征圖的大小并保持輸入圖像的空間尺寸。填充有助于保留輸入圖像邊緣的信息,并在卷積運(yùn)算中避免空間尺寸的過(guò)度縮小。

步長(zhǎng)(Stride): 步長(zhǎng)(Stride)是卷積操作中的一個(gè)參數(shù),決定了卷積核在輸入圖像上滑動(dòng)的步幅。具體來(lái)說(shuō),步長(zhǎng)定義了卷積核每次滑動(dòng)的距離。它控制了卷積運(yùn)算中卷積核在輸入圖像上移動(dòng)的距離,從而影響輸出特征圖的大小。

卷積層輸出特征圖的尺寸計(jì)算:

33904d9c-bdd0-11ef-8084-92fbcf53809c.png其中,H為輸出特征圖的高度和寬度(假設(shè)輸入為正方形圖像),W為輸入圖像的高度和寬度,F(xiàn)為卷積核大小,P為填充,S為步長(zhǎng)。卷積的計(jì)算過(guò)程

33a5cf32-bdd0-11ef-8084-92fbcf53809c.png

2.3.2 逐深度卷積

逐深度卷積(Depthwise convolution,DWConv)與標(biāo)準(zhǔn)卷積的區(qū)別在于,深度卷積的卷積核為單通道模式,需要對(duì)輸入的每一個(gè)通道進(jìn)行卷積,這樣就會(huì)得到和輸入特征圖通道數(shù)一致的輸出特征圖。即有輸入特征圖通道數(shù)=卷積核個(gè)數(shù)=輸出特征圖個(gè)數(shù)。假設(shè)一個(gè)大小為64×64像素、3通道彩色圖片,3個(gè)單通道卷積核分別進(jìn)行卷積計(jì)算,輸出3個(gè)單通道的特征圖。所以,一個(gè)3通道的圖像經(jīng)過(guò)運(yùn)算后生成了3個(gè) Feature map,如下圖所示。其中一個(gè) Filter 只包含一個(gè)大小為3×3的 Kernel,卷積部分的參數(shù)量為:depthwise=3×3×3=27。

33beb70e-bdd0-11ef-8084-92fbcf53809c.png

2.3.3 逐點(diǎn)卷積

逐點(diǎn)卷積(Pointwise Convolution)就是 W/H 維度不變,改變 channel。根據(jù)深度卷積可知,輸入特征圖通道數(shù)=卷積核個(gè)數(shù)=輸出特征圖個(gè)數(shù),這樣會(huì)導(dǎo)致輸出的特征圖個(gè)數(shù)過(guò)少(或者說(shuō)輸出特征圖的通道數(shù)過(guò)少,可看成是輸出特征圖個(gè)數(shù)為1,通道數(shù)為3),從而可能影響信息的有效性。此時(shí),就需要進(jìn)行逐點(diǎn)卷積。逐點(diǎn)卷積(Pointwise Convolution,PWConv)實(shí)質(zhì)上是用1x1的卷積核進(jìn)行升維。在 GoogleNet 中大量使用1x1的卷積核,那里主要是用來(lái)降維。1x1的卷積核主要作用是對(duì)特征圖進(jìn)行升維和降維。舉一個(gè)例子,如下圖所示,從深度卷積得到的3個(gè)單通道特征圖,經(jīng)過(guò)4個(gè)大小為1x1x3卷積核的卷積計(jì)算,輸出4個(gè)特征圖,而輸出特征圖的個(gè)數(shù)取決于 Filter 的個(gè)數(shù)。因此,卷積層的參數(shù)量為:

33e4d8bc-bdd0-11ef-8084-92fbcf53809c.png

2.3.4 深度可分離卷積

深度可分離卷積(Depthwise separable convolution)由逐深度卷積和逐點(diǎn)卷積組成,深度卷積用于提取空間特征,逐點(diǎn)卷積用于提取通道特征。深度可分離卷積在特征維度上分組卷積,對(duì)每個(gè) channel 進(jìn)行獨(dú)立的逐深度卷積(depthwise convolution),并在輸出前使用一個(gè)1x1卷積(pointwise convolution)將所有通道進(jìn)行聚合。

2.3.5 卷積神經(jīng)網(wǎng)絡(luò)的組成

當(dāng)然,可以對(duì)卷積神經(jīng)網(wǎng)絡(luò)(CNN)的組成進(jìn)行更詳細(xì)的介紹。以下是基于上述五個(gè)關(guān)鍵組件的進(jìn)一步擴(kuò)展和說(shuō)明:

2.3.5.1 卷積層(Convolutional Layer)

多通道輸入:在處理彩色圖像時(shí),每個(gè)像素有三個(gè)通道(紅、綠、藍(lán)),即三維輸入數(shù)據(jù)。卷積核也相應(yīng)地是三維的,以匹配輸入數(shù)據(jù)的深度。

多濾波器:通常一個(gè)卷積層包含多個(gè)不同的濾波器,它們共同工作來(lái)捕捉輸入數(shù)據(jù)的不同特征。每一個(gè)濾波器都會(huì)生成一個(gè)稱為“特征圖”或“激活圖”的輸出。

共享權(quán)重:所有位置使用相同的卷積核參數(shù),這不僅減少了模型參數(shù)的數(shù)量,還使得模型能夠?qū)W習(xí)到平移不變的特征。

2.3.5.2 激活層(Activation Layer)

(1)Leaky ReLU

Leaky ReLU(泄漏修正線性單元)是ReLU(修正線性單元)的變種,旨在解決標(biāo)準(zhǔn)ReLU函數(shù)在負(fù)值區(qū)域輸出為零的問(wèn)題,即所謂的“死神經(jīng)元”問(wèn)題。對(duì)于輸入x小于0的情況,Leaky ReLU會(huì)給出一個(gè)小的非零梯度,這有助于訓(xùn)練過(guò)程中的梯度傳播,特別是在網(wǎng)絡(luò)較深時(shí)。公式:

340659f6-bdd0-11ef-8084-92fbcf53809c.png

其中 α 是一個(gè)很小的正數(shù),通常是0.01,用于控制負(fù)區(qū)間的斜率。

341b2aca-bdd0-11ef-8084-92fbcf53809c.png

優(yōu)點(diǎn):

緩解死區(qū)問(wèn)題:與傳統(tǒng)的ReLU不同,Leaky ReLU對(duì)于所有輸入都有非零梯度,這意味著它可以在一定程度上避免神經(jīng)元“死亡”的情況。

加速收斂:由于在所有區(qū)域都有梯度,Leaky ReLU可以加速某些類型模型的訓(xùn)練過(guò)程。

保留稀疏激活:與ReLU類似,Leaky ReLU仍然能夠促進(jìn)稀疏激活,這對(duì)模型的學(xué)習(xí)是有利的。

缺點(diǎn):

性能提升有限:盡管Leaky ReLU解決了ReLU的一些問(wèn)題,但在實(shí)踐中,它的表現(xiàn)并不總是優(yōu)于其他改進(jìn)版本的ReLU函數(shù),如PReLU或ELU。

超參數(shù)選擇: α 的選擇可能需要一些試驗(yàn)和錯(cuò)誤來(lái)找到最適合特定任務(wù)的值。不合適的 可能會(huì)導(dǎo)致不良的訓(xùn)練動(dòng)態(tài)。

總的來(lái)說(shuō),Leaky ReLU是一個(gè)簡(jiǎn)單而有效的激活函數(shù),它可以改善某些情況下傳統(tǒng)ReLU的局限性。然而,在選擇激活函數(shù)時(shí),應(yīng)該根據(jù)具體的應(yīng)用場(chǎng)景和實(shí)驗(yàn)結(jié)果來(lái)決定最合適的選項(xiàng)。

(2)Parametric ReLU

Parametric ReLU(PReLU),即參數(shù)化的修正線性單元,是Leaky ReLU的一種擴(kuò)展。與Leaky ReLU相比,PReLU允許負(fù)輸入的斜率 α 是一個(gè)可學(xué)習(xí)的參數(shù),這意味著它可以在訓(xùn)練過(guò)程中根據(jù)數(shù)據(jù)自動(dòng)調(diào)整。這種靈活性使得PReLU能夠更好地適應(yīng)不同任務(wù)的需求。公式:

342cff34-bdd0-11ef-8084-92fbcf53809c.png

其中 是針對(duì)每個(gè)神經(jīng)元或共享給所有神經(jīng)元的學(xué)習(xí)參數(shù),用于控制負(fù)區(qū)間的斜率。優(yōu)點(diǎn)

自適應(yīng)學(xué)習(xí): α 參數(shù)可以被優(yōu)化算法自動(dòng)調(diào)整,因此PReLU可以更靈活地適應(yīng)不同的數(shù)據(jù)分布。

緩解死區(qū)問(wèn)題:如同Leaky ReLU一樣,PReLU也避免了傳統(tǒng)ReLU中“死神經(jīng)元”的問(wèn)題,因?yàn)閷?duì)于任何輸入都有非零梯度。

可能更好的表現(xiàn):在某些情況下,PReLU可以比標(biāo)準(zhǔn)ReLU和Leaky ReLU提供更好的性能,因?yàn)樗梢愿鶕?jù)具體任務(wù)來(lái)調(diào)整激活函數(shù)的形狀。

保留稀疏激活:類似于其他ReLU變體,PReLU仍然能夠在正輸入?yún)^(qū)域促進(jìn)稀疏激活,這對(duì)模型的學(xué)習(xí)是有利的。

缺點(diǎn)

增加模型復(fù)雜度:由于引入了額外的可學(xué)習(xí)參數(shù) α,這增加了模型的復(fù)雜性和需要優(yōu)化的參數(shù)數(shù)量。

潛在過(guò)擬合風(fēng)險(xiǎn):更多的可學(xué)習(xí)參數(shù)意味著模型有更大的能力去記憶訓(xùn)練數(shù)據(jù),從而可能導(dǎo)致過(guò)擬合,特別是在小規(guī)模數(shù)據(jù)集上。

訓(xùn)練時(shí)間延長(zhǎng):因?yàn)樾枰~外的時(shí)間來(lái)學(xué)習(xí) α 參數(shù),這可能會(huì)導(dǎo)致訓(xùn)練過(guò)程稍微變慢。

3442bc16-bdd0-11ef-8084-92fbcf53809c.png

(3)Softmax

Softmax函數(shù)是一種常用于多分類問(wèn)題中的激活函數(shù),它將一個(gè)含任意實(shí)數(shù)的K維向量。z 轉(zhuǎn)換為另一個(gè)同樣長(zhǎng)度為K的概率分布向量 σ(z),每個(gè)元素都在0和1之間,并且所有元素之和等于1。這使得Softmax非常適合用作分類任務(wù)中最后的輸出層,以生成各個(gè)類別的概率估計(jì)。

345de518-bdd0-11ef-8084-92fbcf53809c.png

優(yōu)點(diǎn)

產(chǎn)生概率分布:Softmax可以將模型的原始輸出轉(zhuǎn)換成一個(gè)合理的概率分布,這對(duì)于解釋性和決策制定非常有用。

支持多分類:與二元分類問(wèn)題不同,Softmax自然地?cái)U(kuò)展到了多分類場(chǎng)景,適用于需要區(qū)分多個(gè)類別的任務(wù)。

計(jì)算簡(jiǎn)單:其形式相對(duì)簡(jiǎn)單,易于實(shí)現(xiàn),并且在現(xiàn)代深度學(xué)習(xí)框架中都有高效的實(shí)現(xiàn)。

結(jié)合交叉熵?fù)p失函數(shù):當(dāng)與交叉熵?fù)p失一起使用時(shí),Softmax能提供一個(gè)平滑、可微分的目標(biāo)函數(shù),有利于梯度下降優(yōu)化過(guò)程。

缺點(diǎn)

梯度消失:對(duì)于遠(yuǎn)離正確答案的預(yù)測(cè),Softmax加上交叉熵?fù)p失可能會(huì)導(dǎo)致非常小的梯度,從而影響訓(xùn)練速度,特別是在深層網(wǎng)絡(luò)中。

對(duì)異常值敏感:由于采用了指數(shù)運(yùn)算,Softmax對(duì)異常大的輸入值非常敏感,這些異常值可能導(dǎo)致不理想的模型性能。

34723d42-bdd0-11ef-8084-92fbcf53809c.png

2.3.5.3 池化層(Pooling Layer)

重疊池化(Overlapping Pooling):池化窗口之間有一定的重疊,能增加一些不變性,同時(shí)不會(huì)顯著增加計(jì)算量。

全局池化(Global Pooling):對(duì)整個(gè)特征圖應(yīng)用池化操作,而不是局部區(qū)域。它可以在一定程度上替代全連接層,并減少過(guò)擬合。

2.3.5.4 批歸一化層(Batch Normalization Layer)

訓(xùn)練與推理:在訓(xùn)練階段,批歸一化使用每一批次的數(shù)據(jù)來(lái)估計(jì)均值和方差;而在推理階段,則使用運(yùn)行時(shí)統(tǒng)計(jì)(通常是移動(dòng)平均)。

γ和β參數(shù):除了標(biāo)準(zhǔn)化外,批歸一化還引入了兩個(gè)可學(xué)習(xí)參數(shù)γ(縮放)和β(偏移),使網(wǎng)絡(luò)能夠在需要時(shí)恢復(fù)原始的激活尺度和位置。

2.3.5.5 全連接層(Fully Connected Layer, FC Layer)

Dropout技術(shù):為了防止過(guò)擬合,在全連接層中經(jīng)常采用dropout方法,隨機(jī)丟棄一部分神經(jīng)元,強(qiáng)迫網(wǎng)絡(luò)學(xué)習(xí)更加魯棒的特征表示。

稀疏連接:作為全連接層的一種替代方案,某些架構(gòu)嘗試使用稀疏連接來(lái)減少參數(shù)數(shù)量并提高效率,比如通過(guò)只連接特定模式下的神經(jīng)元。

動(dòng)態(tài)架構(gòu)調(diào)整:現(xiàn)代的一些研究探索了動(dòng)態(tài)改變網(wǎng)絡(luò)結(jié)構(gòu)的可能性,例如根據(jù)輸入樣本的復(fù)雜度自動(dòng)調(diào)整FC層的大小或配置。

這些組件的組合和優(yōu)化構(gòu)成了卷積神經(jīng)網(wǎng)絡(luò)的核心,并且隨著計(jì)算機(jī)視覺(jué)領(lǐng)域的發(fā)展,新的技術(shù)和理論不斷被提出,以進(jìn)一步提升CNN的性能和泛化能力。例如,殘差網(wǎng)絡(luò)(ResNet)、密集連接網(wǎng)絡(luò)(DenseNet)等創(chuàng)新設(shè)計(jì)都是為了克服深層網(wǎng)絡(luò)訓(xùn)練中的挑戰(zhàn)而提出的。

3 邊緣端設(shè)備部署

在邊緣端設(shè)備部署目標(biāo)檢測(cè)模型,特別是像PP-PicoDet這樣輕量級(jí)且高效的模型,涉及到多個(gè)步驟和技術(shù)考量。

以下是一些關(guān)鍵點(diǎn)和建議,可以幫助你在資源受限的環(huán)境中成功部署這樣的模型:

3.1 準(zhǔn)備工作

在進(jìn)行模型的部署之前,我們首先需要確認(rèn)自己手上的模塊的支持哪些算子、支持什么類型的量化(int4/int8/fp16/混合精度)、內(nèi)存大小等參數(shù),對(duì)于手上的板子有一個(gè)全面的了解。在進(jìn)行部署時(shí),我們常常將訓(xùn)練的模型轉(zhuǎn)化成onnx中間文件,再根據(jù)硬件設(shè)備要求的轉(zhuǎn)化成硬件要求的模型文件。在本次實(shí)驗(yàn)中,我使用的模塊是凌智視覺(jué)模塊(Lockzhiner Vision Module) ,這個(gè)模塊是福州市凌睿智捷電子有限公司聯(lián)合百度飛槳傾力打造的一款高集成度人工智能視覺(jué)模塊,專為邊緣端人工智能和機(jī)器視覺(jué)應(yīng)用而設(shè)計(jì),模塊的參數(shù)如下圖所示。

34892192-bdd0-11ef-8084-92fbcf53809c.png

這個(gè)模塊有著一個(gè)很吸引人的特點(diǎn)與飛槳低代碼開發(fā)工具 PaddleX 完美適配,配合飛槳星河社區(qū) Al Studio, 可以實(shí)現(xiàn)一鍵訓(xùn)練;配合凌智視覺(jué)算法部署庫(kù),用戶可以實(shí)現(xiàn)一鍵部署,減少我們?cè)谀P筒渴饡r(shí)遇到的疑難雜癥。如果遇到問(wèn)題,可以去廠家開源倉(cāng)庫(kù)提交問(wèn)題。凌智視覺(jué)模塊Gitee鏈接

3.2 模型轉(zhuǎn)換

在 百度飛槳的 AiStudio 中,搜索【硬件部署】在凌智視覺(jué)模塊上部署 PaddleDetection 模型如果說(shuō)有自己制作數(shù)據(jù)的話,需要將數(shù)據(jù)上傳,然后在修改全局配置項(xiàng),修改數(shù)據(jù)集地址以及對(duì)應(yīng)的類別數(shù)。

34a490d0-bdd0-11ef-8084-92fbcf53809c.png

按照廠家提供的配置直接進(jìn)行訓(xùn)練轉(zhuǎn)換。

34bdc1f4-bdd0-11ef-8084-92fbcf53809c.png

訓(xùn)練完成后,會(huì)自動(dòng)生成一個(gè)rknn模型文件,

3.3 部署結(jié)果

模型的推理結(jié)果如下圖所示

34e4e89c-bdd0-11ef-8084-92fbcf53809c.png


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    30887

    瀏覽量

    269060
  • 人工智能
    +關(guān)注

    關(guān)注

    1791

    文章

    47274

    瀏覽量

    238462
  • 目標(biāo)檢測(cè)
    +關(guān)注

    關(guān)注

    0

    文章

    209

    瀏覽量

    15608
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    邊緣AI應(yīng)用越來(lái)越普遍,AI模型邊緣端如何部署?

    模型在端側(cè)的部署也成了業(yè)界關(guān)注的焦點(diǎn)。 ? 如何把AI 模型邊緣部署 ? 首先得軟硬件適配
    的頭像 發(fā)表于 07-04 00:11 ?2656次閱讀
    <b class='flag-5'>邊緣</b><b class='flag-5'>AI</b>應(yīng)用越來(lái)越普遍,<b class='flag-5'>AI</b><b class='flag-5'>模型</b>在<b class='flag-5'>邊緣</b>端如何<b class='flag-5'>部署</b>?

    邊緣側(cè)部署模型優(yōu)勢(shì)多!模型量化解決邊緣設(shè)備資源限制問(wèn)題

    電子發(fā)燒友網(wǎng)報(bào)道(文/李彎彎)大模型邊緣部署是將大模型部署邊緣
    的頭像 發(fā)表于 01-05 00:06 ?3554次閱讀

    部署邊緣設(shè)備上的輕量級(jí)模型

    電子發(fā)燒友網(wǎng)報(bào)道(文/李彎彎)邊緣AI算法是一種將人工智能(AI)算法和計(jì)算能力放置在接近數(shù)據(jù)源的終端設(shè)備中的策略。這種算法通常被部署
    的頭像 發(fā)表于 05-11 00:17 ?2607次閱讀

    AI模型部署邊緣設(shè)備奇妙之旅:如何實(shí)現(xiàn)手寫數(shù)字識(shí)別

    處理,而不必傳輸?shù)酵獠糠?wù)器,這有助于更好地保護(hù)用戶隱私和數(shù)據(jù)安全。 然而,邊緣計(jì)算也帶來(lái)了獨(dú)特的挑戰(zhàn),特別是在資源受限的嵌入式系統(tǒng)中部署復(fù)雜的AI模型時(shí)。為了確保神經(jīng)網(wǎng)絡(luò)
    發(fā)表于 12-06 17:20

    AI模型部署邊緣設(shè)備奇妙之旅:如何在邊緣部署OpenCV

    。 接下來(lái)我們通過(guò)幾個(gè)例子來(lái)介紹如何在邊緣設(shè)備使用OpenCV進(jìn)行形狀檢測(cè)。 3.1 矩形檢測(cè) import lockzhiner_vision_module.cv2 as cv2
    發(fā)表于 12-14 09:31

    AI模型部署邊緣設(shè)備奇妙之旅目標(biāo)檢測(cè)模型

    以及邊緣計(jì)算能力的增強(qiáng),越來(lái)越多的目標(biāo)檢測(cè)應(yīng)用開始直接在靠近數(shù)據(jù)源的邊緣設(shè)備上運(yùn)行。這不僅減少了數(shù)據(jù)傳輸延遲,保護(hù)了用戶隱私,同時(shí)也減輕了云
    發(fā)表于 12-19 14:33

    EdgeBoard FZ5 邊緣AI計(jì)算盒及計(jì)算卡

    科技攜手百度,推出系列高性能及高性價(jià)比EdgeBoard 邊緣AI計(jì)算卡/計(jì)算盒,助力AI項(xiàng)目落地。可靈活適配海量的且不斷迭代的AI模型,并
    發(fā)表于 08-31 14:12

    【HarmonyOS HiSpark AI Camera】基于HiSpark AI Camera的夜間目標(biāo)檢測(cè)項(xiàng)目

    不良數(shù)據(jù),經(jīng)過(guò)gpu訓(xùn)練后將訓(xùn)練后的模型部署在Horizon x3開發(fā)板上(Sunrise3芯片),實(shí)現(xiàn)全國(guó)產(chǎn)邊緣目標(biāo)檢測(cè)的demo,同時(shí)可
    發(fā)表于 11-19 20:49

    介紹在STM32cubeIDE上部署AI模型的系列教程

    介紹在STM32cubeIDE上部署AI模型的系列教程,開發(fā)板型號(hào)STM32H747I-disco,值得一看。MCUAI原文鏈接:【嵌入式AI開發(fā)】篇四|
    發(fā)表于 12-14 09:05

    嵌入式邊緣AI應(yīng)用開發(fā)指南

    、針對(duì)性能和精度目標(biāo)對(duì)模型進(jìn)行訓(xùn)練和優(yōu)化,以及學(xué)習(xí)使用在嵌入式邊緣處理器上部署模型的專用工具。從模型
    發(fā)表于 11-03 06:53

    如何在移動(dòng)設(shè)備上訓(xùn)練和部署自定義目標(biāo)檢測(cè)模型

    上,目標(biāo)檢測(cè)模型的訓(xùn)練和部署的過(guò)程: 設(shè)備端 ML 學(xué)習(xí)路徑:關(guān)于如何在移動(dòng)設(shè)備上,訓(xùn)練和
    的頭像 發(fā)表于 08-16 17:09 ?3590次閱讀

    YOLOX目標(biāo)檢測(cè)模型的推理部署

    曠視科技開源了內(nèi)部目標(biāo)檢測(cè)模型-YOLOX,性能與速度全面超越Y(jié)OLOv5早期版本!
    的頭像 發(fā)表于 04-16 23:00 ?3009次閱讀

    AI愛(ài)克斯開發(fā)板上用OpenVINO?加速YOLOv8目標(biāo)檢測(cè)模型

    《在 AI 愛(ài)克斯開發(fā)板上用 OpenVINO 加速 YOLOv8 分類模型》介紹了在 AI 愛(ài)克斯開發(fā)板上使用 OpenVINO 開發(fā)套件部署并測(cè)評(píng) YOLOv8 的分類
    的頭像 發(fā)表于 05-12 09:08 ?1326次閱讀
    在<b class='flag-5'>AI</b>愛(ài)克斯開發(fā)板上用OpenVINO?加速YOLOv8<b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測(cè)</b><b class='flag-5'>模型</b>

    AI愛(ài)克斯開發(fā)板上使用OpenVINO加速YOLOv8目標(biāo)檢測(cè)模型

    《在AI愛(ài)克斯開發(fā)板上用OpenVINO加速YOLOv8分類模型》介紹了在AI愛(ài)克斯開發(fā)板上使用OpenVINO 開發(fā)套件部署并測(cè)評(píng)YOLOv8的分類
    的頭像 發(fā)表于 05-26 11:03 ?1251次閱讀
    <b class='flag-5'>AI</b>愛(ài)克斯開發(fā)板上使用OpenVINO加速YOLOv8<b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測(cè)</b><b class='flag-5'>模型</b>

    企業(yè)AI模型部署攻略

    當(dāng)下,越來(lái)越多的企業(yè)開始探索和實(shí)施AI模型,以提升業(yè)務(wù)效率和競(jìng)爭(zhēng)力。然而,AI模型部署并非易事,需要企業(yè)在多個(gè)層面進(jìn)行細(xì)致的規(guī)劃和準(zhǔn)備。下
    的頭像 發(fā)表于 12-23 10:31 ?101次閱讀