นอกจากนี้คุณยังสามารถอ่านเวอร์ชันที่แปลของไฟล์นี้เป็นภาษาจีน简体中文版หรือเป็นภาษาเกาหลี한국어หรือเป็นภาษาญี่ปุ่น日本語
รับรู้และจัดการใบหน้าจาก Python หรือจากบรรทัดคำสั่งที่มีห้องสมุดการจดจำใบหน้าที่ง่ายที่สุดในโลก
สร้างขึ้นโดยใช้การจดจำใบหน้าที่ทันสมัยของ DLIB ที่สร้างขึ้นด้วยการเรียนรู้อย่างลึกซึ้ง แบบจำลองมีความแม่นยำ 99.38% บนใบหน้าที่มีป้ายกำกับในเกณฑ์มาตรฐานป่า
นอกจากนี้ยังมีเครื่องมือบรรทัดคำสั่ง face_recognition
ง่าย ๆ ที่ให้คุณจดจำใบหน้าบนโฟลเดอร์ของภาพจากบรรทัดคำสั่ง!
ค้นหาใบหน้าทั้งหมดที่ปรากฏในภาพ:
import face_recognition
image = face_recognition . load_image_file ( "your_file.jpg" )
face_locations = face_recognition . face_locations ( image )
รับสถานที่และโครงร่างของดวงตาจมูกปากและคางของแต่ละคน
import face_recognition
image = face_recognition . load_image_file ( "your_file.jpg" )
face_landmarks_list = face_recognition . face_landmarks ( image )
การค้นหาคุณสมบัติใบหน้ามีประโยชน์มากสำหรับสิ่งสำคัญมากมาย แต่คุณสามารถใช้มันสำหรับสิ่งที่โง่จริงๆเช่นการใช้การแต่งหน้าดิจิตอล (คิดว่า 'meitu'):
รับรู้ว่าใครปรากฏในแต่ละภาพ
import face_recognition
known_image = face_recognition . load_image_file ( "biden.jpg" )
unknown_image = face_recognition . load_image_file ( "unknown.jpg" )
biden_encoding = face_recognition . face_encodings ( known_image )[ 0 ]
unknown_encoding = face_recognition . face_encodings ( unknown_image )[ 0 ]
results = face_recognition . compare_faces ([ biden_encoding ], unknown_encoding )
คุณยังสามารถใช้ห้องสมุดนี้กับไลบรารี Python อื่น ๆ เพื่อจดจำใบหน้าแบบเรียลไทม์:
ดูตัวอย่างนี้สำหรับรหัส
การสาธิตสมุดบันทึก Jupyter ที่ใช้ร่วมกันของผู้ใช้ (ไม่ได้รับการสนับสนุนอย่างเป็นทางการ):
ก่อนอื่นตรวจสอบให้แน่ใจว่าคุณติดตั้ง DLIB ด้วยการผูก Python แล้ว:
จากนั้นตรวจสอบให้แน่ใจว่าคุณติดตั้ง cmake:
brew install cmake
สุดท้ายติดตั้งโมดูลนี้จาก PYPI โดยใช้ pip3
(หรือ pip2
สำหรับ Python 2):
pip3 install face_recognition
หรือคุณสามารถลองใช้ไลบรารีนี้ด้วย Docker ดูส่วนนี้
หากคุณมีปัญหาในการติดตั้งคุณสามารถลองใช้ VM ที่กำหนดค่าไว้ล่วงหน้า
pkg install graphics/py-face_recognition
ในขณะที่ Windows ไม่ได้รับการสนับสนุนอย่างเป็นทางการผู้ใช้ที่มีประโยชน์ได้โพสต์คำแนะนำเกี่ยวกับวิธีการติดตั้งไลบรารีนี้:
เมื่อคุณติดตั้ง face_recognition
คุณจะได้รับโปรแกรมบรรทัดคำสั่งง่ายๆสองโปรแกรม:
face_recognition
- รู้จักใบหน้าในรูปถ่ายหรือโฟลเดอร์เต็มรูปแบบสำหรับภาพถ่ายface_detection
- ค้นหาใบหน้าในภาพถ่ายหรือโฟลเดอร์เต็มรูปแบบสำหรับภาพถ่าย face_recognition
คำสั่ง face_recognition
ช่วยให้คุณรับรู้ใบหน้าในภาพถ่ายหรือโฟลเดอร์เต็มรูปแบบสำหรับภาพถ่าย
ก่อนอื่นคุณต้องจัดทำโฟลเดอร์พร้อมรูปเดียวของแต่ละคนที่คุณรู้จักอยู่แล้ว ควรมีไฟล์รูปภาพหนึ่งไฟล์สำหรับแต่ละคนที่มีไฟล์ที่มีชื่อตามที่อยู่ในรูปภาพ:
ถัดไปคุณต้องมีโฟลเดอร์ที่สองพร้อมไฟล์ที่คุณต้องการระบุ:
จากนั้นในตัวคุณเพียงเรียกใช้คำสั่ง face_recognition
ผ่านโฟลเดอร์ของคนที่รู้จักและโฟลเดอร์ (หรือภาพเดี่ยว) กับคนที่ไม่รู้จักและมันจะบอกคุณว่าใครอยู่ในแต่ละภาพ:
$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person
มีหนึ่งบรรทัดในผลลัพธ์สำหรับแต่ละใบหน้า ข้อมูลจะถูกแยกออกมาพร้อมกับชื่อไฟล์และชื่อของบุคคลที่พบ
unknown_person
เป็นใบหน้าในภาพที่ไม่ตรงกับใครในโฟลเดอร์ของคนที่รู้จัก
face_detection
คำสั่ง face_detection
ช่วยให้คุณค้นหาตำแหน่ง (พิกเซลพิกเซล) ของใบหน้าใด ๆ ในภาพ
เพียงเรียกใช้คำสั่ง face_detection
ผ่านโฟลเดอร์ของรูปภาพเพื่อตรวจสอบ (หรือภาพเดียว):
$ face_detection ./folder_with_pictures/
examples/image1.jpg,65,215,169,112
examples/image2.jpg,62,394,211,244
examples/image2.jpg,95,941,244,792
มันพิมพ์หนึ่งบรรทัดสำหรับแต่ละใบหน้าที่ตรวจพบ พิกัดที่รายงานคือพิกัดด้านบนขวาล่างและซ้ายของใบหน้า (เป็นพิกเซล)
หากคุณได้รับการแข่งขันหลายรายการสำหรับคนคนเดียวกันอาจเป็นไปได้ว่าคนในภาพถ่ายของคุณจะดูคล้ายกันมากและจำเป็นต้องมีค่าความอดทนต่ำกว่าเพื่อให้การเปรียบเทียบใบหน้าเข้มงวดมากขึ้น
คุณสามารถทำได้ด้วยพารามิเตอร์ --tolerance
ค่าความอดทนเริ่มต้นคือ 0.6 และตัวเลขที่ต่ำกว่าทำให้การเปรียบเทียบหน้าเข้มงวดมากขึ้น:
$ face_recognition --tolerance 0.54 ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person
หากคุณต้องการดูระยะทางใบหน้าที่คำนวณสำหรับการแข่งขันแต่ละครั้งเพื่อปรับการตั้งค่าความอดทนคุณสามารถใช้ --show-distance true
:
$ face_recognition --show-distance true ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama,0.378542298956785
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person,None
หากคุณเพียงแค่ต้องการทราบชื่อของคนในแต่ละภาพถ่าย แต่ไม่สนใจชื่อไฟล์คุณสามารถทำได้:
$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/ | cut -d ' , ' -f2
Barack Obama
unknown_person
การจดจำใบหน้าสามารถทำได้แบบขนานหากคุณมีคอมพิวเตอร์ที่มีคอร์ CPU หลายตัว ตัวอย่างเช่นหากระบบของคุณมี CPU 4 แกนคุณสามารถประมวลผลภาพได้มากถึง 4 เท่าในระยะเวลาเดียวกันโดยใช้คอร์ CPU ทั้งหมดของคุณในแบบขนาน
หากคุณใช้ Python 3.4 หรือใหม่กว่าให้ส่งผ่านในพารามิเตอร์ --cpus <number_of_cpu_cores_to_use>
: พารามิเตอร์:
$ face_recognition --cpus 4 ./pictures_of_people_i_know/ ./unknown_pictures/
นอกจากนี้คุณยังสามารถส่งผ่าน --cpus -1
เพื่อใช้คอร์ CPU ทั้งหมดในระบบของคุณ
คุณสามารถนำเข้าโมดูล face_recognition
แล้วจัดการใบหน้าได้อย่างง่ายดายด้วยรหัสสองสามบรรทัด ง่ายสุด ๆ !
เอกสาร API: https://face-recognition.readthedocs.io
import face_recognition
image = face_recognition . load_image_file ( "my_picture.jpg" )
face_locations = face_recognition . face_locations ( image )
# face_locations is now an array listing the co-ordinates of each face!
ดูตัวอย่างนี้เพื่อลองใช้
นอกจากนี้คุณยังสามารถเลือกใช้รูปแบบการตรวจจับใบหน้าที่มีความแม่นยำมากขึ้น
หมายเหตุ: การเร่งความเร็วของ GPU (ผ่านห้องสมุด CUDA ของ Nvidia) เป็นสิ่งจำเป็นสำหรับประสิทธิภาพที่ดีกับรุ่นนี้ คุณจะต้องเปิดใช้งานการสนับสนุน CUDA เมื่อ dlib
ที่น่ารำคาญ
import face_recognition
image = face_recognition . load_image_file ( "my_picture.jpg" )
face_locations = face_recognition . face_locations ( image , model = "cnn" )
# face_locations is now an array listing the co-ordinates of each face!
ดูตัวอย่างนี้เพื่อลองใช้
หากคุณมีภาพจำนวนมากและ GPU คุณสามารถหาใบหน้าในแบทช์ได้
import face_recognition
image = face_recognition . load_image_file ( "my_picture.jpg" )
face_landmarks_list = face_recognition . face_landmarks ( image )
# face_landmarks_list is now an array with the locations of each facial feature in each face.
# face_landmarks_list[0]['left_eye'] would be the location and outline of the first person's left eye.
ดูตัวอย่างนี้เพื่อลองใช้
import face_recognition
picture_of_me = face_recognition . load_image_file ( "me.jpg" )
my_face_encoding = face_recognition . face_encodings ( picture_of_me )[ 0 ]
# my_face_encoding now contains a universal 'encoding' of my facial features that can be compared to any other picture of a face!
unknown_picture = face_recognition . load_image_file ( "unknown.jpg" )
unknown_face_encoding = face_recognition . face_encodings ( unknown_picture )[ 0 ]
# Now we can see the two face encodings are of the same person with `compare_faces`!
results = face_recognition . compare_faces ([ my_face_encoding ], unknown_face_encoding )
if results [ 0 ] == True :
print ( "It's a picture of me!" )
else :
print ( "It's not a picture of me!" )
ดูตัวอย่างนี้เพื่อลองใช้
ตัวอย่างทั้งหมดมีอยู่ที่นี่
หากคุณต้องการสร้างการปฏิบัติการแบบสแตนด์อโลนที่สามารถทำงานได้โดยไม่จำเป็นต้องติดตั้ง python
หรือ face_recognition
คุณสามารถใช้ Pyinstaller ได้ อย่างไรก็ตามต้องใช้การกำหนดค่าที่กำหนดเองเพื่อทำงานกับไลบรารีนี้ ดูปัญหานี้สำหรับวิธีการทำ
face_recognition
หากคุณต้องการเรียนรู้ว่าสถานที่และการจดจำทำงานอย่างไรแทนที่จะขึ้นอยู่กับห้องสมุดกล่องดำอ่านบทความของฉัน
เนื่องจาก face_recognition
ขึ้นอยู่กับ dlib
ซึ่งเขียนใน C ++ จึงเป็นเรื่องยากที่จะปรับใช้แอพโดยใช้มันกับผู้ให้บริการโฮสติ้งคลาวด์เช่น Heroku หรือ AWS
เพื่อให้สิ่งต่าง ๆ ง่ายขึ้นมีตัวอย่าง Dockerfile ใน repo นี้ซึ่งแสดงวิธีเรียกใช้แอพที่สร้างด้วย face_recognition
ในคอนเทนเนอร์ Docker ด้วยเหตุนี้คุณควรจะสามารถปรับใช้กับบริการใด ๆ ที่รองรับภาพนักเทียบท่า
คุณสามารถลองใช้อิมเมจนักเทียบท่าในเครื่องโดยเรียกใช้: docker-compose up --build
นอกจากนี้ยังมีภาพนักเทียบท่า prebuilt หลายภาพ
ผู้ใช้ Linux ที่มี GPU (ไดรเวอร์> = 384.81) และการติดตั้ง Nvidia-Docker สามารถเรียกใช้ตัวอย่างบน GPU: เปิดไฟล์ Docker-compose.yml และไม่ทำให้ไม่รู้สึกถึง dockerfile: Dockerfile.gpu
และ runtime: nvidia
Lines
หากคุณพบปัญหาโปรดอ่านส่วนข้อผิดพลาดทั่วไปของวิกิก่อนที่จะยื่นปัญหา GitHub