API FaceID ได้รับการออกแบบมาเพื่อสร้างโครงสร้างพื้นฐานแบ็กเอนด์สำหรับการตรวจสอบผู้ใช้ผ่านการจดจำใบหน้า ฟังก์ชั่น API นี้โดยรับเวกเตอร์การเป็นตัวแทนของใบหน้า (FRV) จากไคลเอนต์ระยะไกลจากนั้นตรวจสอบว่าสิ่งนี้ให้ FRV สอดคล้องกับหนึ่งที่มีอยู่ที่เก็บไว้ในฐานข้อมูลหรือไม่ จากการตรวจสอบนี้การเข้าถึงจะได้รับหรือปฏิเสธลูกค้า
API FACEID สามารถเข้าถึงลูกค้าได้ทุกรายที่สามารถส่งคำขอ HTTP ได้ พัฒนาขึ้นโดยใช้ Golang และติดตามสถาปัตยกรรมที่เหลือ API นำเสนอความยืดหยุ่นในแง่ของการใช้งานลูกค้า ลูกค้าสามารถพัฒนาได้ในภาษาการเขียนโปรแกรมใด ๆ และสามารถมาจากแพลตฟอร์มต่าง ๆ เช่นเว็บมือถือหรือเดสก์ท็อป ความสามารถในการรวมที่ไร้รอยต่อนี้ช่วยให้การรวมกันของฟังก์ชั่นการจดจำใบหน้าเป็นแอปพลิเคชันที่หลากหลาย โดยเฉพาะอย่างยิ่งกระบวนการที่ได้รับ FRV จากลูกค้าอยู่นอกขอบเขตของความรับผิดชอบของ API ของ FaceID
เอกสาร API มีอยู่ที่ http://faceid.orionsoft.site/reference
หมายเหตุ: คุณสามารถใช้เวกเตอร์ที่อยู่ที่ไฟล์ vectors.json ในไดเรกทอรีรูทของโครงการนี้เพื่อทดสอบ API เวกเตอร์เหล่านี้ถูกเก็บไว้ในฐานข้อมูลแล้ว
การจดจำใบหน้าเป็นเทคโนโลยีที่เกี่ยวข้องกับการระบุและตรวจสอบบุคคลโดยการวิเคราะห์และเปรียบเทียบคุณสมบัติใบหน้าของพวกเขา มันเป็นชุดย่อยของการระบุไบโอเมตริกซ์และมีแอพพลิเคชั่นต่าง ๆ รวมถึงระบบรักษาความปลอดภัยการตรวจสอบและการควบคุมการเข้าถึงผู้ใช้ นี่คือภาพรวมที่เรียบง่ายของวิธีการจดจำใบหน้า:
การตรวจจับใบหน้า: ขั้นตอนแรกคือการค้นหาและแยกใบหน้าออกจากภาพหรือกรอบวิดีโอ สิ่งนี้ทำโดยใช้อัลกอริทึมการตรวจจับใบหน้าซึ่งระบุภูมิภาคใบหน้าที่มีศักยภาพในข้อมูลอินพุต
การจัดแนวใบหน้า: เมื่อตรวจพบใบหน้าอัลกอริทึมอาจดำเนินการจัดแนวใบหน้าเพื่อให้แน่ใจว่าใบหน้าอยู่ในตำแหน่งที่ได้มาตรฐาน สิ่งนี้ช่วยในการทำให้คุณสมบัติเป็นมาตรฐานสำหรับการเปรียบเทียบที่แม่นยำ
การแยกฟีเจอร์: นี่เป็นขั้นตอนสำคัญที่มีการสกัดคุณสมบัติที่โดดเด่นของใบหน้าและกลายเป็นตัวแทนเชิงตัวเลข คุณสมบัติเหล่านี้อาจรวมถึงระยะทางระหว่างสถานที่สำคัญใบหน้าที่สำคัญมุมระหว่างจุดบางจุดและข้อมูลอื่น ๆ ที่สามารถแยกความแตกต่างของใบหน้าหนึ่งจากที่อื่น เทคนิคยอดนิยมสำหรับการสกัดฟีเจอร์ ได้แก่ รูปแบบไบนารีท้องถิ่น (LBP) ฮิสโตแกรมของการไล่ระดับสี (HOG) และเมื่อเร็ว ๆ นี้วิธีการเรียนรู้เชิงลึก
การเข้ารหัสคุณลักษณะ: คุณสมบัติที่สกัดจะถูกแปลงเป็นตัวแทนขนาดกะทัดรัดซึ่งสามารถเปรียบเทียบได้ง่ายกับการเป็นตัวแทนใบหน้าอื่น ๆ สิ่งนี้มักจะเกี่ยวข้องกับการลดขนาดของคุณสมบัติในขณะที่รักษาข้อมูลการเลือกปฏิบัติของพวกเขา
ฐานข้อมูลใบหน้า: ในสถานการณ์ของคุณคุณจะมีฐานข้อมูลที่มีการเป็นตัวแทนของใบหน้า (หรือฝัง) ของผู้ใช้ที่ได้รับอนุญาต ฐานข้อมูลนี้สามารถสร้างขึ้นได้โดยการรวบรวมและประมวลผลชุดภาพของผู้ใช้แต่ละคนในระหว่างการลงทะเบียน
การจับคู่ใบหน้า: เมื่อผู้ใช้พยายามเข้าถึงใบหน้าที่ส่งของพวกเขาจะถูกประมวลผลผ่านท่อเดียวกัน: การตรวจจับการจัดตำแหน่งการแยกคุณลักษณะและการเข้ารหัส การแสดงใบหน้าที่ได้จะถูกนำมาเปรียบเทียบกับการเป็นตัวแทนในฐานข้อมูลใบหน้าของคุณโดยใช้ตัวชี้วัดระยะทางเช่นระยะทางยุคลิดหรือความคล้ายคลึงกันของโคไซน์ แนวคิดคือการค้นหาการจับคู่ที่ใกล้เคียงที่สุด
Thresholding: การเปรียบเทียบให้คะแนนความคล้ายคลึงกัน คุณจะตั้งค่าขีด จำกัด ด้านบนซึ่งใบหน้าที่ส่งนั้นถือเป็นการจับคู่กับใบหน้าในฐานข้อมูล ธรณีประตูช่วยสร้างความสมดุลให้กับผลบวกที่ผิดพลาดและเชิงลบที่ผิดพลาด
การตัดสินใจ: ขึ้นอยู่กับคะแนนความคล้ายคลึงกันและเกณฑ์การตัดสินใจจะทำให้การเข้าถึงหรือไม่ หากคะแนนสูงกว่าเกณฑ์และภายในช่วงที่ยอมรับได้การเข้าถึงจะได้รับ มิฉะนั้นการเข้าถึงจะถูกปฏิเสธ
การเรียนรู้อย่างต่อเนื่อง: เพื่อปรับปรุงความแม่นยำในการรับรู้เมื่อเวลาผ่านไปบางระบบใช้การเรียนรู้อย่างต่อเนื่อง สิ่งนี้เกี่ยวข้องกับการอัปเดตการเป็นตัวแทนของใบหน้าเป็นระยะในฐานข้อมูลโดยใช้รูปภาพใหม่ของผู้ใช้ สิ่งนี้สามารถช่วยอธิบายถึงการเปลี่ยนแปลงที่ปรากฏเนื่องจากปัจจัยต่าง ๆ เช่นอายุหรือขนบนใบหน้า
FRV เป็นเวกเตอร์ที่แสดงถึงใบหน้าของบุคคล มันเป็นตัวแทนเชิงตัวเลขของใบหน้าและใช้เพื่อเปรียบเทียบใบหน้า FRV ถูกสร้างขึ้นโดยอัลกอริทึมการจดจำใบหน้าที่ใช้โดยไลบรารีที่ใช้ในฝั่งไคลเอ็นต์ ฝั่งไคลเอ็นต์สามารถเป็นแพลตฟอร์มใด ๆ (เว็บ, มือถือ, เดสก์ท็อป, ฯลฯ ) มาดูโครงสร้าง FRV:
[
0.123, -0.456, 0.789, 0.234, 0.567, 0.123, 0.678, -0.345,
-0.987, 0.876, -0.123, -0.456, 0.789, -0.234, -0.567, 0.123,
0.678, 0.345, -0.987, -0.876, 0.123, 0.456, -0.789, 0.234,
0.567, -0.123, 0.678, 0.345, 0.987, -0.876, -0.123, 0.456,
-0.789, 0.234, -0.567, -0.123, -0.678, 0.345, 0.987, 0.876,
0.123, -0.456, 0.789, -0.234, 0.567, -0.123, -0.678, -0.345,
0.987, -0.876, 0.123, 0.456, -0.789, -0.234, -0.567, -0.123,
0.678, -0.345, -0.987, 0.876, -0.123, -0.456, 0.789, -0.234,
-0.567, 0.123, 0.678, 0.345, -0.987, -0.876, 0.123, 0.456,
-0.789, 0.234, -0.567, -0.123, -0.678, 0.345, 0.987, 0.876,
0.123, -0.456, 0.789, -0.234, 0.567, -0.123, -0.678, -0.345,
0.987, -0.876, 0.123, 0.456, -0.789, -0.234, -0.567, -0.123,
0.678, -0.345, -0.987, 0.876, -0.123, -0.456, 0.789, -0.234,
0.123, -0.456, 0.789, -0.234, 0.567, -0.123, -0.678, -0.345,
0.987, -0.876, 0.123, 0.456, -0.789, -0.234, -0.567, -0.123,
0.678, -0.345, -0.987, 0.876, -0.123, -0.456, 0.789, -0.234
]
ข้างต้นเรามี 128 มิติ FRV (เวกเตอร์การเป็นตัวแทนใบหน้า) ของการแสดงตัวเลขของใบหน้าของใครบางคน ไลบรารีที่แตกต่างกันสามารถสร้างมิติที่แตกต่างกัน FRVs ซึ่งอาจเป็น 256, 512 หรือยาวมากขึ้น เราสามารถคิดว่า FRV นี้เป็นตราประทับที่เป็นตัวเลขของใครบางคน เนื่องจากไม่มีใครมีใบหน้าเดียวกันไม่มีใครมี FRV เดียวกัน ดังนั้น FRV สามารถใช้เพื่อระบุใครบางคนกับฐานข้อมูลของ FRVS
API faceid นี้ใช้ FRV ที่ส่งโดยไคลเอนต์เพื่อระบุว่า FRV ที่กำหนดตรงกับ FRV ใด ๆ ในฐานข้อมูล หาก FRV ที่กำหนดตรงกับ FRV ใด ๆ ในฐานข้อมูล API จะให้การเข้าถึงไคลเอนต์ มิฉะนั้น API ปฏิเสธการเข้าถึงลูกค้า
ฐานข้อมูลเวกเตอร์เป็นสิ่งใหม่ในโลกของฐานข้อมูลและการใช้งานกำลังเติบโตอย่างรวดเร็ว ในกรณีของเราเราใช้ QDRANT (https://ddrant.tech) ฐานข้อมูลเวกเตอร์ที่เป็นโอเพนซอร์สและใช้งานได้ฟรี โปรดจำไว้ว่าเวกเตอร์การเป็นตัวแทนของใบหน้านั้นเป็นอาร์เรย์ของตัวเลขลอยที่มีขนาดใหญ่มาก บนใบหน้า API นี้เรากำลังใช้ FRV ขนาด 128 มิติ แต่อาจเป็นขนาด 256, 512 หรือยาวกว่า ดังนั้นเราต้องการฐานข้อมูลที่สามารถเก็บข้อมูลจำนวนมากนี้และสามารถทำการค้นหาได้อย่างรวดเร็ว
ฐานข้อมูล SQL และ NOSQL แบบดั้งเดิมสามารถใช้ในการจัดเก็บ FRVS แต่ไม่ได้รับการปรับให้เหมาะสมสำหรับข้อมูลประเภทนี้ ฐานข้อมูลเวกเตอร์ได้รับการปรับให้เหมาะสมสำหรับการจัดเก็บและค้นหาเวกเตอร์ พวกเขายังได้รับการปรับให้เหมาะสมสำหรับการค้นหาที่รวดเร็วและสามารถทำการค้นหาเวกเตอร์หลายล้านตัวในไม่กี่มิลลิวินาที ซึ่งหมายความว่าใบหน้าสามารถระบุได้ในไม่กี่มิลลิวินาทีซึ่งเหมาะสำหรับการใช้งานเรียลไทม์
โครงการนี้เป็นการดำเนินการอย่างง่าย ๆ ของ API การจดจำใบหน้า มันเป็น API ง่าย ๆ ที่สามารถใช้ในการรวมการจดจำใบหน้าในแอปพลิเคชันใด ๆ API เขียนขึ้นใน Golang และใช้สถาปัตยกรรมที่เหลือ ลูกค้าสามารถเขียนได้ในภาษาใด ๆ และสามารถมาจากแพลตฟอร์มใด ๆ (เว็บ, มือถือ, เดสก์ท็อป, ฯลฯ ) หากคุณต้องการใช้การจดจำใบหน้าในแอปพลิเคชันของคุณคุณสามารถใช้ FaceID API เป็นจุดเริ่มต้น โปรดอย่าลังเลที่จะติดต่อฉันที่ [email protected] หากคุณมีคำถามหรือคำแนะนำใด ๆ ขอบคุณ!