深度學習驅動下的目標檢測技術:原理、算法與應用創新(二)

三、主流深度學習目標檢測算法剖析

3.1 R - CNN 系列算法

3.1.1 R - CNN 算法詳解

R - CNN(Region - based Convolutional Neural Networks)是將卷積神經網絡(CNN)應用于目標檢測領域的開創性算法,其在目標檢測發展歷程中具有重要的里程碑意義 。該算法的提出打破了傳統目標檢測方法依賴手工設計特征的局限,開啟了深度學習在目標檢測領域的新紀元 。

R - CNN 的基本原理是將目標檢測任務分解為區域提議(Region Proposal)和類別分類與 bounding box 回歸兩個主要步驟 。在區域提議階段,R - CNN 采用 Selective Search 算法在圖像中生成約 2000 個可能包含目標的候選區域 。Selective Search 算法基于圖像的顏色、紋理、大小和形狀等視覺特征,通過不斷合并相似區域的方式生成候選區域 。它首先將圖像分割成小區域,然后計算相鄰區域之間的相似度,選擇相似度最高的區域對進行合并,重復這個過程,直到所有區域都被合并或達到一定的合并次數 。這樣可以生成多樣化且盡可能覆蓋目標的候選區域 。在一幅包含車輛的圖像中,Selective Search 算法會根據車輛的顏色、輪廓等特征,生成一系列可能包含車輛的矩形區域,這些區域的大小、形狀和位置各不相同 。

在得到候選區域后,R - CNN 對每個候選區域進行特征提取 。它將候選區域圖像輸入到預訓練的 CNN(如 AlexNet、VGG16 等)中,通過卷積層和池化層的操作,提取出固定長度的特征向量 。以 VGG16 為例,它包含 13 個卷積層和 5 個池化層,通過這些層的層層處理,能夠從候選區域圖像中提取到豐富的語義特征 。這些特征向量作為后續分類和回歸的輸入 。對于每個候選區域,經過 VGG16 網絡的處理后,會得到一個 4096 維的特征向量 。

接下來是類別分類與 bounding box 回歸步驟 。R - CNN 使用線性 SVM 分類器對提取的特征向量進行分類,判斷每個候選區域中目標的類別 。對于每個類別,都有一個對應的 SVM 分類器,通過計算特征向量與分類器的決策邊界的距離,來判斷候選區域是否屬于該類別 。在檢測行人時,行人類別的 SVM 分類器會根據候選區域的特征向量,判斷該區域是否包含行人 。由于候選區域的位置可能不夠精確,R - CNN 還使用線性回歸器對候選區域的 bounding box 進行精修,以提高目標定位的準確性 。線性回歸器通過學習候選區域與真實目標框之間的偏移量,預測出更準確的 bounding box 位置 。

R - CNN 的訓練過程較為復雜,需要多個階段的訓練 。首先在大規模圖像分類數據集(如 ImageNet)上對 CNN 進行預訓練,以學習到通用的圖像特征 。然后使用目標檢測數據集對預訓練的 CNN 進行微調,調整網絡參數以適應目標檢測任務 。在微調過程中,將與人工標注的框的 IoU 大于 0.5 的區域認為是正類,小于 0.3 的是背景,通過反向傳播算法更新網絡參數 。在訓練 SVM 分類器和線性回歸器時,需要提取候選區域的特征向量,并根據標注信息進行訓練 。訓練 SVM 分類器時,將正樣本和負樣本的特征向量輸入到 SVM 中,通過調整 SVM 的參數,使其能夠準確地區分正樣本和負樣本 。

R - CNN 的出現顯著提升了目標檢測的精度,在 PASCAL VOC 2012 數據集上相比之前的傳統方法,mAP(平均精度均值)有了大幅提升 。它將深度學習的強大特征提取能力引入目標檢測領域,為后續的算法發展奠定了基礎 。然而,R - CNN 也存在諸多缺點 。它的訓練和測試速度較慢,由于對每個候選區域都要獨立進行特征提取,計算量巨大 。在檢測一張圖片時,需要對約 2000 個候選區域分別進行 CNN 特征提取和 SVM 分類,導致檢測時間較長 。R - CNN 的訓練過程需要多步操作,包括候選區域生成、特征提取、SVM 訓練和回歸器訓練等,步驟繁瑣且復雜 。由于需要保存大量候選區域的特征向量,占用的存儲空間較大 。在處理大規模數據集時,存儲這些特征向量需要大量的硬盤空間 。這些缺點限制了 R - CNN 在實際應用中的推廣和使用 。

3.1.2 Fast R - CNN 算法改進

Fast R - CNN 是在 R - CNN 基礎上的重要改進算法,旨在解決 R - CNN 存在的計算效率低下和訓練步驟繁瑣等問題,大幅提升了目標檢測的速度和性能 。

Fast R - CNN 對 R - CNN 的改進主要體現在以下幾個關鍵方面 。共享卷積是 Fast R - CNN 的重要改進之一 。在 R - CNN 中,每個候選區域都要獨立進行卷積特征提取,導致大量的重復計算 。而 Fast R - CNN 將整幅圖像輸入到卷積神經網絡中進行一次卷積操作,生成整幅圖像的特征圖 。然后,根據候選區域在原圖中的位置,在特征圖上找到對應的區域,這樣就可以共享卷積特征,大大減少了計算量 。在檢測包含多個目標的圖像時,R - CNN 需要對每個候選區域分別進行卷積計算,而 Fast R - CNN 只需對整幅圖像進行一次卷積,然后在生成的特征圖上對不同的候選區域進行處理,顯著提高了計算效率 。

RoI Pooling(Region of Interest Pooling)層是 Fast R - CNN 的另一個重要創新 。由于不同候選區域的大小和形狀各不相同,而后續的全連接層需要固定大小的輸入 。RoI Pooling 層的作用就是將不同大小的候選區域在特征圖上對應的區域,通過池化操作轉換為固定大小的特征向量 。它將每個候選區域均勻分成 M×N 塊,對每塊進行 max pooling 操作,從而得到固定維度的特征表示 。這樣,無論輸入的候選區域大小如何,都可以通過 RoI Pooling 層得到統一大小的特征向量,便于后續的全連接層處理 。對于大小不同的兩個候選區域,經過 RoI Pooling 層后,都可以得到相同維度的特征向量,如 7×7 的特征向量 。

Fast R - CNN 還將類別分類和 bounding box 回歸合并到一個網絡中,實現了多任務學習 。它使用 Softmax 函數進行分類,同時使用回歸器對候選區域的 bounding box 進行回歸 。在網絡訓練過程中,分類損失和回歸損失同時參與反向傳播,使得兩個任務能夠相互促進,提高了模型的性能 。這種端到端的訓練方式簡化了訓練流程,避免了 R - CNN 中分類和回歸分別訓練的繁瑣步驟 。在 Fast R - CNN 中,通過一次前向傳播就可以得到候選區域的類別和邊界框的預測結果,然后根據真實標簽計算分類損失和回歸損失,通過反向傳播更新網絡參數 。

Fast R - CNN 的訓練過程相對 R - CNN 更加簡潔高效 。它可以直接在目標檢測數據集上進行端到端的訓練,無需像 R - CNN 那樣進行多步訓練 。在訓練時,首先對整幅圖像進行卷積操作得到特征圖,然后根據候選區域在特征圖上提取特征,通過 RoI Pooling 層將特征轉換為固定大小,最后輸入到全連接層進行分類和回歸 。在反向傳播過程中,同時更新卷積層、RoI Pooling 層和全連接層的參數 。這種訓練方式不僅提高了訓練速度,還使得模型能夠更好地學習到目標檢測的特征和模式 。

與 R - CNN 相比,Fast R - CNN 在檢測速度上有了顯著提升 。由于共享卷積和 RoI Pooling 層的使用,大大減少了計算量,使得檢測一張圖像的時間大幅縮短 。在 PASCAL VOC 2012 數據集上,Fast R - CNN 的檢測速度比 R - CNN 快了近 9 倍,同時在檢測精度上也有一定的提升,mAP 達到了 68.4% 。這使得 Fast R - CNN 在實際應用中更具可行性,能夠滿足一些對檢測速度有較高要求的場景,如實時視頻監控等 。然而,Fast R - CNN 在生成候選區域時仍然依賴外部算法(如 Selective Search),這在一定程度上限制了檢測速度的進一步提升 。在處理復雜場景圖像時,生成候選區域的過程仍然較為耗時,成為了 Fast R - CNN 檢測速度的瓶頸 。

3.1.3 Faster R - CNN 算法突破

Faster R - CNN 是目標檢測領域的又一重大突破,它在 Fast R - CNN 的基礎上,通過引入區域生成網絡(Region Proposal Network,RPN),解決了候選區域生成效率低下的問題,實現了端到端的目標檢測,在檢測速度和精度上都取得了顯著的提升 。

Faster R - CNN 的最大創新點在于 RPN 的引入 。RPN 是一個全卷積網絡,它與 Fast R - CNN 共享卷積層特征,能夠在特征圖上直接生成候選區域 。RPN 通過在特征圖上滑動一個小的網絡窗口,對每個位置生成多個不同尺度和長寬比的錨框(Anchor Boxes) 。這些錨框作為先驗框,覆蓋了圖像中不同大小和形狀的目標可能出現的位置 。在一幅圖像經過卷積層得到特征圖后,RPN 在特征圖的每個位置生成 9 個錨框,這些錨框具有三種不同的尺度(如 128×128、256×256、512×512)和三種不同的長寬比(如 1:1、1:2、2:1) 。

RPN 不僅生成錨框,還對每個錨框進行前景 / 背景分類和邊界框回歸 。它通過兩個并行的分支,一個分支用于預測錨框是否包含目標(前景 / 背景分類),使用 softmax 函數輸出每個錨框屬于前景或背景的概率;另一個分支用于預測錨框相對于真實目標框的位置偏移(邊界框回歸),通過回歸器輸出四個偏移量,用于調整錨框的位置和大小,使其更接近真實目標框 。在訓練過程中,根據錨框與真實目標框的交并比(IoU)來確定錨框的標簽,IoU 大于一定閾值(如 0.7)的錨框被視為正樣本,IoU 小于一定閾值(如 0.3)的錨框被視為負樣本 。通過最小化分類損失和回歸損失來訓練 RPN,使其能夠生成高質量的候選區域 。

Faster R - CNN 的網絡結構主要由四部分組成:特征提取網絡(Backbone)、RPN、RoI Pooling 層和分類回歸網絡 。特征提取網絡通常采用預訓練的深度卷積神經網絡,如 VGG16、ResNet 等,用于提取輸入圖像的特征圖 。以 VGG16 為例,它包含 13 個卷積層和 5 個池化層,通過這些層的層層卷積和池化操作,能夠提取到圖像的高級語義特征 。RPN 在特征圖上生成候選區域,RoI Pooling 層將候選區域在特征圖上對應的區域轉換為固定大小的特征向量,最后分類回歸網絡對這些特征向量進行分類和邊界框回歸,得到最終的目標檢測結果 。在實際檢測過程中,輸入圖像首先經過特征提取網絡得到特征圖,然后 RPN 在特征圖上生成候選區域,RoI Pooling 層對候選區域進行處理,最后分類回歸網絡根據處理后的特征向量判斷目標的類別和位置 。

Faster R - CNN 的訓練過程采用交替訓練的方式 。首先,使用 ImageNet 預訓練模型初始化網絡參數,然后獨立訓練 RPN,優化區域提議的生成 。在訓練 RPN 時,根據錨框與真實目標框的匹配情況,計算分類損失和回歸損失,通過反向傳播更新 RPN 的參數 。接著,使用 RPN 生成的提議區域來訓練 Fast R - CNN,進行目標檢測任務 。在這個過程中,將 RPN 生成的候選區域與真實目標框進行匹配,計算分類損失和回歸損失,更新 Fast R - CNN 的參數 。固定 Fast R - CNN 的檢測頭部分,使用檢測網絡來初始化 RPN,并共享卷積層,對 RPN 進行微調 。通過這種交替訓練的方式,使得 RPN 和 Fast R - CNN 能夠相互協作,共同提高目標檢測的性能 。

與 Fast R - CNN 相比,Faster R - CNN 的檢測速度有了質的飛躍 。由于 RPN 直接在網絡內生成候選區域,避免了外部算法生成候選區域的時間消耗,使得檢測速度大幅提升 。在 PASCAL VOC 2007 數據集上,Faster R - CNN 的檢測速度可達 5 幀 / 秒,同時在檢測精度上也有進一步的提高,mAP 達到了 73.2% 。這使得 Faster R - CNN 在實時目標檢測場景中具有更強的競爭力,能夠滿足如自動駕駛、智能安防等對檢測速度和精度都有較高要求的應用場景 。Faster R - CNN 也為后續的目標檢測算法發展提供了重要的思路和基礎,許多改進算法都是在其基礎上進行拓展和優化的 。

3.2 YOLO 系列算法

3.2.1 YOLOv1 算法原理

YOLOv1(You Only Look Once version 1)是 YOLO 系列算法的開山之作,其創新性地將目標檢測任務視為一個回歸問題,從圖像像素信息直接得到目標的邊框以及所屬類別的概率,實現了端到端的目標檢測,具有極高的檢測速度,能夠滿足實時檢測的需求 。

YOLOv1 的核心思想是將輸入圖像劃分為 S×S 的網格 。如果某個目標的中心落入了某個網格中,則由該網格負責檢測這個目標 。在 YOLOv1 中,每個網格會預測 B 個邊界框(bounding box)和 C 個條件類別概率 。以 S = 7,B = 2 為例,將圖像劃分為 7×7 的網格,每個網格會預測 2 個邊界框和相應的類別概率 。每個邊界框包含 5 個預測值:x、y、w、h 和置信度 。其中,(x, y) 表示邊界框中心相對于網格邊界的偏置(通常指網格的左上角),取值范圍是 [0, 1],通過相對于網格邊長的比例進行歸一化;(w, h) 是邊界框的寬度和高度,以圖像的寬度和高度為基準進行歸一化,取值范圍也是 [0, 1];置信度表示預測框與實際邊界框之間的交并比(IoU),反映了該模型對預測框的準確程度,取值范圍同樣是 [0, 1] 。置信度的計算公式為:Confidence = Pr (Object)×IoUtruth,其中 Pr (Object) 表示該邊界框是否包含目標,有目標時為 1,無目標時為 0 。在設置標簽時,如果該單元格中存在目標,則置信度應為 1(因為有目標,Pr (Object)=1,并且希望預測框與實際邊界框完全重合,IoUtruthpred=1);如果該單元格中不存在目標,置信度應該為 0 。在測試時,當置信度輸出為 1,說明預測框與實際邊界框完全重合,這是最理想的情況;但如果置信度為 0,說明預測框與實際邊界框不重合,檢測結果不可靠 。

對于存在目標的網格,還需要預測 C 個類別概率 。這里的類別概率是條件類別概率,即 P (Classi | Object),表示在一個網格中有目標的前提下,該目標屬于某個類別的概率 。在測試階段,將網格的條件類別概率 P (Classi | Object) 和以該網格為準預測出來邊界框的置信度相乘,即可得到邊界框中包含的目標的類別的概率 。假設某個網格預測的條件類別概率中,行人的概率為 0.8,該網格預測的某個邊界框的置信度為 0.9,那么該邊界框中目標為行人的概率就是 0.8×0.9 = 0.72 。

YOLOv1 的網絡結構基于 GoogLeNet,包含 24 個卷積層和 2 個全連接層 。在訓練過程中,使用均方誤差(MSE)作為損失函數,對邊界框的坐標、置信度和類別概率進行聯合優化 。損失函數由定位損失、置信度損失和類別損失三部分組成 。定位損失用于衡量預測邊界框與真實邊界框之間的位置差異,通過計算邊界框坐標的均方誤差來實現 。置信度損失用于衡量預測置信度與真實置信度之間的差異,真實置信度根據預測框與真實框的 IoU 計算得到 。類別損失用于衡量預測類別概率與真實類別之間的差異,采用交叉熵損失函數 。在計算損失時,對于有目標的網格,定位損失和置信度損失的權重會加大,以突出對目標的檢測和定位;對于無目標的網格,置信度損失的權重會相對較小 。通過不斷調整網絡的參數,使得損失函數逐漸減小,從而提高模型的檢測性能 。

YOLOv1 的優點顯著,首先是檢測速度極快,由于其將目標檢測視為單一回歸問題,在一次向前傳遞中直接從完整圖像預測邊界框和類概率,無需像傳統方法那樣進行復雜的候選區域生成和特征提取過程,因此能夠實現實時檢測 。在一些對檢測速度要求較高的場景,如實時視頻監控中,YOLOv1 可以快速處理視頻流中的每一幀圖像,及時檢測出目標物體 。其次,YOLOv1 在做預測時,使用的是一整張圖像的全局信息,相比那些每次只 “看到” 圖像一塊區域的方法,它可以將目標整個的外觀信息以及類別進行編碼,對目標的上下文信息有更好的理解,因此背景錯誤較少 。在復雜背景下,YOLOv1 能夠綜合考慮圖像中的各種信息,更準確地檢測出目標,而不容易將背景誤判為目標 。然而,YOLOv1 也存在一些缺點 。其準確度落后于一些兩階段(two - stage)的目標檢測算法,如 Faster R - CNN 。由于其使用比較粗糙的網格來劃分原圖,導致其對小目標的檢測效果不是很好 。在一幅圖像中,如果小目標的中心剛好落在兩個網格的邊界上,可能會導致小目標被漏檢 。每個網格只能預測固定數量的邊界框,對于密集目標的檢測能力有限,容易出現漏檢和誤檢的情況 。

3.2.2 YOLOv2 算法優化

YOLOv2 在 YOLOv1 的基礎上進行了一系列的優化和改進,旨在提升模型的精度和穩定性,使其在目標檢測任務中表現更加出色 。

在網絡結構方面,YOLOv2 采用了更深的 Darknet - 19 網絡,該網絡包含 19 個卷積層和 5 個最大池化層 。Darknet - 19 的設計借鑒了 VGG16 的思想,通過堆疊多個 3×3 的小卷積核來增加網絡的非線性表達能力,同時減少參數數量 。在 VGG16 中,使用多個 3×3 的卷積層代替一個大卷積核,不僅可以減少參數數量,還能增加網絡的深度,提高特征提取能力 。Darknet - 19 的這種結構設計使得模型能夠學習到更豐富的圖像特征,從而提升檢測精度 。YOLOv2 還引入了 Batch Normalization(批歸一化)技術 。Batch Normalization 在每個卷積層之后對數據進行歸一化處理,使得數據的分布更加穩定,加快了模型的收斂速度,同時也減少了梯度消失和梯度爆炸的問題 。在訓練過程中,Batch Normalization 能夠自動調整數據的均值和方差,使得網絡對不同的輸入數據具有更好的適應性,提高了模型的泛化能力 。實驗表明,引入 Batch Normalization 后,YOLOv2 的 mAP(平均精度均值)提升了 2.4% 。

YOLOv2 對訓練方法也進行了重要改進,引入了 Anchor Boxes(錨框)機制 。在 YOLOv1 中,每個網格直接預測邊界框的坐標,而在 YOLOv2 中,通過在每個網格上設置多個不同尺度和長寬比的 Anchor Boxes,模型預測的是邊界框相對于 Anchor Boxes 的偏移量和縮放比例 。這樣可以增加模型對不同大小和形狀目標的適應性,提高檢測精度 。在訓練過程中,根據真實目標框與 Anchor Boxes 的 IoU(交并比)來確定 Anchor Boxes 的標簽,IoU 大于一定閾值(如 0.5)的 Anchor Boxes 被視為正樣本,小于一定閾值(如 0.1)的被視為負樣本 。通過這種方式,模型能夠更好地學習到不同目標的特征和位置信息 。為了確定合適的 Anchor Boxes 尺寸和數量,YOLOv2 采用了 K - means 聚類算法對訓練集中的真實目標框進行聚類分析 。根據聚類結果,選擇了 5 種不同尺度和長寬比的 Anchor Boxes,這些 Anchor Boxes 能夠更好地覆蓋訓練集中的目標框,提高了模型的檢測性能 。

YOLOv2 還在多尺度訓練方面進行了創新 。在訓練過程中,YOLOv2 會每隔一定的迭代次數(如 10 次)隨機調整輸入圖像的尺寸 。由于 YOLOv2 的網絡結構下采樣倍數固定為 32,所以輸入圖像的尺寸必須是 32 的倍數 。YOLOv2 會在 {320, 352, …, 608} 這些 32 的倍數中隨機選擇一個尺寸作為輸入圖像的大小 。這種多尺度訓練方式使得模型能夠適應不同分辨率的圖像,提高了模型的泛化能力 。在實際應用中,模型可以更好地處理不同分辨率的圖像,如在視頻監控中,不同攝像頭拍攝的視頻分辨率可能不同,YOLOv2 能夠在不同分辨率下都保持較好的檢測性能 。

在預測階段,YOLOv2 對邊界框的預測方式進行了改進 。它使用邏輯回歸對每個 Anchor Box 預測一個 objectness score(目標存在得分),表示該 Anchor Box 是否包含目標 。通過 sigmoid 函數將 objectness score 限制在 [0, 1] 之間,當 objectness score 大于一定閾值(如 0.5)時,認為該 Anchor Box 包含目標 。在計算邊界框的坐標時,YOLOv2 采用了一種新的公式,將邊界框的中心坐標相對于網格的偏移量通過 sigmoid 函數進行約束,使其取值范圍在 [0, 1] 之間,這樣可以更好地預測邊界框的位置 。這種改進后的預測方式使得邊界框的預測更加準確和穩定 。

通過這些優化和改進,YOLOv2 在檢測精度和速度上都有了顯著提升 。在 PASCAL VOC 2012 數據集上,YOLOv2 的 mAP 達到了 76.8%,相比 YOLOv1 有了大幅提高 。同時,YOLOv2 仍然保持了較高的檢測速度,能夠滿足實時檢測的需求 。這些改進為后續的 YOLO 系列算法發展奠定了堅實的基礎 。

3.2.3 YOLOv3 及后續版本演進

YOLOv3 在 YOLOv2 的基礎上進行了多方面的改進,進一步提升了目標檢測的性能,尤其是在小目標檢測和多尺度目標檢測方面取得了顯著進展 。

YOLOv3 的網絡結構有了較大的創新,采用了 Darknet - 53 作為骨干網絡 。Darknet - 53 包含 53 個卷積層,借鑒了殘差網絡(ResNet)的思想,引入了殘差連接(Residual Connection) 。殘差連接允許網絡直接學習輸入和輸出之間的殘差,解決了深度神經網絡中的梯度消失和梯度爆炸問題,使得網絡可以訓練得更深,從而提取更豐富的特征 。在 Darknet - 53 中,通過將輸入直接加到經過卷積層處理后的輸出上,形成殘差塊,使得網絡能夠更好地學習到圖像的高級語義特征 。實驗表明,Darknet - 53 在 ImageNet 圖像分類任務上的表現優于 VGG16 和 ResNet101,同時計算量相對較低,為目標檢測提供了強大的特征提取能力 。

多尺度檢測是 YOLOv3 的重要改進之一 。YOLOv3 在不同尺度的特征圖上進行目標檢測,分別在 32 倍下采樣、16 倍下采樣和 8 倍下采樣的特征圖上進行預測 。這樣可以兼顧不同大小目標的檢測,小目標在高分辨率的特征圖(如 8 倍下采樣的特征圖)上更容易被檢測到,而大目標在低分辨率的特征圖(如 32 倍下采樣的特征圖)上能夠更好地利用其全局特征 。為了實現多尺度檢測,YOLOv3 采用了特征融合的策略 。它將深層特征圖經過上采樣(Up - Sampling)操作后與淺層特征圖進行融合,使得融合后的特征圖既包含了深層的語義信息,又包含了淺層的細節信息 。在融合過程中,通過逐元素相加或拼接的方式將不同尺度的特征圖進行合并,然后再經過卷積層進行特征提取和整合 。這種特征融合方式提高了模型對不同尺度目標的檢測能力,在 COCO 數據集上,YOLOv3 對小目標的檢測精度有了明顯提升 。

YOLOv3 還改進了分類方式,采用了多標簽分類(Multi - label Classification) 。在 YOLOv1 和 YOLOv2 中,每個網格只能預測一個類別,而 YOLOv3 允許每個邊界框預測多個類別 。它使用邏輯回歸對每個類別進行獨立的預測,通過 sigmoid 函數將每個類別的預測值限制在 [0, 1] 之間,當某個類別的預測值大于一定閾值(如 0.5)時,認為該邊界框包含該類別目標 。這種多標簽分類方式更符合實際應用中目標可能存在多個類別的情況,提高了模型的適應性和準確性 。

在損失函數方面,YOLOv3 沿用了 YOLOv2 中的一些設計,并進行了適當調整 。它同樣使用均方誤差(MSE)來計算邊界框的坐標損失,使用二元交叉熵損失(Binary Cross - Entropy Loss)來計算目標存在得分(objectness score)和類別預測的損失 。在計算損失時,對于不同尺度的特征圖和不同類別的目標,采用了不同的權重設置,以平衡不同尺度和類別的檢測效果 。對于小目標的檢測,給予更高的權重,以提高小目標的檢測精度 。

YOLO 系列后續版本(如 YOLOv4、YOLOv5、YOLOv6、YOLOv7、YOLOv8 等)在 YOLOv3 的基礎上繼續演進和優化 。YOLOv4 結合了多種先進的技術,如 CSPDarknet53 骨干網絡、Mish 激活函數、DropBlock 正則化等 。CSPDarknet53 通過跨階段局部網絡(CSPNet)減少了計算量,提高了模型的推理速度;Mish 激活函數相比 ReLU 等傳統激活函數具有更好的非線性表達能力,能夠提升模型的性能;DropBlock 正則化通過隨機丟棄部分特征,防止模型過擬合 。在訓練策略上,YOLOv4 采用了 Cosine 學習率衰減等方法,使得模型在訓練過程中能夠更好地收斂 。

YOLOv5 并非官方版本,但在社區中廣泛使用 。它采用了 PyTorch 框架,提供了更易于使用的接口和更高的訓練效率 。YOLOv5 在網絡結構上進行了優化,引入了 Focus 結構,通過切片操作將輸入圖像的信息進行重組,在不增加計算量的情況下豐富了特征圖的信息 。它還采用了自適應錨框計算和自適應圖片縮放等技術,進一步提高了檢測速度和精度 。

YOLOv6 是美團視覺智能部研發的一款目標檢測框架,專注于工業應用 。該框架同時關注檢測的精度和推理效率,采用了硬件感知神經網絡搜索(HNAS)和重參數化技術(RepVGG) 。HNAS 能夠根據硬件平臺的特點自動搜索最優的網絡結構,提高模型在特定硬件上的運行效率;RepVGG 通過將多分支結構在訓練和推理階段進行轉換,在不損失精度的前提下提高了推理速度 。

YOLOv7 引入了新的網絡結構和訓練策略,如擴展的高效層聚合網絡(ELAN)和可訓練的袋中策略(Bag - of - Freebies) 。ELAN 通過對特征進行更有效的融合和傳播,提高了模型的性能;可訓練的袋中策略則通過一系列的訓練技巧,如數據增強、標簽平滑等,進一步提升了模型的泛化能力和檢測精度 。

YOLOv8 是 YOLO 系列的最新版本,采用了最新的技術,如自注意力機制和 Transformer 結構 。自注意力機制能夠讓模型更好地關注目標的關鍵特征,提高對復雜場景和目標的理解能力;Transformer 結構則增強了模型對長距離依賴關系的建模能力,進一步提升了檢測性能 。它還在模型的可擴展性和易用性方面進行了改進,提供了更多的功能和靈活的配置選項 。

這些后續版本的不斷演進,使得 YOLO 系列算法在目標檢測領域始終保持著較高的性能和廣泛的應用 。

3.3 SSD 算法解析

SSD(Single Shot MultiBox Detector)是一種單階段目標檢測算法,它在目標檢測領域具有獨特的優勢,能夠在保證一定檢測速度的同時,實現較高的檢測精度 。

SSD 的核心設計理念是在不同尺度的特征圖上進行多尺度特征圖檢測 。它基于一個基礎的卷積神經網絡(如 VGG16),在網絡的不同層輸出的特征圖上進行目標檢測 。SSD 會在這些不同尺度的特征圖上生成一系列不同大小和長寬比的默認框(Default Boxes,也稱為錨框,Anchor Boxes) 。小尺度的特征圖感受野大,適合檢測大目標,因此在小尺度特征圖上生成較大的默認框;大尺度的特征圖感受野小,適合檢測小目標,所以在大尺度特征圖上生成較小的默認框 。在 VGG16 網絡中,通常會選取不同層級的特征圖,如 conv4_3、conv7、conv8_2、conv9_2、conv10_2 和 conv11_2 等層的特征圖 。在 conv4_3 特征圖上,由于其分辨率較高,感受野較小,生成的默認框尺寸相對較小,用于檢測小目標;而在 conv11_2 特征圖上,分辨率較低,感受野較大,生成的默認框尺寸較大,用于檢測大目標 。每個特征圖上的每個位置都會生成多個不同長寬比的默認框,一般會設置 3 到 6 種不同的長寬比,如 1:1、1:2、2:1、1:3、3:1 等 。這樣可以覆蓋圖像中不同大小和形狀的目標可能出現的位置,增加檢測的可能性 。

SSD 采用直接回歸的方式來預測目標的類別和位置 。對于每個默認框,SSD 通過卷積層直接預測其是否包含目標(前景 / 背景分類)以及目標相對于默認框的位置偏移(邊界框回歸) 。在分類方面,使用 softmax 函數對每個默認框預測其屬于各個類別的概率,通過比較概率值確定目標的類別 。在預測一個包含行人的圖像時,SSD 會對每個默認框計算其屬于行人、背景以及其他類別的概率,如果屬于行人的概率最高且超過設定的閾值,則認為該默認框檢測到了行人 。在邊界框回歸方面,通過回歸器預測目標相對于默認框的位置偏移量,包括中心坐標的偏移和寬高的縮放比例 。假設默認框的中心坐標為 (x0, y0),寬高為 (w0, h0),預測的偏移量為 (Δx, Δy, Δw, Δh),則預測的邊界框中心坐標為 (x = x0 + Δx, y = y0 + Δy),寬高為 (w = w0 * exp (Δw), h = h0 * exp (Δh)) 。通過這種直接回歸的方式,SSD 可以在一次前向傳播中同時完成目標的分類和定位,大大提高了檢測速度 。

SSD 的損失函數由分類損失和定位損失兩部分組成 。分類損失采用交叉熵損失,用于衡量預測類別與真實類別之間的差異 。定位損失采用平滑 L1 損失,用于衡量預測邊界框與真實邊界框之間的位置差異 。在訓練過程中,根據默認框與真實目標框的交并比(IoU)來確定默認框的標簽,IoU 大于一定閾值(如 0.5)的默認框被視為正樣本,小于一定閾值(如 0.1)的默認框被視為負樣本 。通過最小化損失函數,不斷調整網絡的參數,使得模型能夠準確地檢測出目標的類別和位置 。

與其他目標檢測算法相比,SSD 具有以下優勢 。由于 SSD 在一次前向傳播中直接完成目標的檢測,無需像 R - CNN 系列算法那樣進行復雜的候選區域生成和多次特征提取過程,因此檢測速度快,能夠滿足實時檢測的需求 。在視頻監控場景中,SSD 可以快速處理視頻流中的每一幀圖像,及時檢測出目標物體 。SSD 通過在不同尺度的特征圖上生成不同大小和長寬比的默認框,能夠有效地檢測不同大小和形狀的目標,在檢測精度上表現較好 。與 YOLOv1 相比,SSD 對小目標的檢測能力更強,能夠更好地適應復雜場景下的目標檢測任務 。SSD 的網絡結構相對簡單,易于實現和部署,可以在不同的硬件平臺上運行 。它可以方便地集成到各種應用系統中,如智能安防、自動駕駛等領域 。然而,SSD 也存在一些不足之處,例如在處理密集目標時,由于默認框的重疊問題,可能會出現漏檢和誤檢的情況 。在檢測人群密集的場景時,可能會有部分行人被漏檢或被誤檢為其他目標 。

四、目標檢測算法的性能評估與優化策略

4.1 性能評估指標

在目標檢測領域,為了全面、準確地衡量算法的性能表現,一系列性能評估指標被廣泛應用。這些指標從不同角度反映了算法在目標檢測任務中的準確性、召回率和綜合性能等關鍵方面,對于算法的研究、改進以及實際應用具有重要的指導意義 。

平均精度均值(mAP,Mean Average Precision)是目標檢測中最為重要的綜合評估指標之一,用于衡量算法在多個類別上的整體性能 。其計算基于每個類別的平均精度(AP,Average Precision) 。AP 的計算過程較為復雜,首先需要對每個類別生成一系列的檢測結果,包括邊界框和置信度評分 。然后按照置信度從高到低對檢測結果進行排序 。在不同的置信度閾值下,計算對應的精確率(Precision)和召回率(Recall) 。精確率表示預測為正樣本(即檢測到目標)的樣本中,真正為正樣本的比例,計算公式為:Precision = TP / (TP + FP),其中 TP(True Positive)表示真正例,即預測為正樣本且實際也為正樣本的數量;FP(False Positive)表示假正例,即預測為正樣本但實際為負樣本的數量 。召回率表示實際為正樣本的樣本中,被正確預測為正樣本的比例,計算公式為:Recall = TP / (TP + FN),其中 FN(False Negative)表示假反例,即實際為正樣本但被預測為負樣本的數量 。通過在不同置信度閾值下計算精確率和召回率,可以繪制出精確率 - 召回率曲線(PR 曲線) 。AP 就是 PR 曲線下的面積,通常使用積分或插值法來計算 。對于每個類別都計算其 AP 值,最后將所有類別的 AP 值求平均,得到 mAP 。在一個包含車輛、行人、交通標志等多個類別的目標檢測任務中,分別計算每個類別的 AP 值,然后將這些 AP 值平均,得到的 mAP 值能夠綜合反映算法在不同類別目標檢測上的性能 。mAP 的取值范圍是 [0, 1],值越接近 1,表示算法的性能越好 。在 PASCAL VOC 和 COCO 等常用的目標檢測數據集上,mAP 被廣泛用于評估不同算法的性能,是衡量算法優劣的重要標準 。

精確率(Precision)和召回率(Recall)是衡量目標檢測算法性能的兩個基本且關鍵的指標 。精確率反映了檢測結果的準確性,即檢測到的目標中真正屬于該類別的比例 。在行人檢測任務中,如果模型檢測出 100 個行人,其中有 80 個是真正的行人,20 個是誤檢(將非行人誤判為行人),那么精確率為 80 / (80 + 20) = 0.8 。召回率則體現了模型對目標的覆蓋程度,即實際存在的目標中有多少被成功檢測出來 。在上述行人檢測任務中,如果實際圖像中有 100 個行人,模型檢測出 80 個,還有 20 個未被檢測到,那么召回率為 80 / (80 + 20) = 0.8 。精確率和召回率之間通常存在一種權衡關系 。當提高精確率時,可能會降低召回率;反之,提高召回率時,可能會降低精確率 。如果將檢測的置信度閾值設置得較高,只有置信度非常高的檢測結果才被認為是正樣本,這樣可以減少誤檢,提高精確率,但可能會導致一些真實目標因為置信度略低而被漏檢,從而降低召回率 。相反,如果將置信度閾值設置得較低,更多的檢測結果會被認為是正樣本,召回率會提高,但誤檢的情況可能會增加,導致精確率下降 。為了綜合考慮精確率和召回率,常常會繪制 PR 曲線來直觀地展示它們之間的關系 。PR 曲線越靠近右上角,說明算法在精確率和召回率上的綜合表現越好 。

交并比(IoU,Intersection over Union)是衡量檢測結果與真實標簽之間重疊程度的重要指標 。它的計算方法是檢測框與真實框的交集面積除以它們的并集面積 。IoU 的取值范圍是 [0, 1],值越接近 1,表示檢測框與真實框的重疊度越高,檢測結果越準確 。在計算 IoU 時,首先確定檢測框和真實框的坐標,然后計算它們的交集和并集面積 。假設檢測框的坐標為 (x1, y1, x2, y2),真實框的坐標為 (x3, y3, x4, y4),則交集的左上角坐標為 (max (x1, x3), max (y1, y3)),右下角坐標為 (min (x2, x4), min (y2, y4)) 。交集面積為 (max (0, min (x2, x4) - max (x1, x3))) * (max (0, min (y2, y4) - max (y1, y3))) 。并集面積為檢測框面積加上真實框面積減去交集面積 。如果檢測框完全覆蓋了真實框,或者真實框完全覆蓋了檢測框,IoU 的值為 1;如果檢測框和真實框沒有任何重疊,IoU 的值為 0 。在實際應用中,通常會設置一個 IoU 閾值(如 0.5),當檢測框與真實框的 IoU 大于該閾值時,認為檢測正確 。在目標檢測算法的評估中,IoU 常用于判斷檢測結果是否準確,是計算精確率、召回率以及 AP 等指標的基礎 。

除了上述主要指標外,還有一些其他指標也在目標檢測性能評估中發揮著作用 。F1 值是精確率和召回率的調和平均數,計算公式為:F1 = 2 * (Precision * Recall) / (Precision + Recall) 。F1 值綜合考慮了精確率和召回率,能夠更全面地反映算法的性能 。當精確率和召回率都較高時,F1 值也會較高 。在一些對精確率和召回率都有較高要求的場景中,F1 值是一個重要的評估指標 。漏檢率(Miss Rate)是指實際為正樣本但被錯誤預測為負樣本的比例,即 FN / (TP + FN) 。漏檢率與召回率互補,召回率越高,漏檢率越低 。誤檢率(False Alarm Rate)是指預測為正樣本但實際為負樣本的比例,即 FP / (FP + TN),其中 TN(True Negative)表示真反例,即預測為負樣本且實際也為負樣本的數量 。誤檢率與精確率相關,精確率越高,誤檢率越低 。在實際應用中,根據不同的需求和場景,可能會重點關注不同的指標 。在安防監控領域,可能更注重召回率,以確保盡可能少地漏檢目標;而在一些對準確性要求極高的場景,如醫學影像診斷,可能會更關注精確率 。

4.2 優化策略探討

4.2.1 數據增強技術

數據增強技術在目標檢測領域中具有至關重要的作用,它通過對原始訓練數據進行各種變換,人為地擴充數據集的規模和多樣性,從而有效提升模型的泛化能力和魯棒性 。在實際應用中,由于獲取大量標注數據往往面臨成本高、耗時久以及標注難度大等問題,數據增強技術成為了一種經濟高效的解決方案,能夠在有限的數據集上顯著提高模型的性能 。

隨機翻轉是一種簡單而有效的數據增強方法,包括水平翻轉和垂直翻轉 。水平翻轉是將圖像沿著水平方向進行鏡像變換,垂直翻轉則是沿著垂直方向進行鏡像變換 。在行人檢測任務中,對訓練圖像進行水平翻轉后,原本朝右行走的行人變為朝左行走,這樣可以讓模型學習到行人在不同方向上的特征,增強模型對行人姿態變化的適應性 。在實際應用中,通常會以一定的概率(如 0.5)對圖像進行隨機翻轉操作,以增加數據的多樣性 。隨機翻轉操作不僅可以擴充數據集的規模,還可以減少模型對圖像方向的依賴,提高模型的魯棒性 。

隨機裁剪是從原始圖像中隨機截取一部分區域作為新的訓練樣本 。通過隨機裁剪,可以使模型學習到目標在不同位置和大小下的特征 。在一幅包含車輛的圖像中,隨機裁剪可能會截取到車輛的不同部位,如車頭、車尾或車身的一部分,這有助于模型更好地理解車輛的整體結構和局部特征 。在進行隨機裁剪時,需要注意保持裁剪區域內目標的完整性,避免裁剪掉過多的目標信息 。可以根據目標的邊界框信息,設置裁剪區域的大小和位置,確保裁剪后的圖像中包含目標物體 。通常會設置一個最小的裁剪區域大小,以保證目標在裁剪后的圖像中仍然具有足夠的特征信息 。

隨機縮放是對圖像進行放大或縮小操作,從而使模型能夠學習到目標在不同尺度下的特征 。在檢測不同大小的物體時,隨機縮放可以讓模型適應目標大小的變化,提高檢測的準確性 。在一個包含不同大小車輛的圖像中,通過隨機縮放,模型可以學習到大型卡車和小型轎車在不同尺度下的特征,從而更好地檢測出各種大小的車輛 。隨機縮放可以采用不同的縮放因子,如 0.8、1.2 等,以生成不同尺度的圖像樣本 。為了保持圖像的縱橫比,可以在縮放時采用等比例縮放的方式 。

除了上述幾何變換方法,數據增強還包括光度變換,如亮度調整、對比度調整、色調調整和飽和度調整等 。亮度調整是改變圖像的明亮程度,對比度調整是增強或減弱圖像中不同區域之間的對比度,色調調整是改變圖像的顏色基調,飽和度調整是調整圖像顏色的鮮艷程度 。通過這些光度變換,可以使模型學習到目標在不同光照和顏色條件下的特征,提高模型對復雜環境的適應性 。在不同光照條件下拍攝的圖像中,通過調整亮度和對比度,可以讓模型學習到目標在不同光照強度下的特征,從而在實際應用中能夠準確檢測到目標 。

數據增強技術還可以結合其他方法,如 MixUp 和 CutOut 。MixUp 通過將兩個圖像混合在一起來創建新圖像,邊界框也相應地混合 。這種方法可以讓模型學習到不同圖像之間的特征融合,提高模型的泛化能力 。CutOut 則是隨機屏蔽圖像的矩形區域,這可以幫助模型學習關注對象的不同部分,避免模型過度依賴某些局部特征 。在訓練過程中,隨機在圖像上屏蔽一些區域,讓模型學習從剩余的區域中提取目標特征,從而提高模型的魯棒性 。

在實際應用數據增強技術時,需要注意對邊界框的處理 。每當對圖像進行變換時,必須相應地變換邊界框的位置和大小 。如果對圖像進行旋轉操作,邊界框也需要按照相同的旋轉角度進行旋轉;如果對圖像進行縮放操作,邊界框的尺寸也需要按比例縮放 。在進行隨機裁剪時,需要根據裁剪區域調整邊界框的坐標,確保邊界框與裁剪后的圖像相對應 。為了實現準確的邊界框變換,可以使用一些專門的庫,如 Albumentations、Imgaug 和 TensorFlow 的 tf.image 模塊等,這些庫提供了在正確處理邊界框的同時輕松應用各種數據增強操作的功能 。

4.2.2 模型壓縮與加速

在目標檢測領域,隨著深度學習模型的不斷發展,模型的規模和復雜度日益增加,這雖然帶來了性能的提升,但也導致了計算資源的大量消耗和推理速度的降低 。模型壓縮與加速技術旨在在保持模型性能的前提下,減少模型的大小和計算量,提高模型的推理效率,使其能夠更好地應用于資源受限的環境中,如移動設備和嵌入式系統 。

剪枝是一種常用的模型壓縮方法,其核心思想是通過去除模型中不重要的連接或神經元,來減少模型的參數數量和計算復雜度 。在神經網絡中,并非所有的連接和神經元對模型的性能都有同等重要的貢獻 。有些連接的權重非常小,對模型的輸出影響較小,這些連接可以被認為是不重要的 。剪枝方法通常分為非結構化剪枝和結構化剪枝 。非結構化剪枝是對單個權重進行修剪,直接刪除權重值小于某個閾值的連接 。這種方法可以有效地減少模型的參數數量,但由于刪除的連接是隨機的,會導致模型結構變得不規則,難以在硬件上高效實現 。結構化剪枝則是對整個神經元或卷積核進行修剪,刪除整個神經元或卷積核,使得模型結構保持規則,便于在硬件上加速 。在卷積神經網絡中,可以刪除一些卷積核,使得模型在減少計算量的同時,仍然能夠保持較好的性能 。剪枝過程通常需要進行多次迭代,每次迭代后重新評估模型的性能,以確保剪枝不會導致模型性能的大幅下降 。在每次剪枝后,需要使用驗證數據集對模型進行評估,如果模型性能下降過多,則需要調整剪枝策略或恢復部分被剪枝的連接 。

量化是另一種重要的模型壓縮技術,它通過將模型中的參數和激活值用低比特表示來減少內存占用和計算量 。在傳統的深度學習模型中,參數和激活值通常使用 32 位浮點數表示,而量化技術可以將其壓縮為 8 位整數或更低比特數 。量化分為訓練后量化和量化感知訓練 。訓練后量化是在模型訓練完成后,對模型進行量化處理 。它通過對參數和激活值進行統計分析,確定合適的量化范圍和量化步長,然后將其映射到低比特表示 。訓練后量化的優點是實現簡單,不需要重新訓練模型,但可能會導致一定的性能損失 。量化感知訓練則是在模型訓練過程中引入量化操作,讓模型在訓練過程中適應量化帶來的誤差 。通過在訓練過程中模擬量化誤差,使得模型能夠學習到更魯棒的特征表示,從而減少量化對性能的影響 。在量化感知訓練中,會在模型的前向傳播和反向傳播過程中加入量化和反量化操作,通過調整量化參數和模型參數,使得模型在低比特表示下仍然能夠保持較好的性能 。

除了剪枝和量化,模型壓縮還可以采用知識蒸餾等方法 。知識蒸餾是一種將教師模型的知識轉移到學生模型中的技術 。教師模型通常是一個大型且準確的模型,而學生模型是一個較小且推理速度更快的模型 。知識蒸餾通過最小化學生模型預測與教師模型預測之間的差異來實現,從而使學生模型能夠學習教師模型的知識 。在目標檢測任務中,可以使用一個大型的 Faster R - CNN 模型作為教師模型,一個小型的 SSD 模型作為學生模型 。通過知識蒸餾,讓 SSD 模型學習 Faster R - CNN 模型的檢測知識,在減少模型大小的同時,保持較好的檢測性能 。在知識蒸餾過程中,通常使用軟標簽來傳遞教師模型的知識 。軟標簽不僅包含了類別信息,還包含了模型對不同類別的置信度信息,相比硬標簽(只有類別信息),軟標簽能夠提供更豐富的知識 。

在模型加速方面,除了通過模型壓縮減少計算量外,還可以采用一些硬件加速和算法優化策略 。在硬件方面,使用 GPU、TPU 等專用硬件加速器可以顯著提高模型的推理速度 。GPU 具有強大的并行計算能力,能夠同時處理多個計算任務,適合深度學習模型的大規模矩陣運算 。TPU 則是專門為深度學習設計的硬件加速器,在處理深度學習任務時具有更高的效率和更低的能耗 。在算法優化方面,可以采用模型融合、稀疏矩陣計算等方法 。模型融合是將多個小模型合并為一個大模型,減少模型切換帶來的開銷 。稀疏矩陣計算則是利用模型參數的稀疏性,只計算非零元素,減少計算量 。在一些稀疏神經網絡中,大部分參數為零,通過稀疏矩陣計算,可以只對非零參數進行計算,從而大大提高計算效率 。

4.2.3 損失函數優化

損失函數在目標檢測模型的訓練過程中起著核心作用,它用于衡量模型預測結果與真實標簽之間的差異,通過最小化損失函數來調整模型的參數,使得模型的預測結果盡可能接近真實值 。在目標檢測任務中,常見的損失函數包括交叉熵損失、IoU 損失等,對這些損失函數的優化和改進是提高模型性能的關鍵之一 。

交叉熵損失是目標檢測中常用的分類損失函數,它主要用于衡量模型預測的類別概率與真實類別之間的差異 。對于一個多類別分類問題,假設模型預測的類別概率分布為P=(p_1,p_2,\cdots,p_n),真實類別為y,其中y是一個 one - hot 編碼向量,只有真實類別的位置為 1,其他位置為 0 。交叉熵損失的計算公式為:L = -\sum_{i = 1}^{n}y_i\log(p_i) 。當模型預測的類別概率與真實類別越接近時,交叉熵損失越小;反之,損失越大 。在一個包含車輛、行人、交通標志等類別的目標檢測任務中,模型對每個檢測框預測其屬于各個類別的概率,通過交叉熵損失來衡量預測概率與真實類別的差異,從而指導模型的訓練 。然而,在實際應用中,目標檢測任務往往存在類別不平衡問題,即不同類別的樣本數量差異較大 。在這種情況下,傳統的交叉熵損失會使模型傾向于學習數量較多的類別,而對數量較少的類別檢測效果不佳 。為了解決這個問題,Focal Loss 被提出 。Focal Loss 引入了一個調制因子(1 - p_t)^{\gamma},其中p_t是模型對樣本的預測概率,\gamma是一個可調節的超參數 。當樣本容易分類時,p_t接近 1,調制因子(1 - p_t)^{\gamma}接近 0,從而降低了易分類樣本的損失權重;當樣本難以分類時,p_t接近 0,調制因子(1 - p_t)^{\gamma}接近 1,增加了難分類樣本的損失權重 。通過這種方式,Focal Loss 能夠更關注難分類樣本的訓練,有效緩解類別不平衡問題 。在一個包含大量背景樣本和少量目標樣本的目標檢測任務中,Focal Loss 可以使模型更加關注目標樣本的分類,提高對目標的檢測精度 。

IoU 損失(Intersection over Union Loss)主要用于衡量模型預測的邊界框與真實邊界框之間的重疊程度,它在目標檢測的定位任務中起著重要作用 。IoU 的計算方法是預測框與真實框的交集面積除以它們的并集面積,取值范圍是 [0, 1],值越接近 1,表示預測框與真實框的重疊度越高,定位越準確 。傳統的 IoU 損失直接使用 1 減去 IoU 作為損失值,即L_{IoU}=1 - IoU 。然而,傳統 IoU 損失存在一些局限性,當預測框與真實框不相交時,IoU 為 0,此時 IoU 損失無法反映兩個框之間的距離信息,導致模型在訓練過程中難以收斂 。為了克服這個問題,一些改進的 IoU 損失被提出,如 GIoU(Generalized Intersection over Union)損失、DIoU(Distance - IoU)損失和 CIoU(Complete - IoU)損失 。GIoU 損失在 IoU 的基礎上,引入了最小外接矩形的概念,通過計算預測框和真實框的最小外接矩形與它們的并集之間的 IoU,來衡量兩個框之間的相對位置關系 。當預測框與真實框不相交時,GIoU 損失能夠反映它們之間的距離,使得模型能夠更好地收斂 。DIoU 損失則直接考慮了預測框和真實框之間的距離,通過計算兩個框中心點之間的歐氏距離與它們的對角線長度的比值,來衡量兩個框之間的距離關系 。CIoU 損失在 DIoU 損失的基礎上,進一步考慮了預測框和真實框的寬高比,使得損失函數更加全面地反映了兩個框之間的差異 。在實際應用中,CIoU 損失能夠使模型更快地收斂,并且在定位精度上有更好的表現 。

除了上述損失函數的改進,還可以將不同的損失函數進行組合,以滿足目標檢測任務的多任務需求 。在目標檢測中,通常需要同時進行分類和定位任務,因此可以將交叉熵損失和 IoU 損失進行加權組合,得到一個綜合損失函數 。L = \alpha L_{cls}+(1 - \alpha)L_{loc},其中L_{cls}是交叉熵損失,L_{loc}是 IoU 損失(或其他定位損失),\alpha是一個權重系數,用于平衡分類損失和定位損失的重要性 。通過調整\alpha的值,可以根據任務的需求來優化模型的性能 。在一些對定位精度要求較高的任務中,可以適當增大\alpha的值,使模型更加關注定位任務;在一些對分類精度要求較高的任務中,則可以減小\alpha的值,使模型更加關注分類任務 。還可以根據不同的場景和需求,設計更加復雜的損失函數,如結合語義分割信息的損失函數,以提高模型在復雜場景下的目標檢測性能 。

代碼在(三)中

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905891.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905891.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905891.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Umi】項目初始化配置和用戶權限

app.tsx import { RunTimeLayoutConfig } from umijs/max; import { history, RequestConfig } from umi; import { getCurrentUser } from ./services/auth; import { message } from antd;// 獲取用戶信息 export async function getInitialState(): Promise<{currentUse…

[學習] RTKLib詳解:qzslex.c、rcvraw.c與solution.c

RTKLib詳解&#xff1a;qzslex.c、rcvraw.c與solution.c 本文是 RTKLlib詳解 系列文章的一篇&#xff0c;目前該系列文章還在持續總結寫作中&#xff0c;以發表的如下&#xff0c;有興趣的可以翻閱。 [學習] RTKlib詳解&#xff1a;功能、工具與源碼結構解析 [學習]RTKLib詳解…

移植RTOS,發現任務棧溢出怎么辦?

目錄 1、硬件檢測方法 2、軟件檢測方法 3、預防堆棧溢出 4、處理堆棧溢出 在嵌入式系統中&#xff0c;RTOS通過管理多個任務來滿足嚴格的時序要求。任務堆棧管理是RTOS開發中的關鍵環節&#xff0c;尤其是在將RTOS移植到新硬件平臺時。堆棧溢出是嵌入式開發中常見的錯誤&am…

window 顯示驅動開發-使用有保證的協定 DMA 緩沖區模型

Windows Vista 的顯示驅動程序模型保證呈現設備的 DMA 緩沖區和修補程序位置列表的大小。 修補程序位置列表包含 DMA 緩沖區中命令引用的資源的物理內存地址。 在有保證的協定模式下&#xff0c;用戶模式顯示驅動程序知道 DMA 緩沖區和修補程序位置列表的確切大小&#xff0c;…

SD-HOST Controller design-----SD CLK 設計

hclk的分頻電路&#xff0c;得到的分頻時鐘作為sd卡時鐘。 該模塊最終輸出兩個時鐘&#xff1a;一個為fifo_sd_clk,另一個為out_sd_clk_dft。當不分頻時&#xff0c;fifo_sd_clk等于hclk&#xff1b;當分頻時候&#xff0c;div_counter開始計數&#xff0c;記到相應分頻的時候…

完全背包問題中「排列數」與「組合數」的核心區別

&#x1f3af; 一句話理解 求組合數&#xff08;不計順序&#xff09; → 外層遍歷物品&#xff0c;內層遍歷背包容量 求排列數&#xff08;計順序&#xff09; → 外層遍歷背包容量&#xff0c;內層遍歷物品 &#x1f3b2; 舉例說明 假設有硬幣 [1, 2, 3]&#xff0c;目標金…

NHANES指標推薦:MDS

文章題目&#xff1a;The association between magnesium depletion score (MDS) and overactive bladder (OAB) among the U.S. population DOI&#xff1a;10.1186/s41043-025-00846-x 中文標題&#xff1a;美國人群鎂耗竭評分 &#xff08;MDS&#xff09; 與膀胱過度活動癥…

C++:字符串操作函數

strcpy() 功能&#xff1a;把一個字符串復制到另一個字符串。 #include <iostream> #include <cstring> using namespace std;int main() {char src[] "Hello";char dest[10];strcpy(dest, src);cout << "Copied string: " << …

1基·2臺·3空間·6主體——藍象智聯解碼可信數據空間的“數智密碼”

近日&#xff0c;由全國數據標準化技術委員會編制的《可信數據空間 技術架構》技術文件正式發布&#xff0c;標志著我國數據要素流通體系向標準化、規范化邁出關鍵一步。該文件從技術功能、業務流程、安全要求三大維度對可信數據空間進行系統性規范&#xff0c;為地方、行業及企…

基于TI AM6442+FPGA解決方案,支持6網口,4路CAN,8個串口

TI AM6442FPGA解決方案具有以下技術優勢及適用領域&#xff1a; 一、技術優勢 ?異構多核架構?&#xff1a;AM6442處理器集成7個內核&#xff08;2xCortex-A534xCortex-R5F1xCortex-M4F&#xff09;&#xff0c;可實現應用處理、實時控制和獨立任務分核協同&#xff0c;滿足…

android vlc播放rtsp

最近在做IOT開發&#xff0c;需要把IOT設備的RTSP流在手機端播放&#xff0c;VLC是個不錯的選擇&#xff0c;使用起來簡單方便。 1、在AndroidManifest.xml 中添加網絡權限 <uses-permission android:name"android.permission.INTERNET"/> <uses-permissi…

前端面經 9 JS中的繼承

借用Class實現繼承 實現繼承 extends super extends 繼承父類 super調用父類的構造函數 子類中存在方法采取就近原則 &#xff0c;子類構造函數需要使用super()調用父類的構造函數 JS 靜態屬性和私有屬性 寄生組合式繼承

jQuery知識框架

一、jQuery 基礎 核心概念 $ 或 jQuery&#xff1a;全局函數&#xff0c;用于選擇元素或創建DOM對象。 鏈式調用&#xff1a;多數方法返回jQuery對象&#xff0c;支持連續操作。 文檔就緒事件&#xff1a; $(document).ready(function() { /* 代碼 */ }); // 簡寫 $(function…

【HCIA】BFD

前言 前面我們介紹了浮動路由以及出口路由器的默認路由配置&#xff0c;可如此配置會存在隱患&#xff0c;就是出口路由器直連的網絡設備并不是運營商的路由器&#xff0c;而是交換機。此時我們就需要感知路由器的存活狀態&#xff0c;這就需要用到 BFD&#xff08;Bidirectio…

前端流行框架Vue3教程:18. _組件數據傳遞

透傳 Attributes 透傳attribute指的是傳遞給一個組件&#xff0c;卻沒有被該組件聲明為props或emits的attribute或者v-on事件監聽器。最常見的例子就是class、style和id 當一個組件以單個元素為根作渲染時&#xff0c;透傳的attribute會自動被添加到根元素上 透傳 Attributes …

卓力達電鑄鎳網:精密制造與跨領域應用的創新典范

目錄 引言 一、電鑄鎳網的技術原理與核心特性 二、電鑄鎳網的跨領域應用 三、南通卓力達電鑄鎳網的核心優勢 四、未來技術展望 引言 電鑄鎳網作為一種兼具高精度與高性能的金屬網狀材料&#xff0c;通過電化學沉積工藝實現復雜結構的精密成型&#xff0c;已成為航空航天、電…

1.2.3.2 數據安全發展歷程-大數據安全產品領域

從電商到物流&#xff1a;中國大數據安全產品如何進化&#xff1f; 在數字化時代&#xff0c;我們的一舉一動都可能被記錄——購物記錄、聊天信息、位置軌跡……這些數據不僅關系到個人隱私&#xff0c;更涉及企業運營和國家安全的命脈。近年來&#xff0c;隨著數據的爆發式增長…

服務器性能參數分析基礎:磁盤-CPU-內存

在Linux系統中&#xff0c;"掛載"&#xff08;Mount&#xff09;是指將物理存儲設備&#xff08;如磁盤分區&#xff09;或邏輯存儲卷&#xff08;如LVM、網絡存儲&#xff09;關聯到文件系統目錄樹的特定路徑節點&#xff08;即掛載點&#xff09;&#xff0c;使得該…

密碼學刷題小記錄

base 64 打開后發現是一串字符串&#xff0c;&#xff0c;我們直接進行base64解密即可 Caesar 根據標題分析&#xff0c;我們知道這是凱撒解密&#xff0c;拖進去經過嘗試在偏移量為12時直接得解&#xff08;這道題就是找偏移量比較麻煩&#xff09; Morse 這道題打開后&am…

Spring框架(三)

目錄 一、JDBC模板技術概述 1.1 什么是JDBC模板 二、JdbcTemplate使用實戰 2.1 基礎使用&#xff08;手動創建對象&#xff09; 2.2 使用Spring管理模板類 2.3 使用開源連接池&#xff08;Druid&#xff09; 三、模擬轉賬開發 3.1 基礎實現 3.1.1 Service層 3.1.2 Da…