1

通過網絡攝像頭我捕捉到前面的人的圖像。然後我顯示一個視頻。之後,我必須找出是否它的同一個人站在前面。我怎樣才能做到這一點?互聯網上的可能性需要許多圖像來訓練SVM。我只有一張要認可的人的照片。我怎樣才能做到這一點?如果可能,請提供一些代碼示例,因爲我是新手。我已經實現了攝像頭邏輯。只是我需要的圖像識別。如何比較圖像以識別圖像中的人物?

+0

這是一個很難完成的問題。有幾個選項可以嘗試(但機器學習可能是最好的選擇)。如果您確定只能使用一張圖片進行檢查,您可以嘗試模板加工。 Opencv在http://docs.opencv.org/doc/tutorials/imgproc/histograms/template_matching/template_matching.html上有一些代碼。 –

+0

模板匹配需要完全相同的圖像。我嘗試過這個。當它的同一個人,但不同的圖像,它不能識別。他們如何做到這一點登錄?他們只能得到一個攝像頭圖像,不知何故他們下次識別該人?他們是如何做到的呢? – mayooran

+0

是的,這絕對是模板匹配的失敗。差異會毀掉比賽。大公司可能使用機器學習來匹配面孔。但基本上歸結爲這張臉與我想要匹配的臉有多相似。您可以找到關於臉部的哪些特徵很重要,找到一個衡量標準來比較它們,並將這些特徵度量與給定的權重結合起來。如果總體指標大於某個閾值,則表示您找到了匹配項。 –

回答

3

好的,讓我們試試看。

一個相當典型的方法是使用稱爲特徵臉的東西。 OpenCV的在http://docs.opencv.org/modules/contrib/doc/facerec/facerec_tutorial.html

使用發現特徵臉和類似的方法面部識別一整節,但這個假設你有圖像的數據庫中使用(但它不是一個壞的地方開始尋找)。

方法使用面部/圖像特徵:

這種方法不一定全部有效,因爲它取決於你的某些功能計算是多麼有效。這種方法的準確性取決於你如何定義你的特徵及其權重因子。但是,這是一種不一定需要機器學習的方法。 (儘管它肯定有幫助!)

另一種方法是嘗試比較你的源和目標人臉的相似程度。這可以通過比較一組功能來完成。

您要做的第一件事就是確定目標圖像是否包含人臉。 見 http://docs.opencv.org/master/d7/d8b/tutorial_py_face_detection.html 也可以實現維奧拉 - 瓊斯算法發現Here.

現在,如果你的臉檢測算法已經不這樣做,你會想找到方向,規模和目標的臉的位置(這對於查找關於人臉的某些特徵很有用)。

現在您需要計算您的目標人臉的特徵。 您可以使用圖像特徵和描述符,如Fast,SIFT和ORB來計算圖像特徵並進行比較。 請參閱http://docs.opencv.org/master/dc/dc3/tutorial_py_matcher.html

或者既然您知道您處理面孔,您可以計算可幫助區分人的功能。 例如:

眼睛之間的距離,臉形。鼻子的長度。眼睛的高度。鼻子和嘴巴之間的距離等。

棘手的部分是搞清楚如何可靠地計算特徵度量,然後將所有這些組合到一個度量中。通常使用機器學習算法來找出組合每個度量的加權因子。

但是,您可以使用一些猜測工作來選擇初始權重,然後進行一些試驗和錯誤,直到找到一組適合您的權重。

確定了權重後,可以通過查找源特徵與目標特徵之間的平方差並將它們一起添加來組合它們。 (如果首先對所有子特徵進行歸一化(即始終在0到1範圍內)並進行加權以使整體度量值範圍從0到1,則此效果最佳。

可以說你有5個特徵f0,f1,f2,f3,f4,f5都在0和1之間 這些值是源和目標人臉之間的歸一化平方差。

和你有5個加權因子:0.3,0.1,0.15,0.25,0.2(總結了1)

你的整體度量將是

Overall Metric = 0.3 * f0 + 0.1 * f2 + 0.15 * f3 + 0.25 * f4 + 0.2 * f5 

然後兩個面是如果有更多的相似如果該值接近於1,則該值更接近0,並且不太相似。在上面的示例中,要素0是最重要的要素,而要素2最少。