在opencv的contrib中提供了兩種可以用來識別性別的方法:eigenface和fishe***ce,eigenface主要是使用pca(主成分分析),通過消除資料中的相關性,將高維影象降低到低維空間,訓練集中的樣本被對映成低維空間中的一點,需要判斷測試性別時,先將測試對映到低維空間中,然後計算離測試最近樣本點是哪乙個,將最近樣本點的性別賦值給測試;fishe***ce主要利用lda(線性投影分析)的思想,將樣本空間中的男女樣本投影到過原點的一條直線上,並確保樣本在該線上的投影類內距離最小,類間距離最大,從而分離出識別男女的分界線。
對於人臉判斷性別而言,lda方法(即fishe***ce)更為適合,因為pca考慮的是所有不同種類樣本在哪些方向上分布最廣,沒有考慮不同類之間的關係,而lda則考慮了如何使不同類樣本盡量分得最開。
在fishe***ce的介紹文件中,作者宣稱其在交叉測試中獲得了98%左右的性別識別率,但我在實際使用過程中,發現fishe***ce並沒有作者說得那麼好,僅僅不到60%,只比隨機猜測略好一些,好悲催 -_-!。
通過實驗觀察,本人認為主要原因有以下幾點:1.作者在實驗時對樣本進行了眼睛位置的嚴格標定,所有樣本眼睛的位置都嚴格重合,因此fishe***ce可以找到更穩定的區別資訊,但在實際中,前期面部識別工作是由viola_jones分類器完成的,由於viola_jones分類器無法做到眼睛精確定位,因此測試與樣本無法較好重合;2.原始樣本採用了200*200大小的,形成了40000維的特徵向量,其中包含了大量冗餘資訊和雜訊,導致了lda方法的不準確。
給幾張效果圖:
iOS人臉年齡 性別檢測
zhtjbaseservice shared setapikey 2208eda555994ea8a20cdcd5d9cc3670 apisecret aaed815544547725d6bd9a6690ff13b76d20f020 認證成功後需要繫結使用者,userid為自定義 1 32位字母 數...
人臉實時情緒與性別識別
最近弄乙個情緒識別與性別識別的東東。opencv keras opencv用於人臉檢測 keras用於訓練出識別模型 資料集用於kaggle的 fer2013 cnn進行訓練。如下 import cv2 import sys import json import time import numpy ...
人臉識別廣告顯示屏通過人像識別 面部識別應用
人臉識別廣告顯示屏通過人像識別 面部識別應用 人臉識別廣告顯示屏 人臉識別採集 通過人臉檢測與追蹤 人臉關鍵點 人臉質量檢測 人臉動態捕獲,能夠實時採集人臉並校驗。人臉識別的業務通常經歷三個步驟,採集到符合條件的人臉 分析人臉 產品側業務反饋人臉 分析人臉 反饋使用者,使用者反饋介紹,針對1080p...