物件偵測 — CenterNet 介紹

Source: Deep Learning on Medium

整體結構有點像是Multi-Scale的機制 前半部份透過卷積層(Conv)和池化層(Pooling)來向下取樣(DownSampling) 獲得解析度較低的特徵 使計算複雜度降低 然後再利用向上取樣(UpSampling) 來恢復影像大小 使其有能力來預測位置 而CoenerNet以其作為backbone 萃取影像的特徵 這邊就不詳細解釋 如果有興趣的還可以閱讀 yolo的Multi-Scale機制 或是Autoencoder的結構及概念來加深印象

第二部份 Corner Prediction Module

這邊第二部份使用的是將左上角跟右下角進入輸出層 並且從圖中可以看到輸出後有3個分支 分別為Heatmaps Embeddings以及Offsets

首先我們要知道如何定義所謂角頂點的

CornerNet 是使用一個叫作Corner Pooling的技術

Corner Pooling透過萃取特徵圖水平方向以及垂直方向最大值進行求和 如下圖

目標框具4個邊 而用這樣萃取出左上跟右下角後 也能獲取邊界框的4個邊 來進行角的定位

(1)Heatmaps

上圖為Hourglass Network 裏面使用的Heatmaps機制 來預測人體的關鍵點

而在CornerNet裏面運用了其方法 轉化成用於生成目標的位置圖 其中heatmaps包含了C個通道 這邊的C代表為物件類別

(2)Embeddings

而Embeddings代表的為每一個位置的特徵向量 用來判斷目標點的匹配程度 可以透過特徵向量來判斷兩個目標點是否屬於同一物物件

而這則是使用了Associative Embedding的方法

(3)Offsets

Offests則是表示了位置點的偏移量 這邊的偏移量大部份由heatmaps映射回原始影像後產生的量化映射誤差

這邊有興趣的可以閱讀Faster-RCNN的ROIAlign以及Yolov3用於預測bounding box的offest機制

CenterNet

而後出現的CenterNet改進了CornerNet的不足之處

由於CornerNet是使用角點來偵測物體 代表他大部份使用了物件的邊緣特徵來進行預測 其容易產生一些無效框 而且由於是使用角點 也使得偵測的中心位置不在目標上 因此CenterNet在CornerNet的基礎上再加上一個預測物件中心點來濾除無效框 並且也使其除了邊緣特徵外也能力用物件內部特徵

而CenterNet的結構跟CornerNet一樣分為兩大部份

Hourglass Network

Prediction Module

而有別於CornerNet 在Prediction Module的部份加入了Center Pooling

如上圖 可以看到CenterNet 在Corner Pooling 多加一個Center Pooling

這邊大家可以認真看一下圖

Center Pooling分為兩條路線 分別求水平方向(透過串聯Right Pooling 以及 Left Pooling )以及垂直方向最大值並進行相加