天天看點

基于haar特征的adaboost算法_目标檢測算法介紹

什麼是目标檢測

目标檢測是指從圖像中找出目标,包括檢測和識别兩個過程,現實中由于環境的複雜性以及各類物體的形狀、外觀以及光照,遮擋等因素的幹擾,是以目标檢測一直也是計算機視覺最常見的挑戰之一。

目标檢測的應用

目标檢測與識别應用于多個領域,在實際生活中應用也越來越廣泛,例如目标跟蹤,視訊監控,資訊安全,自動駕駛,圖像檢索,醫學圖像分析,網絡資料挖掘,無人機導航,遙感圖像分析,國防系統等。

基于haar特征的adaboost算法_目标檢測算法介紹
基于haar特征的adaboost算法_目标檢測算法介紹

傳統目标檢測方法

傳統的目标檢測與識别方法主要可以表示為: 區域選擇->特征提取->分類器。 即首先在給定的圖像上選擇一些候選的區域,然後對這些區域提取特征,最後使用訓練的分類器進行分類。 下面我們對這三個階段分别進行介紹,如下圖所示:

基于haar特征的adaboost算法_目标檢測算法介紹
  • 區域選擇

這一步是為了對目标的位置進行定位。由于目标可能出現在圖像的任何位置,而且目标的大小、長寬比例也不确定,是以最初采用滑動視窗的政策對整幅圖像進行周遊,而且需要設定不同的尺度,不同的長寬比。這種窮舉的政策雖然包含了目标所有可能出現的位置,但是缺點也是顯而易見的:時間複雜度太高,産生備援視窗太多,這也嚴重影響後續特征提取和分類的速度和性能。(實際上由于受到時間複雜度的問題,滑動視窗的長寬比一般都是固定的設定幾個,是以對于長寬比浮動較大的多類别目标檢測,即便是滑動視窗周遊也不能得到很好的區域)

  • 特征提取

由于目标的形态多樣性,光照變化多樣性,背景多樣性等因素使得設計一個魯棒的特征并不是那麼容易。然而提取特征的好壞直接影響到分類的準确性。(這個階段常用的特征有SIFT、HOG等)

  • 分類器

主要有SVM,Adaboost等。

  • NMS(非極大值抑制)

非極大值抑制(Non-Maximum Suppression,NMS),顧名思義就是抑制不是極大值的元素,可以了解為局部最大搜尋。目的就是為了消除多餘的框,找到最佳的目标檢測位置。 我們以人臉檢測為示例來看看NMS的應用。

基于haar特征的adaboost算法_目标檢測算法介紹

我們可以看到,由于滑動視窗,同一個人可能有好幾個框(每一個框都帶有一個分類器得分),但是我們肯定是想得到一個最優的框。

于是我們就要用到非極大值抑制,來抑制那些備援的框: 抑制的過程是一個疊代-周遊-消除的過程。

  1. 将所有框的得分排序,選中最高分及其對應的框:
  2. 周遊其餘的框,如果和目前最高分框的重疊面積(IOU)大于一定門檻值,我們就将框删除。
  3. 從未處理的框中繼續選一個得分最高的,重複上述過程。
基于haar特征的adaboost算法_目标檢測算法介紹

下面是Python代碼中NMS實作

import cv2picked_boxes, picked_score = nms(bounding_boxes, confidence_score, threshold)cv2.imshow(
           

viola-jones(人臉檢測)

viola-jones算法分為以下幾個部分

  •  Haar特征抽取
  • 訓練人臉分類器利用Adaboost算法進行訓練
  • 滑動視窗

   haar特征

  Haar特征是一種反映圖像的灰階變化的,像素分子產品求內插補點的一種特征。它分為三類:邊緣特征、線性特征、中心特征和對角線特征。用黑白兩種矩形框組合成特征模闆,在特征模闆内用 黑色矩形像素和 減去 白色矩形像素和來表示這個模版的特征值。例如:臉部的一些特征能由矩形子產品內插補點特征簡單的描述,如:眼睛要比臉頰顔色要深,鼻梁兩側比鼻梁顔色要深,嘴巴比周圍顔色要深等。但矩形特征隻對一些簡單的圖形結構,如邊緣、線段較敏感,是以隻能描述在特定方向(水準、垂直、對角)上有明顯像素子產品梯度變化的圖像結構。

基于haar特征的adaboost算法_目标檢測算法介紹

HOG+SVM(行人檢測)

HOG+SVM算法分為以下幾個部分

  • 提取HOG特征
  • 訓練SVM分類器
  • 利用滑動視窗提取目标區域,進行分類判斷
  • NMS
  • 輸出結果

HOG特征:

  • 灰階化 + Gamma變換
  • 計算梯度map
  • 圖像劃分成小的cell,統計每個cell直方圖
  • 多個cell組成一個block,特征歸一化
  • 多個block串聯,并歸一化

SVM

 支援向量機,因其英文名為support vector machine,故一般簡稱SVM,通俗來講,它是一種二類分類模型,其基本模型定義為特征空間上的間隔最大的線性分類器,其學習政策便是間隔最大化,最終可轉化為一個凸二次規劃問題的求解。

基于haar特征的adaboost算法_目标檢測算法介紹

DMP(物體檢測)

DPM是一個非常成功的目标檢測算法,DPM可以看做是HOG(Histograms of Oriented Gradients)的擴充,大體思路與HOG一緻。先計算梯度方向直方圖,然後用SVM(Surpport Vector Machine )訓練得到物體的梯度模型。

dmp算法分為以下幾個部分:

  • 計算DMP特征圖
  • 計算響應圖
  •  Latent SVM分類器訓練
  • 檢測識别

深度學習目标檢測方法

基于深度學習的目标檢測與識别成為主流方法,主要可以表示為:圖像的深度特征提取->基于深度神經網絡的目辨別别與定位,其中主要用到深度神經網絡模型是卷積神經網絡CNN。

Two-stage

先進行區域建議框(Region Proposal, RP)的生成,再通過卷積神經網絡進行分類。

 步驟:特征提取 → 生成RP → 分類/回歸。

基于haar特征的adaboost算法_目标檢測算法介紹

常見的two stage目标檢測算法:R-CNN、Spp-Net、Fast R-CNN、Faster R-CNN和R-FCN等。

One-stage

直接提取特征來預測物體類别和位置。

步驟:特征提取 → 分類/回歸。

基于haar特征的adaboost算法_目标檢測算法介紹

常見的one stage目标檢測算法有:OverFeat、YOLO系列、SSD和RetinaNet。

本片文章簡單的介紹了一下目标檢測中常用的算法,後面會針對常用算法進行詳細的介紹。