การตรวจจับใบหน้าที่กำหนดในฐานข้อมูลของภาพใบหน้า


110

ฉันกำลังทำงานในโครงการเล็ก ๆ ที่เกี่ยวข้องกับใบหน้าของผู้ใช้ Twitter ผ่านรูปภาพโปรไฟล์ของพวกเขา

ปัญหาที่ฉันพบคือหลังจากที่ฉันกรองออกทั้งหมดยกเว้นภาพที่เป็นภาพถ่ายแนวตั้งที่ชัดเจนผู้ใช้ทวิตเตอร์จำนวนเล็กน้อย แต่มีนัยสำคัญใช้รูปภาพของ Justin Bieber เป็นรูปภาพโปรไฟล์ของพวกเขา

เพื่อที่จะกรองพวกเขาฉันจะบอกโปรแกรมได้อย่างไรว่ารูปภาพนั้นเป็นของ Justin Bieber?


17
แพลตฟอร์มการพัฒนาของคุณคืออะไร? สิ่งนี้สามารถทำได้ใน. NET เพราะเหนือกว่าสภาพแวดล้อมการเขียนโปรแกรมอื่น ๆ ทั้งหมด เพียงเรียกใช้ฟังก์ชัน Page.EradicateBieber () Microsoft เล็งเห็นถึงความต้องการนี้และมอบสิ่งที่ดีที่สุดให้กับเราใน. NET 4.5 (พวกคุณในรุ่นที่เก่ากว่าจะต้องรอ) (แน่นอนว่าทุกคนพูดจาแก้ม)

32
ฉันคิดว่าฉันสามารถยืนยันได้อย่างปลอดภัยว่าไม่จำเป็นต้องมี[justin-bieber]แท็ก
skaffman

2
ฉันสามารถยืนยันได้อย่างปลอดภัยว่าผู้ใช้จ่าย upvotes มากขึ้นในการแสดงความคิดเห็นและคำถามนี้กว่าตัวเลือกปิด (คนที่สมควรได้รับการโหวต)

20
ตัวกรองสัญญาณเสียง Justin Bieber ก็ดีเช่นกัน

คำตอบ:


49

ความคิดที่ดีกว่าคือการทิ้งภาพทั้งหมดที่ปรากฏในฟีดของผู้ใช้มากกว่าหนึ่งรายโดยไม่จำเป็นต้องจดจำ


2
ใช่อาจตั้งค่าการทำซ้ำ 2-4 ที่เป็นไปได้ (เพื่อจัดการกับกรณีทารกใหม่) ก่อนที่คุณจะปฏิเสธภาพถ่าย ขึ้นอยู่กับว่าคุณจะทำอะไรกับภาพถ่ายฉันเดา
Mark Bessey

3
วิธีแก้ปัญหาที่ง่ายและสง่างาม +1
Robert Harvey

13
ผู้คนสามารถใช้รูปภาพต่าง ๆ ของบุคคลเดียวกันได้
Rebecca Chernoff

(+1) ที่ Rebecca และ (-1) @ PPPPPP: นี่เป็นการเปลี่ยนปัญหา
steffen

4
พวกเขาทำได้ แต่ในกรณีส่วนใหญ่พวกเขาจะเลือกจากกลุ่มของภาพที่ค่อนข้างเล็กดังนั้นมันอาจจะใช้ได้ กรณีขอบถูกสาป - สำหรับทุกสิ่งที่คุณรู้ว่าภาพของฉันเป็นของลุงของฉัน
naught101

16

ฉันรู้สึกว่าhttp://www.tineye.com/commercial_apiอาจเป็นวิธีแก้ปัญหาที่นี่ เพียงแค่โยนภาพโปรไฟล์ Twitter ไปที่ Tineye ดูว่ามันส่งคืนรูปภาพ (และ URL ที่เกี่ยวข้อง) ที่สามารถระบุได้อย่างชัดเจน (หรือให้คะแนนโดยอัตโนมัติโดยใช้ตรรกะการนับคำง่ายๆ) ว่าเกี่ยวข้องกับ (หรือจาก) * * * *

Simples!


1
Google ประกาศการค้นหารูปภาพเมื่อเร็ว ๆ นี้: youtube.com/watch?v=t99BfDnBZcIฉันไม่รู้ว่ามี API หรือไม่ แต่นั่นอาจเป็นทางเลือก
petrichor

11

เนื่องจากคุณสามารถกรองได้เฉพาะภาพที่มีรูปถ่ายที่ชัดเจนฉันคิดว่าคุณมีวิธีการสร้างคุณลักษณะบางอย่างเพื่อเปลี่ยนภาพดิบเป็นคุณสมบัติที่มีประโยชน์สำหรับการเรียนรู้ของเครื่อง หากเป็นเรื่องจริงคุณสามารถลองฝึกอัลกอริทึมการจำแนกประเภท (มีจำนวนมากนั่นก็คือเครือข่ายประสาทเทียม ฯลฯ ) โดยให้อัลกอริธึมกับภาพถ่าย Bieber ที่รู้จักกันเป็นอย่างดี เมื่อคุณฝึกฝนแบบจำลองแล้วจะสามารถใช้ในการทำนายว่าภาพใหม่คือ Bieber หรือไม่

เทคนิคการเรียนรู้แบบมีผู้สอนแบบนี้ต้องการให้คุณมีข้อมูลที่คุณรู้คำตอบที่ถูกต้อง (Bieber หรือไม่) แต่อาจพบได้จากการค้นหารูปภาพของ Google นอกจากนี้ยังต้องการให้คุณมีคุณสมบัติที่เหมาะสมและฉันไม่รู้เกี่ยวกับการประมวลผลภาพหรืออัลกอริทึมของคุณเพียงพอที่จะรู้ว่านี่เป็นข้อเสียเปรียบครั้งสำคัญหรือไม่


2
แต่น่าเสียดายที่ขั้นตอนคุณลักษณะรุ่นทั้งเป็นที่ยากที่สุดและสำคัญที่สุด :(.
Steffen

@steffen มีข้อเสนอแนะบางอย่างที่ OP ยุ่งกับใบหน้าดังนั้นมีตัวสร้าง descriptor

@mpq: ฉันไม่สงสัยเลยว่า แต่ถ้า OP ไม่มีหนึ่งฟีเจอร์ต่อพิกเซลเขาต้องหาระดับการรวมที่มีความหมาย ฉันไม่ได้ลงคะแนนฉันแค่ต้องการชี้ให้เห็นถึงความซับซ้อนที่อยู่เบื้องหลังคำตอบนี้ (ซึ่งแน่นอนว่าถูกต้อง)
steffen

1
ขวาขั้นตอนการสร้างคุณสมบัติเป็นส่วนที่ยาก ฉันสมมติว่า OP สามารถทำได้เนื่องจากเขามีกลไกบางอย่างสำหรับการประมวลผลภาพอยู่แล้ว แม้ว่าเขาจะทำเช่นนั้นพวกเขาอาจจะเป็นเพียงฟีเจอร์ที่มีประโยชน์สำหรับการตรวจจับใบหน้า / ไม่ต้องเผชิญแทนที่จะเป็น Bieber / ไม่ใช่บีเบอร์ ... มันขึ้นอยู่กับคุณสมบัติ
Michael McGowan

7

คุณสามารถใช้วิธีการเช่น eigenfaces ที่http://en.wikipedia.org/wiki/Eigenface ต่อไปนี้เป็นขั้นตอนที่ดีเช่นเดียวกับการเชื่อมโยงไปยังการใช้งานที่แตกต่างกัน

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

จากที่นี่เป็นเรื่องปกติที่จะใช้สิ่งนี้ในวิธีการจัดหมวดหมู่ฝึกโมเดลและทำนายกรณี คุณสามารถทำได้โดยการฝึกฝนกับคนดังหลายคนและถ้าคุณทำนายใบหน้าจากทวิตเตอร์ว่าเป็นหนึ่งในนางแบบที่ได้รับการฝึกฝนของคุณให้เอามันออกไป คล้ายกับhttp://blog.cordiner.net/2010/12/02/eigenfaces-face-recognition-matlab/

สิ่งนี้ทนทุกข์ทรมานจากการแก้ไขอย่างต่อเนื่อง อีกไม่นานจะมี Justin Bieber ใหม่ที่ไม่เคยอยู่ในแบบจำลองที่คุณฝึกมาดังนั้นคุณไม่สามารถทำนายได้ นอกจากนี้ยังมีกรณีเช่น Whitney Houston คุณอาจไม่เคยคิดที่จะเพิ่มเธอมาก่อน แต่เธออาจเป็นภาพทั่วไปที่แสดงความเคารพและชื่นชมในอีกไม่กี่สัปดาห์ คุณจะไม่มีข้อเสียของรูปทารกตามที่กล่าวไว้ข้างต้น ปัญหาเหล่านี้ทำให้คุณสามารถใช้วิธีการจัดกลุ่มแบบลำดับชั้นมากขึ้น การลบกลุ่มชุดแรกสองสามชุดที่ใกล้เคียงกันมากหากถึงระดับการสนับสนุนกลุ่มแรกของคุณจะมี 15 รายการก่อนสร้างกลุ่มที่สอง ตอนนี้คุณไม่ต้องกังวลว่าจะมีใครในรูปแบบการฝึกอบรมของคุณ แต่คุณจะตกอยู่ในปัญหาภาพเด็ก




3

คุณต้องใส่อัลกอริทึมในการตรวจสอบบุคคลที่รูปภาพนั้นอ้างถึง คุณสามารถสร้างแบบจำลองโดยใช้ภาพบุคคลต่าง ๆ ของบุคลิกภาพที่มีชื่อเสียงและใช้ตัวแยกประเภทเพื่อให้แน่ใจว่าภาพนี้อ้างอิงถึงหนึ่งในภาพฐานข้อมูลของคุณ คุณต้องใช้ตัวจําแนกบางอย่างตามพารามิเตอร์ต่าง ๆ ที่ชอบต่อใบหน้าเช่นระยะห่างระหว่างตาหรือพารามิเตอร์อื่น ๆ เพื่อเพิ่มความแม่นยําของโมเดลของคุณ นอกจากนี้ยังมีการวิเคราะห์ผิวหนัง สิ่งสำคัญที่สุดคือการสร้างลักษณนามที่ดี วิธีนี้อาจมีช่องโหว่

แต่ก็ยังมีโครงการที่ดีมากที่ทำงานเกี่ยวกับการจดจำใบหน้าhttp://opencv-code.com/Opencv_Face_Detection


1
AFAIK OpenCV และไซต์ที่เชื่อมโยงใช้การตรวจจับใบหน้าเท่านั้น(ในภาพคือใบหน้ามนุษย์?) ซึ่งเป็นเพียงก้าวแรกสู่การจดจำใบหน้า(ใบหน้าคือใคร)
f3lix

2

คุณอาจจะลองท้องที่คร่ำเครียดมีความละเอียดอ่อน


1
KNN ธรรมดาไม่ดีสำหรับใบหน้ามาก ใบหน้าได้รับการแสดงให้เห็นถึงความหลากหลายของภาพที่ไม่ใช่เชิงเส้น ~ 25 มิติ
bayerj
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.