偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

目標檢測中的 Anchor 詳解

開發(fā) 人工智能
錨框是預定義的各種大小和寬高比的邊界框,作為目標檢測的參考點。模型不是從頭開始預測框,而是調(diào)整這些錨框以更好地適應實際物體,從而提高檢測的準確性和效率。

直觀上,我們?nèi)绾晤A測圖像中的邊界框?第一個最明顯的技術(shù)是滑動窗口。我們定義一個任意大小的窗口,并在圖像中“滑動”它。在每一步中,我們分類窗口是否包含我們感興趣的對象。這就是我們所想的,對吧?那么,錨框?qū)⑹撬摹吧疃葘W習”版本。它更快,也更精確。

我們不只是滑動一個窗口,而是同時滑動一組不同大小和形狀的窗口。有些是小的用于小物體,有些是大的用于大物體,有些是高而瘦的用于人,有些是短而寬的用于公交車。

這些預定義的“窗口”就是錨框。它們就像你放在圖像上的一堆模板。我們不需要到處搜索;我們只需檢查每個模板(錨框)是否適合(或接近適合)一個物體。然后,我們的模型學會調(diào)整這些模板(錨框)以完美匹配它找到的物體。

一、定義

錨框是預定義的各種大小和寬高比的邊界框,作為目標檢測的參考點。模型不是從頭開始預測框,而是調(diào)整這些錨框以更好地適應實際物體,從而提高檢測的準確性和效率。

1. 錨框與邊界框

首先,我們?nèi)∫粋€錨框,并系統(tǒng)地將其放置在整個圖像上,類似于滑動窗口方法。

然而,注意到這些錨框中沒有一個完美匹配圖像中的實際物體。由于我們只使用一種形狀和大小的錨框,它無法捕捉到不同尺寸和寬高比的物體。因此,僅靠這種方法不足以進行準確的目標檢測。

架構(gòu)看起來更像這樣;錨框應用于特征圖,然后它們被細化為邊界框

2. 關于錨框

  • 錨框應用于特征圖,而不是直接應用于圖像。
  • 錨框幫助生成邊界框,但它們本身不是最終的邊界框。

二、什么是特征圖?

特征圖是由卷積神經(jīng)網(wǎng)絡(CNN)創(chuàng)建的圖像的處理版本。它們在不同細節(jié)層次上捕捉重要模式,如邊緣、紋理和物體形狀。錨框不是放置在原始圖像上,而是放置在特征圖上,使模型能夠更有效地進行預測。

三、為什么錨框應用于特征圖而不是圖像?

1. 計算效率

將錨框直接應用于圖像意味著在每個可能的位置放置數(shù)千甚至數(shù)百萬個錨框,導致巨大的計算成本。

相反,特征圖比原始圖像小得多,因為卷積層在下采樣圖像的同時保留了重要信息。

示例:

  • 假設我們有一個512×512的圖像。在每個像素上放置錨框意味著評估262,144個位置(512×512)。
  • 如果特征圖下采樣到32×32,我們現(xiàn)在只需要評估1,024個位置,使計算速度提高256倍。

2. 更豐富的特征表示

特征圖包含由CNN提取的高級信息,如邊緣、紋理和物體部分,這有助于更準確地檢測物體。

如果我們將錨框直接放置在原始圖像上,它們將僅依賴于像素強度,這缺乏目標檢測所需的更深層次理解。

3. 尺度不變性(有效檢測小和大物體)

目標檢測中的一個巨大挑戰(zhàn)是物體有不同的尺寸。有些物體可能小而遠,而有些物體可能大而近。如果我們將錨框直接放置在圖像上,它們將具有相同的尺度,使得檢測不同尺寸的物體變得困難。如果我們將錨框直接放置在圖像上,它們將具有固定的大小,并且不會調(diào)整以適應不同物體的大小。

示例:

想象我們正在嘗試檢測圖像中的汽車:

  • 遠處的小汽車可能是30×30像素。
  • 靠近攝像頭的大汽車可能是300×300像素。

如果我們只使用一個固定大小的錨框(例如100×100像素),它將無法正確匹配小汽車和大汽車:

  • 100×100的框?qū)τ谛∑噥碚f太大,可能包括背景。
  • 100×100的框?qū)τ诖笃噥碚f太小,無法覆蓋整個物體。

當圖像通過CNN時,它會在不同層次創(chuàng)建多個特征圖:

  • 早期層捕捉小細節(jié)(例如邊緣、角落)。
  • 深層捕捉更大的模式(例如物體的形狀)。

通過在特征圖上放置錨框,模型可以自動調(diào)整以檢測:

  • 使用精細特征圖(早期層)檢測小物體
  • 使用抽象特征圖(深層)檢測大物體

(1) 早期層 — 檢測小物體

  • CNN的早期層捕捉精細細節(jié),如邊緣、紋理和小模式。
  • 這些層保留了更多的空間信息(即圖像的精細細節(jié))。
  • 因此,它們擅長檢測小物體。
  • 小錨框放置在這些層上以檢測圖像中的小物體。

示例:

想象我們正在檢測圖像中的汽車。遠處的小汽車可能只有30×30像素。

  • CNN的早期層仍然具有高分辨率,這意味著像這樣的小汽車仍然可以被檢測到。
  • 在這一層使用一個小錨框(例如16×16像素)以匹配物體大小。

(2) 深層 — 檢測大物體

  • 隨著圖像深入CNN,特征圖變得更小,但它們代表更復雜的特征(如物體的整體形狀而不是精細細節(jié))。
  • 由于這些層看到更大的模式,它們更擅長檢測大物體。
  • 較大的錨框放置在這些深層以檢測大物體。

示例:

前景中的大汽車可能是300×300像素。

  • CNN的深層將有一個較小的特征圖,代表大尺度模式。
  • 在這一層使用一個大錨框(例如128×128或256×256像素)以檢測較大的物體。

(3) 多尺度錨框 — 覆蓋所有尺寸

我們不在特征圖的不同層上只使用一種大小的錨框,而是應用多種大小的錨框。這樣,我們可以在同一圖像中檢測小物體和大物體。

多尺度錨框示例:

在CNN的不同層,我們可能放置以下大小的錨框:

  • 16×16像素用于小物體
  • 32×32像素用于中等大小的物體
  • 128×128像素用于大物體

(4) 兩階段檢測器中的更快區(qū)域提議

在像Faster R-CNN這樣的模型中,區(qū)域提議網(wǎng)絡(RPN)僅在特征圖上應用錨框,生成較少但高質(zhì)量的對象提議。

這減少了在后續(xù)階段需要進一步細化的區(qū)域數(shù)量,提高了速度和效率。

示例:

不是在原始圖像中評估100,000個可能區(qū)域,RPN可能會從特征圖生成2,000個高置信度的提議,從而加速檢測流程。

四、錨框是如何生成的?

雖然錨框應用于特征圖,但我們?nèi)匀恍枰獩Q定它們的形狀、大小和寬高比。關鍵問題包括:

  • 所有錨框都應該是垂直矩形,還是應該有一些是正方形?
  • 最小和最大的錨框大小應該是什么?
  • 我們?nèi)绾未_保檢測到小而遠的物體和大而近的物體?

為了捕捉不同尺度和形狀的物體,我們使用一組多樣化的錨框。這些框需要仔細選擇以與數(shù)據(jù)集中常見的物體對齊。

五、如何選擇錨框?

選擇錨框涉及手動設計和數(shù)據(jù)驅(qū)動優(yōu)化的結(jié)合:

手動選擇:

  • 基于數(shù)據(jù)集中物體的先驗知識,我們定義一些常見的錨框形狀和大小。
  • 例如,如果檢測行人,我們可能會使用高而窄的框。如果檢測汽車,我們可能會使用更寬的框。

使用K-Means聚類:

  • 我們不是手動選擇所有錨框,而是可以使用K-Means等聚類算法分析數(shù)據(jù)集。
  • 該算法將相似形狀和大小的物體分組,幫助我們找到最常見的邊界框尺寸。
  • 通過選擇K個錨框模板,我們確保模型在不同物體大小上表現(xiàn)良好。

六、在目標檢測中生成錨框

一旦確定了錨框的大小和寬高比,我們生成多個不同大小和變化的錨框。這些變化包括:

  • 不同大小(例如(16,32), (32,32), (32,16))
  • 不同寬高比(例如1:1, 1:2, 2:1)
  • 不同尺度(例如1x, 2x, 3x),這些尺度放大或縮小框

這導致了一組大量的錨框,確??梢杂行У貦z測各種形狀和大小的物體。

七、在推理過程中如何生成錨框?

生成錨框的確切方法取決于所使用的目標檢測算法。

示例:Faster R-CNN和區(qū)域提議網(wǎng)絡(RPN)的作用

在Faster R-CNN中,區(qū)域提議網(wǎng)絡(RPN)負責生成潛在的對象位置。

RPN如何與錨框一起工作:

(1) 特征提取

  • 輸入圖像通過卷積神經(jīng)網(wǎng)絡(CNN)提取特征圖。

(2) 將錨框應用于特征圖區(qū)域

  • 在特征圖的每個位置上,放置多個不同大小和寬高比的錨框。
  • 這些錨框作為檢測對象的起點。

(3) 錨框細化(回歸+分類)

  • RPN預測調(diào)整(回歸)以細化錨框,使其與實際對象對齊。
  • 它還分類每個錨框是否包含對象。
  • 只有最有希望的框(稱為區(qū)域提議)被傳遞到下一步。

八、錨框變化示例

假設我們定義了一個16×16大小的錨框,并應用:

  • 兩種寬高比:1:1, 1:2, 和2:1
  • 兩種尺度:1x和2x

這導致每個區(qū)域有6個錨框:

  • 16×16 → 1:1比例的方形框,尺度1
  • 16×32 → 1:2比例的高框,尺度1
  • 32×16 → 2:1比例的寬框,尺度1
  • 32×32 → 1:1比例的方形框,尺度2
  • 32×64 → 1:2比例的高框,尺度2
  • 64×32 → 2:1比例的寬框,尺度2

這確保我們覆蓋多種物體形狀(方形、寬、高)和多種物體大小(小到大)。

  • 小物體(例如32×32)
  • 中等物體(例如128×128)
  • 大物體(例如512×512)

通過使用多樣化的錨框,模型可以準確檢測小而遠的物體和大而近的物體。

九、從錨框到邊界框

錨框不是最終的邊界框;它們只是預定義的參考形狀,用于幫助模型預測實際物體位置。為了將錨框轉(zhuǎn)換為最終的邊界框,模型根據(jù)圖像中的物體調(diào)整(或“回歸”)它們。讓我們通過一個示例逐步分解這個過程。

步驟1:在特征圖上生成錨框

  • 圖像首先通過CNN傳遞,提取不同層的特征圖。
  • 在每個特征圖上,每個空間位置放置多個不同大小和寬高比的錨框。
  • 每個錨框作為物體可能位置的起點。

示例:

假設我們有一個10×10的特征圖,在每個位置上放置3個不同大小的錨框:

  • 小框:32×32像素
  • 中框:64×64像素
  • 大框:128×128像素

由于我們有100個空間位置(10×10特征圖)和每個位置3個錨框,我們最終得到300個錨框。

步驟2:預測物體得分

評估每個錨框以確定是否包含物體。

  • 分類頭為每個錨框分配一個概率得分。
  • 如果得分高,意味著框可能包含物體。
  • 如果得分低,則忽略。

示例:

  • 模型預測在特征圖(5,5)位置的64×64錨框有80%的概率包含汽車。
  • 該位置的其他錨框被忽略,因為它們的概率較低。

步驟3:調(diào)整錨框(邊界框回歸)

即使錨框接近物體,它也可能沒有完美對齊。因此,模型調(diào)整(或“回歸”)錨框坐標以更好地適應物體。

模型為每個錨框預測四個調(diào)整(偏移):

  • Δx — 水平移動中心的距離。
  • Δy — 垂直移動中心的距離。
  • Δw — 調(diào)整寬度的距離。
  • Δh — 調(diào)整高度的距離。

新的邊界框坐標計算如下:

示例:

  • 原始錨框在(5,5)位置,大小為64×64像素。
  • 模型預測Δx = 0.1, Δy = -0.2, Δw = 0.05, Δh = -0.1。
  • 應用這些調(diào)整后,錨框稍微移動并調(diào)整大小以更準確地匹配汽車。

步驟4:去除冗余框(非最大抑制)

許多錨框可能會預測同一個物體,略有變化。

模型應用非最大抑制(NMS)去除冗余框,只保留最好的一個。

選擇置信度最高的邊界框。

示例:

  • 有5個重疊的邊界框圍繞汽車,具有不同的置信度得分(80%, 75%, 60%等)。
  • 模型保留置信度最高的框,去除其他框。

最終結(jié)果

經(jīng)過所有這些步驟,我們得到一個最終邊界框,緊密地圍繞檢測到的物體。

示例總結(jié):

  • 在特征圖上放置了一個64×64的錨框。
  • 模型以80%的置信度檢測到一輛汽車。
  • 模型調(diào)整了錨框以正確匹配汽車。
  • 使用非最大抑制(NMS)去除了其他重疊框。
  • 最終的邊界框準確地圍繞圖像中的汽車。

【參考資料】

終于理解目標檢測中的錨框(2D和3D):https://www.thinkautonomous.ai/blog/anchor-boxes/

責任編輯:趙寧寧 來源: 小白玩轉(zhuǎn)Python
相關推薦

2025-01-02 10:00:00

2022-10-14 16:18:40

MobileNetAndroid端模型訓練

2023-12-19 16:01:40

深度學習人工智能目標檢測

2024-08-01 08:41:08

2024-11-18 17:31:27

2024-08-01 09:00:00

目標檢測端到端

2017-04-25 15:12:45

神經(jīng)網(wǎng)絡SSD檢測

2023-11-22 13:45:37

計算機視覺數(shù)據(jù)預處理

2017-10-02 16:13:47

深度學習目標檢測計算機視覺

2025-01-22 13:15:10

2024-07-05 10:41:30

目標檢測算法

2024-07-04 09:22:24

2009-09-15 16:32:00

2024-11-08 15:37:47

2024-07-17 09:32:19

2024-10-09 17:02:34

2025-02-24 13:00:00

YOLOv12目標檢測Python

2019-08-01 12:47:26

目標檢測計算機視覺CV

2024-07-02 10:04:09

2017-09-20 16:25:00

深度學習視覺領域計算機
點贊
收藏

51CTO技術(shù)棧公眾號