Task03 Haar特徵描述運算元 人臉檢測

2021-10-07 17:24:57 字數 1437 閱讀 4455

3.1簡介

haar-like特徵最早是由papageorgiou等應用於人臉表示,在2023年,viola和jones兩位大牛發表了經典的《rapid object detection using a boosted cascade of ****** features》和《robust real-time face detection》,在adaboost演算法的基礎上,使用haar-like小波特徵和積分圖方法進行人臉檢測,他倆不是最早使用提出小波特徵的,但是他們設計了針對人臉檢測更有效的特徵,並對adaboost訓練出的強分類器進行級聯。這可以說是人臉檢測史上里程碑式的一筆了,也因此當時提出的這個演算法被稱為viola-jones檢測器。又過了一段時間,rainer lienhart和jochen maydt兩位大牛將這個檢測器進行了擴充套件,最終形成了opencv現在的haar分類器。

3.2 學習目標

理解haar-like特徵

理解積分圖的計算演算法

理解使用積分圖來計算haar特徵值演算法

理解haar特徵歸一化演算法

學會使用opencv自帶的haar分類器進行人臉檢測

3.3 演算法理論介紹

3.3.1 haar-like 特徵

haar(哈爾)特徵分為三類:邊緣特徵、線性特徵、中心特徵和對角線特徵,組合成特徵模板。特徵模板內有白色和黑色兩種矩形,並定義該模板的特徵值為白色矩形畫素和減去黑色矩形畫素和。haar特徵值反映了影象的灰度變化情況。例如:臉部的一些特徵能由矩形特徵簡單的描述,如:眼睛要比臉頰顏色要深,鼻樑兩側比鼻樑顏色要深,嘴巴比周圍顏色要深等。但矩形特徵只對一些簡單的圖形結構,如邊緣、線段較敏感,所以只能描述特定走向(水平、垂直、對角)的結構。

對於圖中的a, b和d這類特徵,特徵數值計算公式為:v=σ白-σ黑,而對於c來說,計算公式如下:v=σ白-2*σ黑;之所以將黑色區域畫素和乘以2,是為了使兩種矩形區域中畫素數目一致。我們希望當把矩形放到人臉區域計算出來的特徵值和放到非人臉區域計算出來的特徵值差別越大越好,這樣就可以用來區分人臉和非人臉。

通過改變特徵模板的大小和位置,可在影象子視窗中窮舉出大量的特徵。上圖的特徵模板稱為「特徵原型」;特徵原型在影象子視窗中擴充套件(平移伸縮)得到的特徵稱為「矩形特徵」;矩形特徵的值稱為「特徵值」。

上圖中兩個矩形特徵,表示出人臉的某些特徵。比如中間一幅表示眼睛區域的顏色比臉頰區域的顏色深,右邊一幅表示鼻樑兩側比鼻樑的顏色要深。同樣,其他目標,如眼睛等,也可以用一些矩形特徵來表示。使用特徵比單純地使用畫素點具有很大的優越性,並且速度更快。

矩形特徵可位於影象任意位置,大小也可以任意改變,所以矩形特徵值是矩形模版類別、矩形位置和矩形大小這三個因素的函式。故類別、大小和位置的變化,使得很小的檢測視窗含有非常多的矩形特徵,如:在24*24畫素大小的檢測視窗內矩形特徵數量可以達到16萬個。這樣就有兩個問題需要解決了:

(1)如何快速計算那麼多的特徵?—積分圖大顯神通;

(2)哪些矩形特徵才是對分類器分類最有效的?—如通過adaboost演算法來訓練。

爬蟲task03心得

通過這一階段的學習,我知道了爬蟲中針對ip被封的解決方案,主要有三種小套路 1,修改請求頭,模擬瀏覽器 而不是 去直接訪問 去訪問 2,採用 ip並輪換 3,設定訪問時間間隔 下面是獲取ip位址的案例 from bs4 import beautifulsoup import requests imp...

Task03異常處理

猜數字遊戲 題目描述 電腦產生乙個零到100之間的隨機數字,然後讓使用者來猜,如果使用者猜的數字比這個數字大,提示太大,否則提示太小,當使用者正好猜中電腦會提示,恭喜你猜到了這個數是 在使用者每次猜測之前程式會輸出使用者是第幾次猜測,如果使用者輸入的根本不是乙個數字,程式會告訴使用者 輸入無效 嘗試...

Task 03 異常處理

異常就是執行期檢測到的錯誤。計算機語言針對可能出現的錯誤定義了異常型別,某種錯誤引發對應的異常時,異常處理程式將被啟動,從而恢復程式的正常執行。1.python 標準異常總結 2.python標準警告總結 3.try except 語句 try 語句按照如下方式工作 首先,執行try子句 在關鍵字t...