Object Localization

  • classification & localization
    • 分類並定位
  • detection
    • 圖片可能有多個物件

Classification with Localization

除了 output 類別,還要 output bounding box

本課程 notation

  • 圖片左上角為 (0,0)
  • 圖片右下角為 (1,1)
  • bounding box
    • b_x, b_y:bounding box 中心座標
    • b_h, b_w:bounding box 高度 & 寬度

實際上的 output 向量:

  • :有偵測到東西嗎? (background 以外的東西都算) 有的話要輸出下列的向量:
    • :有東西的話要輸出 bounding box
    • :那是什麼東西? (這邊假設東西只有一個)

label表示

圖片中如果沒有東西

  • 其他 don't care,填問號
    • 隨便 output 都可以的意思

Loss function

如果有東西 (即 )

如果沒東西 (即 )

上面是簡單說明,其實

  • 可以用 logit loss
  • 可以用 softmax loss
  • 可以用 squared loss

但是上面這些 loss 的值域都不一樣欸,要怎麼 balance 這些 loss?

Landmark Detection

以 face landmark detection 為例: 若有 64 個特徵點,

output (129 = 1 + 64*2):

  • : 有臉?
  • 64個點的 x、y 座標

Object Detection

Sliding Window Detection

  • 訓練一個 ConvNet,分類是否有該物件
  • 用小的 sliding window 讓他去掃整張圖,用ConvNet分類
  • 然後用更大的 sliding window 讓他去掃整張圖,將圖片縮放至 ConvNet 能吃的大小然後分類
  • Computational Cost very high
    • 因此比較適合簡單的 classifier,例如以往人們手工提取特徵然後套到線性分類器
    • 不過這個缺點是能改善的,只要用 convolution 的方法實作 sliding window 即可,見下個影片

Convolutional Implementations of Sliding Window

先介紹如何將 fully connected layers 用 convolutional layers 實作

Turning FC layers into Convolutional layers

若希望 FC 的 output size 為 n 就使用 n 個 filter,filter size 和 input size 一模一樣

  • channel 數本來就該一樣
  • 長 & 寬要一樣
  • 每個 filter 的 output size 就是 1

數學上,這種 implementation 和 FC 一模一樣

Convolution implementation of sliding windows

假設要掃 16x16x3 的 image,而訓練好的 ConvNet 就是上面提到的 input size = 14x14x3;output size = 1x1x4 的 4-class 分類器

  • 要 sliding window 之後輸入 ConvNet 太耗時了,而且許多運算都重複
  • 直接拿 ConvNet 的第一層 filter 來掃整張圖片,後面的運算也都和 ConvNet 相同,只是每層的 output size 都不一樣了,最後的 output size = 2x2x4
    • 2x2 的 output 分別對應到本來應該輸入到 ConvNet 的四個位置的圖片輸出

然而這種方式的 bounding box 位置不夠準,下個影片解決此問題

Bounding Box Prediction

YOLO 基本觀念

  1. 將圖片分成很多格子

    • 此 example 為 3x3
  2. 然後應用之前的 Classification with Localization,對每個格子都做 training

    • 只關注物件中心點是否出現在格子內
  3. output size = 3x3x8
    • 3x3 是格子數
    • 8 是 Classificatoin & Localization 的 output
  • 實務上會讓格子比 3x3 密,例如 19x19,這樣可以避免多個物件在同個格子
  • 結合了上面介紹的兩種方法
    • Classification with Localization
    • Convolution implementation of sliding windows,再跑格子的時候同樣不是一個一個輸入到 ConvNet,而是一次 conv 完成
  • YOLO 很快,甚至可以即時

bounding box vectors

  • 以格子的長寬為1,左上(0,0),右下(1,1) 為基準

下面介紹一些讓 YOLO 更強大的 trick

Intersection Over Union

Evaluating Object Localization

  • predicted bounding box 和 truth bounding box

    • 計算交集
    • 計算聯集
    • 計算 交集/聯集 intersection over union (IoU)
  • 慣例:'Correct' if IoU > 0.5

Non-max Suppression

可以確保演算法對同一個 object 只偵測一次

  1. 對於 19x19 每個格子都會有一個 output
  2. 同個 object 可能被不同格子都被偵測到
  3. 因此可能有多個 bounding box (以及機率)被輸出
  4. 先針對整張圖所有 bounding box 裡面 機率最高的 bounding box,高亮之後做
    • 針對重疊率(IoU)高的那些bounding box,機率低的會被抑制/標暗
    • 細節:機率為
  5. 之後再從整張圖的 bounding box(尚未被標記亮暗)中找出機率最大的,重複步驟 4.
  6. 標完全部之後,標亮的就是最終 prediction,搭拉~~

Algorithm

  • 假設只有一種物件要偵測,就不會有
  • 若有多種物件要偵測,則要對各物件各自獨立做 non-max suppression

Anchor Boxes

如果一個格子就想偵測多個 object 呢?

anchor box 同時也讓演算法能夠應付特殊情況 (極高or極胖的 object)

這邊沒很懂

  1. 先定義好 n 個 anchor box (本例 n=2),shape 也長得不一樣
  2. y 的維度增加成
    • 8 是本來的 output size
    • 第 n 個 outputs 對應到第 n 類的 anchor box
    • label 是分配給形狀像那類 bounding box 的向量

Algorithm

  • 現在 output 從 3x3x8 變成 3x3x2x8

Example

(img)

  • 沒法處理一個格子裡面的 object 數量大於 anchor box 數量
  • 也沒法處理一個格子裡面的不同 object 形狀都同一個 anchor box 一樣

後來的 YOLO 改善

  • 用 K-means 將兩種想找的 object 形狀結合起來,用來找 anchor (WTF

YOLO Algorithm

Training

y 的 shape:

  • 3x3: 格子
  • 2: anchor box 數量
  • 8: 以及類別數量

Predicting

  • 先 output 所有 anchor box 的 bounding box
  • 其他大概照舊

(Optional) Region Proposals

image 中某些地方顯然沒什麼有用的東西,但 NN 仍然會去掃

R-CNN (regions with CNNs)

  1. 先做 segmentation,然後發現一些區塊可能是有東西的
  2. 再丟到 ConvNet

Faster Algorithms

  • R-CNN 很慢
    • 註:R-CNN 不全然信任我們給的 bounding box,它自己也會給出一個 bounding box (???啥),所以 bounding box 滿準的
  • Fast R-CNN 應用了前面提到的 Convolution implementations of Sliding window
    • 但是 propose region 部分的速度還是很慢
  • Faster R-CNN
    • 使用 Convolutional network 來 propose region (之前是使用傳統的 segmentation algorithm 來 propose)

results matching ""

    No results matching ""