圖型識別學習筆記:圖型識別介紹


不知道大家有沒有看過像這樣的 reCAPTCHA 圖型識別驗證機制?為什麼這玩意可以迅速分辨出使用者是不是「人類」呢?

圖源:DATA SCIENCE BLOG
原因在於,要叫「機器」辨別圖型,比用人眼辨別複雜多了!以上圖辨別「路牌」來說,各國各地路牌的樣式、顏色、形狀、語言、書寫方向,以及拍攝的角度、光線等全部都不一樣,要讓機器在各種不同的條件下都能夠辨別圖片裡的東西是不是路牌,其實是門大學問。

圖型識別核心理念

「圖型識別」就是讓電腦去「學習」什麼東西長什麼樣子,待電腦遇到新的圖片時,可以根據過往經驗,辨別當中的內容「是不是某樣東西」。

假設我們要電腦分辨貓與狗,這時候可能出現兩種極端狀況:

  1. 識別很不準,把很多貓誤認成狗、把很多狗誤認成貓
  2. 識別超準:狗就是狗、貓就是貓,完全沒有任何差錯

第二種情形看似理想,但會出現一種稱為「過適(overfitting)」的狀況,表示過於精確匹配特定的資料集,這會導致電腦在辨別一特定群體的資料時,有非常高的精準度,但若有新的資料進來,識別能力就會大打折扣。

要夠準,又不能太準

就好像我們不希望自己在解數學題目時,永遠只停留在「看過的才會寫、沒看過的就沒轍」階段,做圖型識別時也會希望「有新的資料進來也能處理」,因此,在用舊有資料訓練機器時,識別模型要複雜到「可以分辨兩種不同物體」、但又不能複雜到「只針對特定資料有超高精準度」。

圖型識別系統(PATTERN RECOGNITION SYSTEMS)

圖型識別流程如下:

圖型識別系統概念圖(實際流程非永遠單向)

在透過照相機等換能器(transducer)完成感測(sensing)、取得輸入圖片,並將圖片轉為訊號資料後,大體上會透過下列流程完成圖型識別:

  1. 分割(segmentation):要將目標圖型從背景中取出,若有多個圖型重疊,也要能夠辨別。
  2. 特徵提取(feature extraction):主要是為了下一步「分類」做準備,可以做出一個「代表(representation)」,其提取目標為同一目標圖型都有的相似特徵、但不受該圖型本身型態變化的影響,例如要找出「狗」時,需提出狗與其他物體不同的特徵,但拍攝狗的角度、距離、甚至是否拍到全身等都不應讓機器無法識別該物體是否為「狗」。
  3. 分類(classification):透過上一步驟提取的特徵,將物體分類,例如將符合 A 特徵者歸類為「貓」、B 特徵者歸類為「狗」。此步驟容易受到「雜訊(noise)」影響。
  4. 後處理(post-processing):針對因判別錯誤造成的風險(risk)、目標圖型之外與輸入有關的關係(context)、多個分類造成的衝突進行後續處理,等於是排除所有可能影響識別的因素,以利最終的決策。

設計循環(DESIGN CYCLE)

對應上述「圖型識別系統」,再一一設計每個流程。

  1. 資料收集(data collection):取得輸入資料,應留意資料是否適合分析。
  2. 特徵選擇(feature choice):找到「特徵提取」步驟中的依據,需要有針對目標物體的背景知識支持。
  3. 模型選擇(model choice):要確定模型適合當下的識別情境,不同的模型將於下文介紹。
  4. 分類器訓練(classifier training):用資料訓練、讓分類器有辦法進行圖型識別。
  5. 分類器評估(classifier evaluation):了解整個識別流程性能,並找出待改善處。

圖型識別模型&方法

常見的圖型識別方法如下:

(修改自 AK Jain et al., 2000)

  1. 特徵匹配(template matching):將圖片與模板圖比對,同時將旋轉角度、物品在照片裡的大小一併考慮進去。
  2. 統計方法(statistical approach):將圖型視為有 d 個特徵,且視為 d 維特徵向量,在特徵空間中找到可區分不同類別的決策邊界(desicion boundary)。
  3. 語法方法(syntactic approach):以階層式結構表示複雜圖型,最小單位稱為「基元(primitive)」,不同基元間的組合即稱為「圖型」,適合結構明顯的心電圖、等高線評估等。
  4. 神經網路(neural networks):多部電腦同步進行平行運算,可處理大量非線性輸入與輸出。

機器學習(MACHINE LEARNING)

圖型識別屬於機器學習領域的一環,而機器學習主要分為三類:

  1. 監督式學習(supervised learning):類似中小學考試有標準答案,讓機器透過不斷與標準答案對照,使預測更為精準。
  2. 非監督式學習(unsupervised learning):即「聚類(clustering)」,讓機器自己歸類、找到潛在規則,不再有答對與否之分。
  3. 強化式學習(reinforcement learning):讓機器自行摸索,再以獎懲機制回饋,使機器在透過引導下,透過自己找到的方式逐漸進步。

參考資料

  1. Statistical Pattern Recognition: A Review (AK Jain et al., 2000)
#圖型識別







你可能感興趣的文章

新版 Python 在 PyCharm 無法正確判讀與除錯處理

新版 Python 在 PyCharm 無法正確判讀與除錯處理

[Day00]: 七天七夜與Docker坦誠相見

[Day00]: 七天七夜與Docker坦誠相見

來學 React 吧之八_部署 React App

來學 React 吧之八_部署 React App






留言討論