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%。
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;
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)。
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)如下圖所示。
在檢測(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)更好。
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ì)算:
其中,H為輸出特征圖的高度和寬度(假設(shè)輸入為正方形圖像),W為輸入圖像的高度和寬度,F(xiàn)為卷積核大小,P為填充,S為步長(zhǎng)。卷積的計(jì)算過(guò)程
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。
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ù)量為:
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í)。公式:
其中 α 是一個(gè)很小的正數(shù),通常是0.01,用于控制負(fù)區(qū)間的斜率。
優(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ù)的需求。公式:
其中 是針對(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ò)程稍微變慢。
(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ì)。
優(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)致不理想的模型性能。
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ù)如下圖所示。
這個(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ù)。
按照廠家提供的配置直接進(jìn)行訓(xùn)練轉(zhuǎn)換。
訓(xùn)練完成后,會(huì)自動(dòng)生成一個(gè)rknn模型文件,
3.3 部署結(jié)果
模型的推理結(jié)果如下圖所示
-
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
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論