電腦是怎麼辨識物體的呢?當紅的YOLO又是什麼?

隨著深度學習技術的進步,許多人開始將深度學習的方法融入到物件辨識中,近一步提升物件辨識的速度與效果,也能看到許多深度學習專案的應用陸續展開。但在執行專案前,團隊成員必須對深度學習有一定程度了解,才能為專案打下良好的知識基礎。人工智慧科技基金會工程師粘美玟從物件偵測領域切入,淺要說明模型是如何辨識出圖像?同時也將介紹近年十分熱門的YOLO演算法。

電腦辨識圖片的四種任務

透過深度學習,讓電腦不再仰賴人類知識,而是從大量的圖片與標籤中自行找出重要元素或特徵,有效地判斷出圖片是屬於哪些重要類別。深度學習應用中的圖像處理技術,大致可拆分為單一物件處理及多重物件處理兩大類型,接著又可再細分為以下四種任務,技術難度由上至下增加:

單一物件處理
1.Classiflcation分類任務:主要是將一張圖片輸入電腦後,電腦再將圖片中的關鍵物件進行分類,例如判斷圖片中的影像為「貓」。

2.Classification+Localization:近一步以方框框出圖片中關鍵物件的位置,例如框出圖片中「貓的位置」。

多重物件處理
3.Object Detection物件辨識:在一張圖片中以方框框出多個物件,也能辨識出物件的類別及位置。

4.Instance segmention:不只是框出物件,而是精準將物件的輪廓描繪出來。

由於工作或是生活場景中,我們在一張圖片中並不會只關注單一物品,更多時候,可能會對許多物件感興趣,這時候結合深度學習方法的物件辨識也就能幫上忙。不僅能幫助我們在一張圖片中辨識多個目標、多個物件;還能幫助我們得到目標位置資訊。

但在這些優點之外,仍有些問題需要克服,例如訓練較為耗時且耗資源,或是為了讓電腦可以更精準,前置的資料標記作業也更繁瑣。為了讓電腦能精準抓出關鍵物件,在圖片輸入電腦前,在每一張圖片上,人工標示出圖中所在意的物件及類別,之後再將標記後的圖片輸入電腦,讓電腦從資料中學習。

YOLO演算法介紹

近幾年十分熱門的YOLO演算法是個準確且快速的物件辨識模型,YOLO是「You Only Look Once」的簡寫。目前共推出四個版本,以及輕量化tiny版本。如果想做物件辨識,但資源不多的人可以嘗試使用tiny版本。

過往的物件辨識採用兩階段式的分工,也就是使用兩個神經網路,第一個神經網路負責找出圖片中的關鍵物件,利用候選框標示後再給下一個模型進行分類。但是,這種作法在速度上無法滿足即時性的要求,因此,YOLO(v1)提出只用一個網路同時做物件辨識及分類判斷。它是怎麼做的呢?

首先,將輸入的圖片切成S*S個網格,每個網格(grid)會產生類別機率、候選框資訊及信心度結合NMS產生結果。

上述提到的機率指的是,電腦會針對每個格子計算重要的資訊,分別產出格子中每個類別機率。例如希望電腦協助找出狗跟貓兩個類別的物件,電腦就會預測每個格子中是貓或狗的機率有多少?最後就能以這幾個機率挑選出格子最終的類別。

候選框資訊指的是,當電腦尋找圖片哪些地方可能包含所需物件時,候選框的格子中所產出的訊息。

信心度指的是,當電腦標示出有可能符合物件的候選框時,必須要篩選出真正符合物件的候選框並保留,每個候選框內包含物件的信心程度多寡就是信心度,若信心度較低的候選框就會被排除掉。

NMS是為了消除多餘的候選框,從而找到最佳的物件框。電腦會先想辦法把所有有可能候選的框都挑選出來,有可能一個物件上會有很多框。之後利用NMS考慮候選框重疊程度,保留信心度最高的候選框,再進行下一步將框分類。

由於電腦在更新參數時,會考慮到候選框損失函數、格子內是否有物件的信心值,以及每個格子類別的機率等因素,並與實際值對照並進行參數更新,以幫助模型學習。YOLO利用這個概念,將物件辨識分類跟框預測問題轉成迴歸預測效果,也讓物件辨識的效率大大提升。

YOLO多尺度預測(v3、4)則是採用三個分支網路,分別能預測三種大小的物件,讓小物件的預測變得更精準。同時也加入其他演算法的優點,像是採用FPM技術改善在小物件上的偵測效果。

此外,在不同尺寸下,每一個格子(gird)都會預測三個候選框,一張圖片在電腦中會被分成三種不同尺寸的格子,每個格子都預測三個候選框資訊,一張照片可能會產生一萬多個候選框。接著,電腦會計算並挑選出那些框是有物件且保留。YOLO的計算量很大,但也因為這樣才能更精準地找出物件。

從YOLO中,我們也看到了許多值得深度了解的概念,例如Data Augmentation、Mosaic、Activation Function。Data Augmentation主要是圖片輸入電腦學習前的前置處理,可能是平移或旋轉的動作產生新圖片,這些新圖片能幫助電腦在學習階段看到更多樣的圖。

Mosaic則是YOLO v4的原創方法,主要是將四張圖片拼成一張圖片大小,對電腦來說,這張圖片相當於學習了四張圖片的資訊量。不僅增加batch size、大量提升小物件的數量,也因為拼接圖片的數量,所以大幅增加背景的豐富度。

Activation Function:深度學習其實是由許多神經元組成的神經網路,每個神經元所做的就是收集前面神經元給予的資訊,彙整後再送給下一個神經元。訊息傳送的過程會先將訊息(數值)透過非線性Activation Function進行轉換。YOLO v4選擇Mish作為Activation Function,當訊號大於0就會正常輸出,如果是負值就會壓縮到趨近0,此做法可以幫助電腦在負值時直接輸出0,具有更好的收斂效果。

綜觀來看,目前物件辨識的任務目標仍以精準、快速為主,但是隨著任務變得更為複雜,會需要更多的評估指標(Metrics)。在物件偵測中,評估指標可以分為探討物件框的框選範圍是否恰當?或是探討物件框的類別是否恰當?相對應可以採用的指標會是mAP以及IoU。亦有其他更新的指標可以選擇,如AP50、GIoU、CIoU等等。

精彩影片分享: