AI – Yolo Model Training – Labeling Intro

簡介

最近大家常常說未來來的趨勢是AI、5G、AIot,而在之前我們有區隔自動化與AI的區別,AI是比自動化更有價值的技術;然而AI在各個領域都可以應用上,目前最常使用的就是影像辨識,在過去常使用到電腦視覺,透過像素、深度等等技術分析,可以認出人體的輪廓、肢體、手勢。而我們為什麼要將AI與電腦視覺融合呢?當然是要提升它的深度與廣度。深度是可以讓AI學習並準確的辨識物件;廣度則是可以辨識出非常多的物件。

而AI訓練電腦視覺的技術有很多,但在從前置→訓練→實測辨識,要考慮它的辨識率+辨識效能,所以目前最廣泛且容易上手的平台是Yolo,如下效能比教圖。而我們本篇就先討論一下AI CV Training的前置作業的一些方法與格式。

Labeling type

在做機器學習時,需要給電腦大量的資訊,透過大量監督式學習機制去分析「圖片、標註、像素座標」給予機器加分或扣分,進而扎實的訓練辨識。

常會聽到一句話「 Garbage In Garbage Out 」,意思是在透過訓練時,機器學習會認定你所標註的像素位置,記憶你標註的名稱並對應像素,反覆的去蕪存菁的一直過濾、篩選,進而產出高品質的Model來實測應用。

Labeling的款式也很多,必須依照不同的平台所制定的格式來做標註的動作,並且需要大量的樣本,小則幾百張,大則數萬張或上千萬張不等,而這種需要大量人力的動作勢必很需要有自動化標註工具。我們就先來看看有哪幾種款式吧。

Bounding Box:

Bounding box是最常見的標註方法於訓練的應用,把你要標註的物件在圖片中透過矩形的框框住,矩形左上角的𝑥和𝑦軸坐標以及矩形右下角的𝑥和𝑦軸坐標。

邊界框通常用兩個坐標(x1,y1)和(x2,y2)或一個坐標(x1,y1)以及邊界框的寬度(Width)和高度(Height)表示。或是你可以自己換算,已擁有x1 , y1的像素座標時將x1+width 變成x2,y1+height變成y2。

Polygonal Segmentation :

標註的形狀並不是像Bounding box是制式矩形。該款標註方式為多邊形分割是另一種數據註釋,其中使用複雜的多邊形而不是矩形來以非常精確的方式定義對象的形狀和位置。

Semantic Segmentation:

Semantic Segmentation是逐像素註釋,其中圖像中的每個像素都分配給一個類別透過顏色來區分。這些類別可能是行人,汽車,公共汽車,道路,人行道等,並且每個像素都具有語義,而我們在Unity LGSVL就是提供這個方式來辨識場景中物件。
Semantic Segmentation主要用於環境上下文非常重要的情況下。例如,它用於無人駕駛汽車和機器人技術,因為模型可以了解它們在其中環境中運行的狀況。

3D cuboids:

3D cuboids類似於帶有有關對象的其他深度信息的邊界框。因此,使用此標註方法,可以獲取對象的3D邊界,從而使系統能夠區分3D空間中的特徵,例如體積和位置。 這個標註方法是最常使用在自動駕駛汽車中,它可以使用深度信息來測量物體與汽車的距離。

Key-Point and Landmark:

Key-Point與Landmark用於圖像上創建數個點來檢測小的物體和形狀變化。這種類型的註釋對於檢測面部特徵,面部表情,情緒,人體部位和姿勢很有用。 有點像Kinect或是LeapMotion的感測方式,但只需要透過AI訓練則可體帶該專業硬體。

Lines and Splines:

顧名思義,這種類型是使用線條和样條線創建的標註。它通常在自動駕駛汽車中用於車道檢測和識別。

標註格式

經過了解標註的許多方法後,接下來要進入餵給AI訓練的資料格式,通常並沒有依定的格式,但Yolo確實有專用的格式,主要有以下三種:

Yolo TxT:

這是Yolo專用格式,也是最簡單的格式,當然也用最陽春的txt副檔名來儲存,介紹一下他的檔案與內容。如下圖,首先可以看到標註好之後她會產生你給予的標註名稱的類別檔案classes.txt(1)跟標註圖片名稱一樣的檔案(2)。

<object-class> <x> <y> <width> <height>

大家可以看到2-1標註座標明細,第一個欄位是對應classes的類別,以陣列空間模式來顯示該做標識對應什麼標註名稱;而後面的數值就是(x1,y1)(x2,y2)。

Pascal VOC:

Pascal VOC將所有資訊儲存在XML文件中。以下是用於對象檢測的Pascal VOC標註範例。 我們可以看到下圖我歸納的幾個重點,1.是圖片的資訊,圖片的名稱、資料夾與位置。2.是圖片的詳細資料,圖片的像素。3.是圖片的標註項目,標註名稱、標註的座標等等。

COCO:

此標註方法有分成五種類別,分別是 object detection、 keypoint detection、 stuff segmentation panoptic segmentation、 與image captioning。而這些類別都是使用JSON格式。

{
    "info": {...},
    "licenses": [...],
    "images": [...],
    "annotations": [...],
    "categories": [...], <-- Not in Captions annotations
    "segment_info": [...] <-- Only in Panoptic annotations
}

COCO的格式與種類分析不錯的網站

小結

本篇初步了解了電腦視覺的AI Labeling的方式與格式,在進入這個世界之前已經有了一些基本概念,而Labeling的工具也是有很多種,根據不同的Dataset來選用相對應的工具,在最後我來列出幾個標註常用工具。(1.MakeSenseAI、2.LabelImg、3.VGG、4.LabelMe、5.Scalabel、6.Rectlabel)。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *