iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 12
0
AI & Data

30 天學會深度學習和 Tensorflow系列 第 12

11. 深度學習甜點系列:一眼認出的物件辨識演算法

  • 分享至 

  • xImage
  •  

物體辨識的三個主要問題:

在電腦視覺的研究中有三個主要的難題,分別是影像分類(Image classification),物件定位(Object Localization)以及物件偵測(Object Detection)。

這三個主要問題的差別可以由下面的課程投影片截圖來說明:

Computer Vision Problem and Bounding Box illustration
圖一:圖中左方描述影像分類的問題。圖片中間,則是物體定位問題。而圖片右方則是物體偵測問題。物體定位和偵測的任務時,會輸出紅色框框的 bounding box 來標注偵測到的物件位置。

影像分類中的輸出主要是一個二元分類器,其輸出是判定輸入的影像是否含有特定的物件。也可以建立一個多類別分類器,使該分類器的輸出為所有類別的預測機率,並取擁有最高預測機率的類別作為該物體的預測類別。

物體定位與物體偵測則是更進一步的標出物件所在位置,而物件定位與物件偵測不同的地方,在於物件定位的輸入影像為單一物件,而物件偵測的輸入影像則可能有零到多個物件。當物體偵測演算法偵測到物件後,會用一個矩形的 bounding box 來標注偵測物件在影像中所在位置。

這個 bounding box 有四個參數,分別為矩形中心的座標位置, bx, by 和矩形的長寬: bh, bw。如圖中圍住車子的紅色框框,或藍色框框所示。

一個多類別的影像分類器目標向量,為含有分類標籤編碼的一維向量,如,行人(C1),車(C2),摩托車(C3)和不含任何物件的背景,或未能偵測到物體的(C4)。影像的目標向量在屬於該類別的向量元素值唯一外,其他皆為零。

物件定位則需要輸出 bounding box 的四個參數, bx, by, bh, bw 的預測值。目標向量包括 bounding box 資訊的多維矩陣。

物體偵測的目標向量除了分類標籤編碼的一維向量還需加上 bounding box 的四個參數預測,如圖左的 7x1 的 y 向量,便是表示單一訓練例子的目標標示向量。該目標向量內每一個元素所代表的是意義,由上而下是:該偵測到物體的機率(pc),bounding box 的四個參數(bx, by, bh, bw),是 C1 的機率,是 C2 的機率,以及最後 C3 的機率。

在物體偵測輸出中,不含任何物件的背景圖案,其偵測物體的機率(pc)會為零,所以在這個情況下等同於 C4 背景,因此也不需要對 C1,C2,C3 做分類預測,更不需要標示 bounding box。相對的,若 pc 為不為零,則 C1, C2 和 C3 的分類預測機率是基於偵測到物體的可能性所計算出的 conditional probability,或 p(Ck|pc>0)。在這個例子中,k 為 1, 2, 3。

先計算 pc,再算出各類別的 conditional probability,屬於階層式預測的一種。

我們可以見到圖中 y 向量的下方,各舉了一個實例:下方左是一個車子的目標標示向量,右方則是一個背景的目標標示向量。因為,背景的目標標示向量中,並沒有任何目標該被偵測,所以 bounding box 的四個參數則可以任意填入不可能的數字(如:-1 等等),在圖中則以 表示。

讀者讀到此難免疑惑,既然目標標示向量中的 bounding box 四個參數,事實上是代表一個面積,參數之間彼此依賴,不能各自獨立評量,那麼該如何對 bounding box 的預測準確度做評估呢?

在物體辨識中常用的一個 metric 為 Intersection over Union 或簡稱為 IoU。而 IoU 的計算可以見下圖:

IoU computation

可以看見上圖左中,為了要比較真正的(ground-truth) bounding box,和演算法預測出(predicted)的 bounding box,我們可以簡單的計算兩個 bounding boxes 的面積,並扣掉重複計算重疊的部份,以計算出聯集(Union)的總面積。而 IoU 這個 metric 則是計算重疊部分,或交集(Intersection) 在聯集中的比例有多少(上圖右)。

從上圖下中,可以看到不同的 IoU 大小對物體識別的能力做一個質性評估。但通常 IoU 能達到 0.5 已經算是不錯的預測,在 0.6 以上都會被考慮是比較嚴格的檢視條件。

在影像分類和物體偵測的競賽上,另外使用 Average Precision 和 Mean Aveage Precision (mAP) 作為評估模型的度量。

Precision 度量(分類器所回傳資料的比例,有多少資料標註正確)多用於在巨量資料中做搜尋,如使用 google 做字詞查詢,這個度量可以告訴模型建構者該模型的精準度,或以射箭比喻,Precision 是量測在射出的箭數中有多少箭是射中靶心。Precision 又可因為問題的困難程度,而決定使用前幾個最高預測機率的預測結果來計算 Precison,只要前幾個最高結果有涵蓋正確預測,便可以視為正確預測。如,比較分類器回傳的前五個最高預測機率結果,此 Precision 的變形計算又多簡寫為 P@5。

Recall 度量(在所有標註正確的資料中有多少比例,被分類器的回傳結果涵蓋),這個度量評量模型的正確度,或以流病篩檢為例,Recall 是量測在多少個患有流行性疾病的病患,有多少人是被成功檢測出。

透過取分類器的多少個最高預測,如 Top k 預測,k 為任一非零正整數,我們可以繪製一個考慮排名的 Precision - recall 曲線圖,並根據 recall 值的增加,計算出該曲線底下的面積。而此面積則稱為 Average Precision。

Average Precision 是評估單一預測物體的結果,平均多個物體的 top k 預測結果則被稱為 Mean Average Precision 多用於物體偵測中。為了能夠轉換 bounding box 四個參數實數比較成為分類器二元的輸出,我們可以將 IoU >= 0.5 的 bounding box 預測,視為預測器回傳一個正確的預測,反之則為錯誤。

了解物體定位和識別任務的輸出後,我們接著要介紹一個能即時做物體辨識的一個快速演算法,YOLO。YOLO 是 You Only Look Once 的簡稱,亦是關於 YOLO 演算法第一篇 paper 的標題。而比較起其他物體定位和識別的演算法, YOLO 之所以可以如此有效率並達到即時辨認的效能,在於這個演算法使用了以下幾個特點:

  1. Bounding Box Predictions:為了解決傳統運用重複且不同大小的 sliding window 來做特徵擷取的耗時作法,YOLO 將輸入影像分割成不重疊的格狀區域,每一網格都可當作一個較小的影像,輸出對應的物體辨識預測向量。在訓練影像中,若有物體的 bounding box 中心落在某一網格,則該網格負責預測該物體。該網格的預測器對該物體只輸出最多 B 個 bounding box 的預測,而每一個 bounding box 都有是否涵蓋該物體的信賴分數。若有偵測到物體,該格狀區域的預測器會一併輸出物體的分類機率。
    grid cells
  2. Non-Max Suppression:此演算法是為了解決物體辨識中常見重複預測問題。重複預測的問題是,在影像中的同一區域,被多個 bounding boxes 覆蓋,且以不同的機率辨認出物體。YOLO 先利用 IoU 定義出一個門檻值,來定義重複區域,通常為 IoU >= 0.5。其次找出比較的基準,那就是在此重複區域中,預測機率最高的 bounding box。接著捨棄與基準 bounding box 的 IoU >= 0.5 的 bounding boxes。

可見下圖看課程中所提到的實例:Non-Max Suppression

  1. Anchor Boxes:為了解決影像中多個物體重疊的問題,YOLO 使用不同形狀的矩形來作為 anchor boxes,並且使用物體的已知的形狀特性來增加識別度。如下圖所示,使用兩個 anchor boxes 來作為輸出。這兩個 anchor boxes 分別是適合偵測行人的瘦長矩形(Anchor box 1)以及適合偵測車子的胖短矩形(Anchor box 2)。和預測出的 bounding boxes 不同的是,這些 anchor boxes 會作為訓練的一部分,也就是目標標示向量,原先的長度會增長為 anchor boxes 數目的倍數。

anchor boxes
圖中使用兩個 Anchor boxes,原先僅有 8 個元素的 y 目標標示向量(三個目標物件),現在為 2 x 8 的長度。前 7 個是對於 Anchor box 1 的目標輸出,後 8 個則是 Anchor box 2 的目標輸出。

在言簡意賅地說明了 YOLO v2 的精髓後,下篇中,我們將要介紹其他物件辨識的演算法,並與 YOLO 做比較。

圖片來源:

  1. IoU 圖片解說來自於 PyImageSearch.com 的Intersection over Union (IoU) for object detection
  2. YOLO Grid Cell 圖片則來自Real-time Object Detection with YOLO, YOLOv2 and now YOLOv3
  3. 其他的圖片則來自吳恩達教授 Deep Learning Specialization @Coursera Course #4 Convolution Neural Network Week #3 Object Detection Lecture

上一篇
10. 深度學習甜點系列:全面啟動
下一篇
12. 深度學習甜點系列:物體辨識演算法小結
系列文
30 天學會深度學習和 Tensorflow30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言