Phát hiện một khuôn mặt nhất định trong cơ sở dữ liệu hình ảnh khuôn mặt


110

Tôi đang làm việc trong một dự án nhỏ liên quan đến khuôn mặt của người dùng twitter thông qua hình ảnh hồ sơ của họ.

Một vấn đề tôi gặp phải là sau khi tôi lọc ra tất cả trừ những hình ảnh rõ nét, một tỷ lệ nhỏ nhưng đáng kể người dùng twitter sử dụng hình ảnh của Justin Bieber làm ảnh đại diện.

Để lọc chúng ra, làm thế nào tôi có thể nói với lập trình xem một bức ảnh có phải là của Justin Bieber không?


17
Nền tảng phát triển của bạn là gì? Điều này có thể dễ dàng được thực hiện trong .NET vì nó vượt trội hơn tất cả các môi trường lập trình khác. Chỉ cần gọi hàm Page.EradicateBieber (). Microsoft đã thấy trước nhu cầu này và đã cung cấp nó cho chúng tôi ngay lập tức trong .NET 4.5. (Những người trong số các phiên bản cũ hơn của bạn sẽ phải chờ.) (Tất nhiên, tất nhiên, tất cả đều tặc lưỡi.)

32
Tôi nghĩ rằng tôi có thể khẳng định một cách an toàn rằng SO không cần [justin-bieber]thẻ.
skaffman

2
Tôi có thể khẳng định một cách an toàn rằng mọi người dành nhiều ý kiến ​​hơn cho các bình luận và câu hỏi này hơn là lựa chọn gần gũi ( câu hỏi xứng đáng với số phiếu).

20
Bộ lọc âm thanh của Justin Bieber cũng sẽ rất tốt

Câu trả lời:


49

Một ý tưởng tốt hơn có thể là bỏ rác tất cả các hình ảnh xuất hiện trong nguồn cấp dữ liệu của nhiều người dùng - không cần nhận dạng.


2
Vâng, có thể đặt ngưỡng 2-4 lần trùng lặp có thể xảy ra (để xử lý trường hợp em bé mới sinh) trước khi bạn từ chối ảnh. Tôi phụ thuộc vào những gì bạn sẽ làm với các bức ảnh, tôi đoán.
Mark Bessey

3
Giải pháp đơn giản, thanh lịch. +1.
Robert Harvey

13
Mọi người có thể sử dụng các hình ảnh khác nhau của cùng một người.
Rebecca Chernoff

(+1) tại Rebecca và (-1) @ PPPPPP: Điều này chỉ làm thay đổi vấn đề.
steffen

4
Họ có thể, nhưng trong hầu hết các trường hợp, họ sẽ chọn từ một nhóm hình ảnh tương đối nhỏ, vì vậy nó có thể vẫn hoạt động. Các trường hợp cạnh bị nguyền rủa - vì tất cả các bạn biết hình ảnh của tôi là của chú tôi.
nè 101

16

Tôi có cảm giác rằng http://www.tineye.com/commIAL_api có thể là giải pháp ở đây. Chỉ cần ném hình ảnh hồ sơ Twitter cho Tineye, xem liệu nó có trả lại hình ảnh (và URL được liên kết) có thể được xác định rõ ràng (hoặc tự động ghi điểm bằng logic đếm từ đơn giản) có liên quan đến (hoặc) cái bao tải nhỏ * * đó không.

Đơn giản!


1
Google đã công bố tìm kiếm hình ảnh gần đây: youtube.com/watch?v=t99BfDnBZcI Tôi không biết nếu nó có API chưa, nhưng đó có thể là một giải pháp thay thế.
petrichor

11

Vì bạn chỉ có thể lọc những ảnh có ảnh chân dung rõ ràng, tôi giả sử bạn có một số phương pháp tạo tính năng để chuyển đổi ảnh thô thành các tính năng hữu ích cho mục đích học máy. Nếu đó là sự thật, bạn có thể thử đào tạo một thuật toán phân loại (có rất nhiều trong số chúng: mạng thần kinh, v.v.) bằng cách cung cấp cho thuật toán một loạt các ảnh Bieber đã biết cũng như một loạt các Bieber đã biết. Khi bạn đã đào tạo mô hình, nó có thể được sử dụng để dự đoán liệu một hình ảnh mới có phải là Bieber hay không.

Loại kỹ thuật học có giám sát này đòi hỏi bạn phải có dữ liệu để biết câu trả lời đúng (Bieber hay không), nhưng những thứ đó có thể được tìm thấy từ một tìm kiếm hình ảnh của Google. Nó cũng yêu cầu bạn có các loại tính năng phù hợp và tôi không biết đủ về xử lý hình ảnh hoặc thuật toán của bạn để biết liệu đó có phải là một nhược điểm lớn hay không.


2
Thật không may, bước tạo tính năng là cả bước khó nhất và quan trọng nhất :(.
steffen

@steffen Có một số ý kiến ​​cho rằng OP đang gây rối với các khuôn mặt, vì vậy hãy có một số trình tạo mô tả.

@mpq: Tôi không nghi ngờ rằng, tuy nhiên, nếu OP không có một tính năng cho mỗi pixel, thì anh ta phải tìm một mức tổng hợp có ý nghĩa. Tôi đã không downvote, tôi chỉ muốn chỉ ra sự phức tạp ẩn sau câu trả lời này (tất nhiên, đó là chính xác).
steffen

1
Phải, bước tạo tính năng là phần khó. Tôi đã cho rằng OP có thể làm điều này vì anh ta đã có một số cơ chế xử lý hình ảnh. Ngay cả khi anh ta làm mặc dù chúng chỉ có thể là các tính năng hữu ích để phát hiện khuôn mặt / không phải khuôn mặt thay vì Bieber / không phải Bieber ... điều đó thực sự phụ thuộc vào các tính năng.
Michael McGowan

7

Bạn có thể sử dụng một phương thức như eigenfaces, http://en.wikipedia.org/wiki/Eigenface . Sau đây có một hướng dẫn tốt về thủ tục cũng như các liên kết đến các triển khai khác nhau.

http://www.pages.drexel.edu/~sis26/Eigenface%20Tutorial.htmlm

Từ đây, người ta thường sử dụng điều này trong cách tiếp cận phân loại, huấn luyện một mô hình và sau đó dự đoán các trường hợp. Bạn có thể làm điều này bằng cách đào tạo một nhóm những người nổi tiếng đã biết và nếu bạn dự đoán một khuôn mặt từ twitter là một trong những người nổi tiếng được đào tạo của bạn, hãy loại bỏ nó. Tương tự như thế này http://blog.cordiner.net/2010/12/02/eigenfaces-face-recognition-matlab/

Điều này bị sửa đổi liên tục. Sẽ sớm có một Justin Bieber mới sẽ không có trong mô hình được đào tạo của bạn, vì vậy bạn không thể dự đoán nó. Cũng có một trường hợp như Whitney Houston, bạn có thể chưa bao giờ nghĩ sẽ thêm cô ấy trước đây nhưng cô ấy có thể là một hình ảnh phổ biến vì sự tôn trọng và ngưỡng mộ trong vài tuần. Bạn sẽ không có nhược điểm của hình ảnh em bé như đã đề cập ở trên. Để khắc phục những vấn đề này, bạn có thể sử dụng nhiều hơn một phương pháp phân cụm theo cấp bậc. Loại bỏ một vài nhóm đầu tiên rất gần nếu chúng đạt đến một mức hỗ trợ nhất định, cụm đầu tiên của bạn có 15 mục trước khi một giây được tạo. Bây giờ bạn không phải lo lắng về ai trong mô hình đào tạo của bạn nhưng bạn sẽ rơi vào vấn đề hình ảnh em bé.




3

Bạn cần đưa vào một thuật toán phát hiện người mà bức ảnh đó đang đề cập đến. Bạn có thể xây dựng một mô hình dựa trên các hình ảnh chân dung khác nhau về tính cách nổi tiếng và sử dụng các trình phân loại để đảm bảo rằng hình ảnh này được đề cập đến một trong những hình ảnh cơ sở dữ liệu của bạn. Bạn cần sử dụng một bộ phân loại nhất định dựa trên các thông số khác nhau thích trên khuôn mặt, như khoảng cách giữa hai mắt hoặc các thông số khác để tăng độ chính xác cho mô hình của bạn. Ngoài ra còn có phân tích da. Điều quan trọng nhất là xây dựng một bộ phân loại tốt. Phương pháp này có thể dễ bị tổn thương.

Nhưng cũng có một dự án rất tốt làm việc về nhận dạng khuôn mặt http://opencv-code.com/Opencv_Face_Detection


1
AFAIK OpenCV và các trang web liên quan chỉ thực hiện khuôn mặt phát hiện (ehere trong hình là một khuôn mặt của con người?) Mà chỉ là một bước đầu tiên hướng tới mặt công nhận (với khuôn mặt là nó?)
f3lix

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.