2009-10-20 73 views

Trả lời

6

Khám phá OpenCV. Một kỹ thuật phát hiện khuôn mặt được ghi nhận và nổi tiếng bởi Viola & Jones đã được triển khai, được gọi là thác Haar.

Hướng dẫn đầy đủ - từ đào tạo đến thử nghiệm - is available here. Lưu ý rằng bạn không thực sự cần phải thực hiện đào tạo; OpenCV đi kèm với một số tính năng thác, bao gồm một vài cho phát hiện khuôn mặt.

+1

Giấy Viola & Jones, Phát hiện đối tượng nhanh bằng cách sử dụng Boosted Cascade của các tính năng đơn giản, có thể được tìm thấy trên Google Scholar: http://scholar.google.com/scholar?cluster= 6119571473300502765 –

+1

Cảm ơn bạn đã trả lời. Tôi có thể sử dụng nó để tạo hệ thống tham dự commertial. Ý tưởng của chúng tôi là tạo một hệ thống tham dự mà mọi người tự động được đánh dấu là hiện tại khi họ truyền một đoạn có chứa máy ảnh. – user189352

+1

Vâng, về mặt kỹ thuật, bạn có thể chạy thuật toán trên ảnh, kiểm tra số lượng khuôn mặt được phát hiện và xem nó như một câu trả lời. Thực tế, mặc dù, nó sẽ rất khó lường và dễ bị lỗi. Thứ nhất, nó không phát hiện một khuôn mặt cụ thể. Đó là, nó không phân biệt giữa khuôn mặt của bạn hay của tôi. Vì lý do đó, xác định xem một cá nhân nào đó có mặt hay không sẽ yêu cầu một cái gì đó phân biệt đối xử hơn. –

17

Có một vài hệ thống Java nhận dạng khuôn mặt mã nguồn mở mà bạn có thể thử, nhưng không mong đợi nhiều, bởi vì tôi đang tìm kiếm điều tương tự nhưng tôi vẫn đang tìm kiếm một lựa chọn tốt hơn!

Lưu ý rằng việc tìm bất kỳ khuôn mặt nào trong ảnh được gọi là "Nhận diện khuôn mặt", sau bất kỳ khuôn mặt nào được gọi là "Theo dõi khuôn mặt" và xác định danh tính của khuôn mặt được phát hiện được gọi là "Nhận diện khuôn mặt". Tôi đang nói với bạn điều này bởi vì bạn có thể phải sử dụng phần mềm và thuật toán khác nhau để làm mỗi một! Câu trả lời của Paul cho bạn biết rằng OpenCV có thể thực hiện nhận diện khuôn mặt dễ dàng (Haar Cascade Detector), nhưng không nhận diện khuôn mặt dễ dàng (thực sự nó có cách để nhận dạng Eigenface), có vẻ như bạn cần nhận dạng khuôn mặt, vì vậy OpenCV isn không nhất thiết phải là lựa chọn tốt nhất của bạn vì bạn đang sử dụng Java.

Bạn có thể thử FAINT thực hiện cả Nhận diện khuôn mặt và Nhận diện khuôn mặt trong Java, nhưng nó không được nhiều tài liệu. Ngoài ra còn có "http://darnok.org/programming/face-recognition/", nhưng tôi dường như không nhận được kết quả tốt từ nó. Ngoài ra còn có "http://uni.johnsto.co.uk/faces/" để nhận diện khuôn mặt và "Neuroph" để nhận dạng khuôn mặt/phát hiện.

Nếu bạn tìm thấy giải pháp tốt, vui lòng cho tôi biết "[email protected]" Chúc may mắn! Shervin Emami

+1

cập nhật: OpenCV v2.4.1 giờ đây đi kèm với lớp FaceRecognizer mới khá dễ nhận diện khuôn mặt bằng cách sử dụng một số thuật toán có thể có (Eigenfaces, Fisherfaces và LBP-Histograms). Vì vậy, bạn nên tìm một cách để sử dụng nó từ Java, chẳng hạn như OpenCV trên Android (hỗ trợ Java) hoặc có thể JavaCV (có thể chưa có FaceRecognizer). –

+0

Không sử dụng eigenfaces cho độ chính xác. Đây là so sánh pixel trực tiếp dựa trên mức trung bình. So sánh các mô tả khuôn mặt sau khi mở rộng quy mô, xoay và xén tìm khuôn mặt tốt hơn. Phải học sâu để đào tạo một mô hình để tìm ra những mô tả này. –

1

chính xác nhận dạng khuôn mặt là một nhiệm vụ có thể được chia thành nhiều bước sau:

  1. nhận diện khuôn mặt
  2. Râu điểm mang tính bước ngoặt phát hiện
  3. xoay, cắt xén, liên kết và mở rộng quy mô sử dụng địa điểm của bạn
  4. Khám phá điểm mô tả mặt (không thể đọc được bằng con người)
  5. So sánh với khuôn mặt đã biết để tìm khớp gần nhất

Điều này có thể được thực hiện với một số thư viện nhưng yêu cầu phải có bytedeco hàm bao cho OpenCV và Caffe cũng như thư viện như ND4j để so sánh ma trận.

OpenCV có thác HAAR để dò tìm khuôn mặt và có thể sử dụng dấu flandmark để nhận dạng điểm khuôn mặt. Điều này sẽ cho phép bạn thực hiện các bước 1-3.

Râu khám phá mô tả có thể được thực hiện bằng cách sử dụng wrapper bytedeco cho Caffe và VGG Mặt Descriptor thư viện (http://www.robots.ox.ac.uk/~vgg/software/vgg_face/)

Cuối cùng, Nd4j thể được sử dụng để so sánh các hình ảnh. Nếu bạn có đủ hình ảnh được phân loại theo từng cá nhân, có lẽ bạn có thể sử dụng mạng nơron từ thư viện để phân loại.

Các vấn đề liên quan