2009-10-20 110 views
14

任何人都可以建議我在Java中使用開源人臉識別框架嗎?Java中的人臉識別

+1

看看這個問題:http:// stackoverflow。com/questions/953714/face-recognition-library – Janusz 2010-03-05 08:28:48

回答

6

結賬OpenCV。由Viola & Jones提供的文檔豐富且備受讚譽的人臉檢測技術已實施,稱爲Haar級聯。

完整的教程 - 從培訓到實驗 - is available here。請注意,您實際上並不需要進行培訓; OpenCV捆綁了幾個功能級聯,其中包括一些面部檢測。

+1

在Google學術搜索中可以找到Viola&Jones的論文,使用簡單功能的增強級聯進行快速對象檢測:http://scholar.google.com/scholar?cluster= 6119571473300502765 – 2009-10-20 15:30:04

+1

感謝您的回覆,我可以用它來製作一個紀念的考勤系統。我的想法是制定一個考勤系統,通過這個系統,人們在通過含有照相機的通道時自動標記爲現在。 – user189352 2009-10-20 15:37:04

+1

嗯,從技術上講,您可以在照片上運行算法,計算檢測到的臉部數量並將其作爲答案。但實際上,這是非常不可預測的,並且容易出錯。首先,它不檢測特定的臉部。也就是說,它並不區分你的臉或我的臉。因此,確定某個人是否在場會需要更多的區分。 – 2009-10-20 15:40:35

17

您可以嘗試一些開源的Face Recognition Java系統,但不要期望太高,因爲我正在尋找相同的東西,但我仍然在尋找更好的選擇!

請注意,在圖像內找到任何人臉稱爲「人臉檢測」,任何人臉稱爲「人臉跟蹤」,並且確定檢測到的人臉的身份稱爲「人臉識別」。我告訴你這一點,因爲你可能必須使用不同的軟件和算法來完成每一個! Paul提供的答案告訴你,OpenCV可以很容易地進行人臉檢測(哈爾級聯檢測器),但不容易(但實際上它有辦法進行特徵臉識別),這聽起來像需要人臉識別,所以OpenCV isn自從您使用Java以來​​,不一定是您的最佳選擇。

您可以嘗試使用Java進行人臉檢測和人臉識別的FAINT,但它幾乎沒有文檔。也有「http://darnok.org/programming/face-recognition/」,但我似乎無法取得好成績。還有用於人臉識別的「http://uni.johnsto.co.uk/faces/」,用於人臉識別/檢測的「Neuroph」。

如果你找到一個好的解決方案,請告訴我在「[email protected]」 祝你好運! Shervin EMAMI

+1

更新:OpenCV v2.4.1現在帶有一個新的FaceRecognizer類,很容易使用幾種可能的算法進行人臉識別(特徵臉, Fisherfaces和LBP-直方圖)。所以你應該尋找一種從Java使用它的方式,比如Android上的OpenCV(支持Java)或者JavaCV(可能還沒有FaceRecognizer)。 – 2012-09-12 00:17:59

+0

請勿使用特徵臉來獲得準確性。它是基於平均值的直接像素比較。縮放,旋轉和裁剪找到的面後比較面部描述符更好。需要深入的學習來訓練一個模型來找到這些描述符。 – 2017-07-27 23:30:25

1

精確的面部識別是一個任務可分爲以下幾個步驟:

  1. 人臉檢測
  2. 面部里程碑意義的點發現
  3. 旋轉,裁剪,調整和縮放使用您的地標
  4. 面部描述符點發現(這些不是人類可讀的)
  5. 比較已知的面找到最接近的匹配

這可以用幾個庫來完成,但需要OpenGL和Caffe的包裝器,以及像ND4j這樣的庫來進行矩陣比較。

OpenCV具有用於人臉檢測的HAAR級聯,並且可以使用flandmark進行面部點識別。這將允許您執行步驟1-3。

面部描述符發現可以使用bytedeco包裝爲Caffe和VGG臉部描述符庫(http://www.robots.ox.ac.uk/~vgg/software/vgg_face/

最後,Nd4j可用於比較圖像來完成。如果您有足夠的圖片按照個人分類,也許您可​​以使用庫中的神經網絡進行分類。