學習筆記:影像辨識Object detection
物件識別(Object detection)指的是讓計算機去分析一張圖片或者一段視頻中的物體,並標記出來,通過給與類神經網絡ANN(Artificial neural networks)大量的物體數據去訓練它,提高識別準確度。
人們為此創出了各種神經網絡,其中最基本且重要的便是1980年 Kunihiko Fukushima 1980年提出的卷積神經網絡CNN(Convolution Neural Network),不過當時還是較原始的架構,又稱為Neocognitron,CNN現代架構是1990年代才確立。
而到了近幾年,object detection相關模型如雨後春筍般冒出,R-CNN (2014), Fast R-CNN (2015), Faster R-CNN(2016),Mask R-CNN(2017)相繼出現,功能也更加齊全。
關於各種影分析模型其輸出樣貌如下圖所示:
各種object detection模型比較:
CNN的功能是classification十分單純,一張圖片進去,模型輸出他的類別(如:dog, cat),當然,必須是曾經在訓練中「看過」的類別。
到了R-CNN,多了localization的能力,不只分類,還可以用邊界框(bounding box)標示出目標物體的位置。而此時一張圖還是只能偵測一項物體。
Fast R-CNN則開始能在單一圖片中偵測多個不同種類物體,同時輸出個別目標框。
Faster R-CNN開始有了semantic segmentation功能,以像素(pixel)為單位標示物體,也就是說一張圖片的每個像素點都會有各自的分類結果。除了物體的類別,也包含該pixel是屬於前景(foreground)還是後景(background),這會通過內部一種叫RPN(Region proposal network)的網路達成,在此先篇先不進行詳細說明。歸類在foreground才會進行後續的物件判斷分類。
Mask R-CNN在Faster R-CNN基礎上又進一步做到instance segmentation,能夠對每項物體各自輸出遮罩(mask),即使是兩個同類別的物體,輸出的mask也是不同的。
當影像可以識別後,最後便能做到影片的識別(Video Object Segmentation)了:
以下是Mask R-CNN架構圖,各部分說明之後會一點點完成,相信經過自製中文的說明與標示,應該比網路上普遍的架構圖更好理解......吧。
Object detection近年廣受討論,主要在於facebook人臉辨識的成熟。關於Mask R-CNN主要研究都是Kaiming He的論文:
跋:
決定寫些平常學習與研究的內容,過去寫的都是些課外讀物性質,這方面也不打算停止,所以之後這裡的文章題材應該會走向多元(或稱:雜)
關於學習紀錄上我嘗試由淺入深,畢竟自己也些部份也還是一知半解。之後主要會繼續將Mask R-CNN講解齊全,也會嘗試在Machine Learning其他相關有更多的介紹與書寫。
我知道網路上object detection也有許多其他的人寫下講解,專業程度上,尚在學習的我自然有所不及,有講解錯誤的部分也歡迎指出。但希望做到的是一個從0到1,再從1到多的過程,也將此帶給其他人。共勉之。