### [AI / ML領域相關學習筆記入口頁面](https://hackmd.io/@YungHuiHsu/BySsb5dfp) ### Object Detection #### [[Object Detection_YOLO] YOLOv7 論文筆記](https://hackmd.io/xhLeIsoSToW0jL61QRWDcQ) ### ViT與Transformer相關 #### [[Transformer_CV] Vision Transformer(ViT)重點筆記](https://hackmd.io/tMw0oZM6T860zHJ2jkmLAA) #### [[Transformer] Self-Attention與Transformer](https://hackmd.io/fmJx3K4ySAO-zA0GEr0Clw) --- 在計算機視覺領域,物件檢測演算法主要分為兩大類:基於錨點(anchor-based)和無錨點(anchor-free)。以下是這兩種方法的概念和數學公式: ### 基於錨點的物件檢測 (Anchor-Based Object Detection) 1. **概念**:基於錨點的方法依賴於預先定義的錨點盒子(anchor boxes)。這些錨點是固定大小的盒子,演算法使用它們作為參考點。其主要思想是調整這些錨點盒子,使其與圖像中的實際物體對齊。 2. **過程**:在訓練過程中,演算法學習調整這些錨點盒子的大小和長寬比,以匹配物體。這涉及預測兩組值: - **錨點盒子的偏移量** (Offsets),用於匹配物體的形狀和位置。 - **類別概率** (Class probabilities),用於識別盒子內的物體類型。 3. **範例**:著名的基於錨點的演算法包括 Faster R-CNN、SSD (Single Shot MultiBox Detector) 和 YOLO (You Only Look Once)。 ### 無錨點的物件檢測 (Anchor-Free Object Detection) 1. **概念**:無錨點方法去除了預定義錨點盒子的需求。相反,它們直接預測物體的邊界或關鍵點。 2. **過程**:這些方法通常使用關鍵點(如物體的中心或角落)來定義物體的位置和形狀。演算法預測: - **物體的位置**(例如,中心點)。 - **形狀屬性**(例如,寬度和高度或從中心點到角落的偏移量)。 3. **範例**:流行的無錨點演算法包括 CenterNet、CornerNet 和 FCOS (Fully Convolutional One-Stage Object Detection)。 - 數學表示 1. **基於錨點**: - **錨點調整Anchor Adjustment**:$\Delta x, \Delta y, \Delta w, \Delta h$ - 這裡,\(\Delta x, \Delta y\) 是錨點中心的偏移量,\(\Delta w, \Delta h\) 是寬度和高度的尺度調整。 - **公式化**:給定一個錨點 $(x_a, y_a, w_a, h_a)$ 和一個真實物體盒子 $(x_g, y_g, w_g, h_g)$,偏移量計算為: $\Delta x = \frac{x_g - x_a}{w_a}, \Delta y = \frac{y_g - y_a}{h_a}$ $\Delta w = \log\left(\frac{w_g}{w_a}\right), \Delta h = \log\left(\frac{h_g}{h_a}\right)$ 2. **無錨點**: - **關鍵點檢測Key Point Detection**:在像 CenterNet 這樣的模型中,如果 $(x_c, y_c)$ 是物體的中心,$(w, h)$ 是其寬度和高度, 模型直接預測這些值。 - **公式化**:輸出是關鍵點的熱圖和一組獨立的層,用於寬度和高度預測: $\text{Heatmap}:P(x_c, y_c | \text{物體類別})$ $\text{Size}:(w, h)$ 這些概念和數學上的區別根本改變了這些演算法對物件檢測問題的處理方式,影響它們在計算機視覺任務中的效率、準確性和適用性。基於錨點的方法通常是更傳統且廣泛使用的,而無錨點方法由於其簡潔性和在特定場景中的有效性而越來越受歡迎。 無錨點(anchor-free)物件檢測中的熱圖(heatmap)生成和基於錨點(anchor-based)與無錨點方法在特徵圖(feature maps)萃取與運用上的異同,如下所述: ### 無錨點物件檢測中的熱圖生成 1. **熱圖生成過程**:在無錨點物件檢測方法中,例如 CenterNet,熱圖用於表示圖像中物體關鍵點(通常是中心點)的位置。這個過程涉及以下步驟: - **特徵圖生成**:首先,通過卷積神經網路(Convolutional Neural Network, CNN)提取圖像的特徵圖。 - **熱圖預測**:然後,對這些特徵圖應用額外的卷積層,以預測每個類別的物體中心點的熱圖。 - **像素級預測**:熱圖中的每個像素值代表該位置是物體中心的概率。因此,熱圖的大小與輸入圖像的空間分辨率相關。 2. **後處理**:在預測熱圖後,通常會進行非最大抑制(Non-Maximum Suppression, NMS)等後處理步驟,以確定最終的物體中心點。 ### 基於 Transformer 的物件檢測(Anchor-Free) 1. **特點**:這些方法不依賴於傳統的錨點盒子。相反,它們利用 Transformer 的自注意力機制來捕捉圖像中不同部分之間的關聯,從而直接識別和定位物體。 2. **運作方式**:DETR 等模型使用一組學習對象查詢(object queries)與 Transformer 的解碼器結合,來直接預測一組有限數量的物體邊界框和類別。這種方法不需要錨點盒子或複雜的後處理步驟,如非最大抑制(NMS)。 ### SAM (Segmentation Anything) 模型的物件檢測 1. **概念**:SAM 模型是一種結合了物件檢測和圖像分割的方法。它旨在能夠對任意類別的物體進行檢測和分割,無論這些類別是否出現在訓練數據中。 2. **框架**:SAM 模型可以在基於 Transformer 的物件檢測框架下理解。它結合了自注意力機制和其他技術,以提高對新類別物體的識別和分割能力。 3. **物件檢測與分割**:在這種模型中,物件檢測不僅僅是定位和識別物體,還包括對物體的精確邊界進行分割,這對於未見過的類別特別有用。