ใช้การจดจำใบหน้าที่ป้องกันการปลอมแปลงได้อย่างรวดเร็วโดยไม่ต้องเชื่อมต่อกับคลาวด์
Contributed By DigiKey's North American Editors
2021-02-24
การจดจำใบหน้าได้รับการยอมรับอย่างกว้างขวางสำหรับการรับรองความถูกต้องในการเข้าถึงสมาร์ทโฟน แต่ความพยายามที่จะใช้เทคโนโลยีนี้ในวงกว้างมากขึ้นทำให้เกิดปัญหาในด้านอื่น ๆ แม้ว่าจะมีประสิทธิภาพและใช้งานง่ายก็ตาม นอกเหนือจากความท้าทายทางเทคนิคในการใช้โซลูชันแมชชีนเลิร์นนิงราคาประหยัดที่เชื่อถือได้แล้วนักพัฒนาต้องจัดการกับข้อกังวลของผู้ใช้เกี่ยวกับความน่าเชื่อถือและความเป็นส่วนตัวของวิธีการจดจำใบหน้าแบบเดิมที่ขึ้นอยู่กับการเชื่อมต่อบนคลาวด์ที่เสี่ยงต่อการปลอมแปลง
บทความนี้กล่าวถึงความยากลำบากในการรับรองความถูกต้องอย่างปลอดภัยก่อนที่จะแนะนำโซลูชันฮาร์ดแวร์และซอฟต์แวร์จาก NXP Semiconductors ที่ออกแบบมาเพื่อจัดการกับปัญหานี้ จากนั้นจะแสดงให้เห็นว่านักพัฒนาที่ไม่มีประสบการณ์ในวิธีการเรียนรู้ของเครื่องมาก่อนจะสามารถใช้โซลูชันนี้เพื่อใช้การจดจำใบหน้าต่อต้านการปลอมแปลงแบบออฟไลน์ในผลิตภัณฑ์อัจฉริยะได้อย่างไร
ความท้าทายของการรับรองความถูกต้องอย่างปลอดภัยสำหรับผลิตภัณฑ์อัจฉริยะ
ในการจัดการกับความกังวลที่เพิ่มขึ้นเกี่ยวกับความปลอดภัยของผลิตภัณฑ์อัจฉริยะนักพัฒนาพบว่าตัวเองเหลือตัวเลือกที่สามารถใช้งานได้เพียงไม่กี่ตัวสำหรับการตรวจสอบผู้ใช้ที่เชื่อถือได้ซึ่งกำลังมองหาการเข้าถึงที่รวดเร็วและปลอดภัย วิธีการแบบดั้งเดิมอาศัยวิธีการพิสูจน์ตัวตนแบบหลายปัจจัยซึ่งอยู่บนปัจจัยการตรวจสอบสิทธิ์แบบคลาสสิกรวมกันบางอย่าง ได้แก่ “ สิ่งที่คุณรู้” เช่นรหัสผ่าน “สิ่งที่คุณมี” เช่นคีย์จริงหรือคีย์การ์ด และ “บางสิ่งที่คุณเป็น” ซึ่งโดยทั่วไปมักเป็นปัจจัยทางชีวมิติเช่นลายนิ้วมือหรือม่านตา การใช้วิธีนี้การล็อกประตูที่ได้รับการรับรองความถูกต้องอย่างเข้มงวดอาจทำให้ผู้ใช้ต้องป้อนรหัสใช้คีย์การ์ดและระบุลายนิ้วมือเพิ่มเติมเพื่อปลดล็อกประตู ในทางปฏิบัติข้อกำหนดที่เข้มงวดดังกล่าวเป็นเรื่องที่น่ารำคาญหรือใช้ไม่ได้จริงสำหรับผู้บริโภคที่ต้องตรวจสอบสิทธิ์ตัวเองบ่อยครั้งและง่ายดายด้วยสมาร์ทโฟนหรืออุปกรณ์อื่น ๆ ที่ใช้เป็นประจำ
การใช้การจดจำใบหน้าทำให้การพิสูจน์ตัวตนง่ายขึ้นสำหรับผู้ใช้สมาร์ทโฟน แต่สมาร์ทโฟนมีข้อดีบางประการที่อาจไม่มีในอุปกรณ์ทุกเครื่อง นอกเหนือจากพลังการประมวลผลที่สำคัญที่มีอยู่ในสมาร์ทโฟนระดับแนวหน้าแล้วการเชื่อมต่อตลอดเวลายังเป็นข้อกำหนดพื้นฐานสำหรับการส่งมอบบริการที่ซับซ้อนที่ผู้ใช้คาดหวังเป็นประจำ
สำหรับผลิตภัณฑ์จำนวนมากที่ต้องการการรับรองความถูกต้องที่ปลอดภัยโดยทั่วไปแล้วแพลตฟอร์มปฏิบัติการพื้นฐานจะให้ทรัพยากรการประมวลผลที่เรียบง่ายกว่าและการเชื่อมต่อที่จำกัดมากขึ้น บริการจดจำใบหน้าจากผู้ให้บริการระบบคลาวด์ชั้นนำจะเปลี่ยนภาระการประมวลผลไปยังระบบคลาวด์ แต่ความจำเป็นในการเชื่อมต่อที่มีประสิทธิภาพเพื่อให้แน่ใจว่าเวลาตอบสนองน้อยที่สุดอาจกำหนดข้อกำหนดที่อยู่นอกเหนือความสามารถของแพลตฟอร์ม ด้วยความกังวลที่เท่าเทียมกันหรือมากกว่าสำหรับผู้ใช้การส่งภาพของพวกเขาผ่านเครือข่ายสาธารณะเพื่อประมวลผลและอาจจัดเก็บไว้ในระบบคลาวด์ทำให้เกิดปัญหาความเป็นส่วนตัวที่สำคัญ
การใช้ i.MX RT106F จาก NXP Semiconductors โปรเซสเซอร์และซอฟต์แวร์ที่เกี่ยวข้องขณะนี้นักพัฒนาสามารถใช้การจดจำใบหน้าแบบออฟไลน์ที่จัดการกับข้อกังวลเหล่านี้ได้โดยตรง
ฮาร์ดแวร์และซอฟต์แวร์สำหรับการจดจำใบหน้าออฟไลน์ที่ป้องกันการปลอมแปลง
หนึ่งในสมาชิกของ NXP i.MX RT1060 ไมโครคอนโทรลเลอร์ครอสโอเวอร์ (MCU) ตระกูล NXP i.MX RT106F ได้รับการออกแบบมาโดยเฉพาะเพื่อรองรับการรวมระบบจดจำใบหน้าแบบออฟไลน์เข้ากับอุปกรณ์สมาร์ทโฮมเครื่องใช้สำหรับผู้บริโภคอุปกรณ์รักษาความปลอดภัยและอุปกรณ์อุตสาหกรรมได้อย่างง่ายดาย ขึ้นอยู่กับ Arm® คอร์โปรเซสเซอร์ Cortex®-M7 โปรเซสเซอร์ทำงานที่ 528 megahertz (MHz) สำหรับเกรดอุตสาหกรรม MIMXRT106FCVL5Bหรือ 600 MHz สำหรับโปรเซสเซอร์เกรดเชิงพาณิชย์เช่น MIMXRT106FDVL6A และ MIMXRT106FDVL6B
นอกเหนือจากการรองรับอินเทอร์เฟซหน่วยความจำภายนอกที่หลากหลายแล้วโปรเซสเซอร์ i.MX RT106F ยังมีหน่วยความจำเข้าถึงโดยสุ่มบนชิป (RAM) 1 เมกะไบต์ (Mbyte) พร้อม 512 กิโลไบต์ (Kbyte) ที่กำหนดค่าเป็น RAM สำหรับวัตถุประสงค์ทั่วไปและ 512 Kbytes ที่สามารถกำหนดค่าได้ ไม่ว่าจะเป็น RAM เอนกประสงค์หรือหน่วยความจำคู่อย่างแน่นหนา (TCM) สำหรับคำแนะนำ (I-TCM) หรือข้อมูล (D-TCM) นอกเหนือจากการจัดการพลังงานบนชิปแล้วโปรเซสเซอร์เหล่านี้ยังนำเสนอชุดคุณสมบัติรวมที่ครอบคลุมสำหรับกราฟิกความปลอดภัยการควบคุมระบบและอินเทอร์เฟซทั้งแบบแอนะล็อกและดิจิทัลที่มักจะต้องใช้เพื่อรองรับอุปกรณ์สำหรับผู้บริโภคอินเทอร์เฟซสำหรับเครื่องจักรในอุตสาหกรรม (HMI) และการควบคุมมอเตอร์ รูปที่ 1)
รูปที่ 1: โปรเซสเซอร์ i.MX RT106F ของ NXP Semiconductor รวมชุดบล็อกการทำงานที่จำเป็นเพื่อรองรับการจดจำใบหน้าสำหรับผู้บริโภคผลิตภัณฑ์อุตสาหกรรมและความปลอดภัย (แหล่งรูปภาพ: NXP)
แม้ว่าจะคล้ายกับสมาชิกตระกูล i.MX RT1060 อื่น ๆ แต่โปรเซสเซอร์ i.MX RT106F รวมอยู่ในใบอนุญาตรันไทม์สำหรับซอฟต์แวร์จดจำใบหน้า Oasis Lite ของ NXP ออกแบบมาเพื่อเพิ่มความเร็วในการอนุมานในโปรเซสเซอร์ระดับนี้สภาพแวดล้อมรันไทม์ของ Oasis Lite ทำการตรวจจับใบหน้าการจดจำและแม้แต่การจำแนกอารมณ์ที่จำกัด โดยใช้โมเดลการอนุมานของเครือข่ายประสาทเทียม (NN) ที่ทำงานบนเอ็นจิ้นการอนุมานและ MiniCV ซึ่งเป็นเวอร์ชันที่แยกออกจาก open ไลบรารีวิสัยทัศน์คอมพิวเตอร์ OpenCV ที่มา กลไกการอนุมานสร้างบนไลบรารี NXP NN และไลบรารี Arm Cortex Microcontroller System Interface Standard NN (CMSIS-NN) (รูปที่ 2)
รูปที่ 2: ไลบรารีรันไทม์ NXP Oasis Lite ประกอบด้วยคอร์ Oasis Lite ที่ใช้ MiniCV และเอ็นจิ้นการอนุมาน NXP ที่สร้างขึ้นบนไลบรารีเครือข่ายประสาทจาก NXP และ Arm (แหล่งรูปภาพ: NXP)
แบบจำลองการอนุมานอยู่บนแพลตฟอร์ม i.MX RT106F ดังนั้นการตรวจจับใบหน้าและการจดจำจึงดำเนินการในพื้นที่ซึ่งแตกต่างจากโซลูชันอื่น ๆ ที่ขึ้นอยู่กับทรัพยากรบนคลาวด์เพื่อเรียกใช้อัลกอริทึมการเรียนรู้ของเครื่อง ด้วยความสามารถในการจดจำใบหน้าแบบออฟไลน์นี้ผู้ออกแบบผลิตภัณฑ์อัจฉริยะจึงมั่นใจได้ว่ามีการตรวจสอบความถูกต้องเป็นส่วนตัวแม้จะมีแบนด์วิดท์ต่ำหรือการเชื่อมต่ออินเทอร์เน็ตที่ขาด ๆ หาย ๆ นอกจากนี้การตรวจสอบความถูกต้องจะเกิดขึ้นอย่างรวดเร็วด้วยการรวมฮาร์ดแวร์และซอฟต์แวร์นี้โดยใช้เวลาน้อยกว่า 800 มิลลิวินาที (มิลลิวินาที) เพื่อให้โปรเซสเซอร์ตื่นจากโหมดสแตนด์บายที่ใช้พลังงานต่ำและจดจำใบหน้าได้อย่างสมบูรณ์
เมื่อใช้กับโปรเซสเซอร์ i.MX RT106F รันไทม์ Oasis Lite ช่วยลดความยุ่งยากในการใช้งานการจดจำใบหน้าแบบออฟไลน์สำหรับผลิตภัณฑ์อัจฉริยะ แต่แน่นอนว่าโปรเซสเซอร์และสภาพแวดล้อมรันไทม์เป็นเพียงส่วนหนึ่งของโซลูชันระบบที่จำเป็นเท่านั้น นอกเหนือจากชุดส่วนประกอบของระบบที่สมบูรณ์มากขึ้นแล้วโซลูชันการพิสูจน์ตัวตนที่มีประสิทธิภาพยังต้องการความสามารถในการถ่ายภาพที่สามารถบรรเทาภัยคุกคามด้านความปลอดภัยประเภทหนึ่งที่เรียกว่าการโจมตีการนำเสนอ การโจมตีเหล่านี้พยายามปลอมแปลงการรับรองความถูกต้องของการจดจำใบหน้าโดยใช้รูปถ่าย สำหรับนักพัฒนาที่ต้องการปรับใช้การรับรองความถูกต้องด้วยใบหน้าอย่างรวดเร็วในผลิตภัณฑ์ของตนเอง ผลิตภัณฑ์จาก NXP SLN-VIZNAS-IOT ชุดพัฒนาและซอฟต์แวร์ที่เกี่ยวข้องเป็นแพลตฟอร์มที่พร้อมใช้งานสำหรับการประเมินการสร้างต้นแบบและการพัฒนาระบบจดจำใบหน้าแบบออฟไลน์ป้องกันการปลอมแปลง
โซลูชันระบบความปลอดภัยที่สมบูรณ์สำหรับการจดจำใบหน้า
เช่นเดียวกับโปรเซสเซอร์ที่ทันสมัยที่สุดโปรเซสเซอร์ i.MX RT106F ต้องการส่วนประกอบเพิ่มเติมเพียงไม่กี่ชิ้นเพื่อมอบแพลตฟอร์มการประมวลผลที่มีประสิทธิภาพ ชุด NXP SLN-VIZNAS-IOT ทำให้การออกแบบเสร็จสมบูรณ์โดยการรวม i.MX RT106F เข้ากับอุปกรณ์เพิ่มเติมเพื่อจัดหาแพลตฟอร์มฮาร์ดแวร์ที่สมบูรณ์ (รูปที่ 3)
รูปที่ 3: ชุด NXP SLN-VIZNAS-IOT ประกอบด้วยโมดูลที่เชื่อมต่อซึ่งจัดเตรียมแพลตฟอร์มระบบที่เชื่อมต่อที่แข็งแกร่งซึ่งจำเป็นในการเรียกใช้ซอฟต์แวร์การพิสูจน์ตัวตน (แหล่งรูปภาพ: NXP)
บอร์ดโมดูลที่เชื่อมต่อของชุดประกอบด้วยโปรเซสเซอร์ NXP MIMXRT106FDVL6A i.MX RT106F และ NXP A71CH องค์ประกอบที่ปลอดภัยและตัวเลือกการเชื่อมต่อสองตัว - จาก NXP MKW41Z512VHT4 Kinetis KW41Z Bluetooth low energy (BLE) system-on-chip (SoC) และอุปกรณ์จาก Murata ElectronicsLBEE5KL1DX-883 โมดูล Wi-Fi/Bluetooth
เพื่อเสริมหน่วยความจำบนชิปของโปรเซสเซอร์โมดูลที่เชื่อมต่อจะเพิ่มอุปกรณ์จาก Winbond Electronics W9825G6JB 256 เมกะบิต (Mbit) ซิงโครนัสไดนามิกแรม (SDRAM) และ โซลูชันซิลิกอนในตัว Inc. (ISSI) IS26KL256S-DABLI00 แฟลช 256 Mbit NOR และอุปกรณ์จาก ISSI IS25LP256D อุปกรณ์ 256 Mbit Quad Serial Peripheral Interface (SPI)
ในที่สุดโมดูลจะเพิ่มอุปกรณ์จาก Torex Semiconductor XCL214B333DR ตัวแปลงบั๊กเพื่อเสริมความสามารถในการจัดการพลังงานภายในของโปรเซสเซอร์ i.MX RT106F สำหรับอุปกรณ์เพิ่มเติมบนบอร์ดโมดูลที่เชื่อมต่อ
โมดูลที่เชื่อมต่อจะติดตั้งบนบอร์ดแอพพลิเคชั่นวิสัยทัศน์ที่รวม Murata Electronics IRA-S210ST01 เซ็นเซอร์อินฟราเรดแบบพาสซีฟ (PIR), เซ็นเซอร์ตรวจจับความเคลื่อนไหว, เครื่องชาร์จแบตเตอรี่, การรองรับเสียง, ไดโอดเปล่งแสง (LED), ปุ่มและขั้วต่ออินเทอร์เฟซ (รูปที่ 4)
รูปที่ 4: ในชุด NXP SLN-VIZNAS-IOT โมดูลที่เชื่อมต่อ (ซ้าย) จะติดอยู่กับบอร์ดแอพพลิเคชั่นการมองเห็นเพื่อเป็นรากฐานของฮาร์ดแวร์สำหรับการจดจำใบหน้า (แหล่งรูปภาพ: NXP)
นอกจากแพลตฟอร์มระบบนี้แล้วการออกแบบระบบจดจำใบหน้าอย่างชัดเจนต้องใช้เซ็นเซอร์กล้องที่เหมาะสมเพื่อจับภาพใบหน้าของผู้ใช้ อย่างไรก็ตามตามที่กล่าวไว้ก่อนหน้านี้ความกังวลเกี่ยวกับการโจมตีการนำเสนอจำเป็นต้องมีความสามารถในการถ่ายภาพเพิ่มเติม
การลดการโจมตีการนำเสนอ
นักวิจัยได้สำรวจวิธีการตรวจจับการโจมตีการนำเสนอ (PAD) ที่แตกต่างกันมานานหลายปีซึ่งออกแบบมาเพื่อลดความพยายามเช่นการใช้ลายนิ้วมือแฝงหรือภาพใบหน้าเพื่อปลอมแปลงระบบการตรวจสอบความถูกต้องแบบไบโอเมตริกซ์ แม้ว่ารายละเอียดจะอยู่นอกเหนือขอบเขตของบทความนี้ แต่วิธีการของ PAD โดยทั่วไปใช้การวิเคราะห์เชิงลึกเกี่ยวกับคุณภาพและลักษณะของข้อมูลไบโอเมตริกซ์ที่บันทึกเป็นส่วนหนึ่งของกระบวนการตลอดจนวิธีการตรวจจับ "ความเป็นอยู่" ที่ออกแบบมาเพื่อตรวจสอบว่าข้อมูลไบโอเมตริกซ์ ถูกจับจากคนที่มีชีวิต ภายใต้วิธีการต่างๆเหล่านี้โมเดล deep neural network (DNN) มีบทบาทสำคัญไม่เพียง แต่ในการจดจำใบหน้าเท่านั้น แต่ยังช่วยในการระบุความพยายามที่จะปลอมแปลงระบบด้วย อย่างไรก็ตามระบบภาพที่ใช้ในการจับใบหน้าของผู้ใช้สามารถให้การสนับสนุนการตรวจจับความสดเพิ่มเติมได้
สำหรับชุด SLN-VIZNAS-IOT NXP จะมีโมดูลกล้องที่ประกอบด้วยอุปกรณ์จาก ON Semiconductor MT9M114 เซ็นเซอร์ภาพ ที่นี่กล้องหนึ่งตัวมีฟิลเตอร์สีแดงเขียวน้ำเงิน (RGB) และกล้องอีกตัวมีฟิลเตอร์อินฟราเรด (IR) เชื่อมต่อผ่านอินเทอร์เฟซของกล้องเข้ากับบอร์ดแอพพลิเคชั่นการมองเห็นกล้อง RGB จะสร้างภาพแสงที่มองเห็นได้ตามปกติในขณะที่กล้อง IR จะจับภาพที่แตกต่างไปสำหรับคนที่มีชีวิตเมื่อเทียบกับภาพบุคคล ด้วยการใช้วิธีการตรวจจับความสดนี้พร้อมกับความสามารถในการจดจำใบหน้าภายในชุด SLN-VIZNAS-IOT ให้ความสามารถในการจดจำใบหน้าแบบออฟไลน์และป้องกันการปลอมแปลงในบรรจุภัณฑ์ขนาดประมาณ 30 x 40 มม. (มม.) (รูปที่ 5)
รูปที่ 5: ชุดฮาร์ดแวร์ NXP SLN-VIZNAS-IOT รวมระบบกล้องคู่สำหรับการตรวจจับการมีชีวิต (ด้านบน) และบอร์ดแอปพลิเคชันการมองเห็น (ด้านล่าง) พร้อมโมดูลที่เชื่อมต่อเพื่อเป็นโซลูชันแบบดรอปอินสำหรับการจดจำใบหน้าแบบออฟไลน์พร้อมการป้องกันการปลอมแปลง ความสามารถ. (แหล่งรูปภาพ: NXP)
เริ่มต้นใช้งานชุด SLN-VIZNAS-IOT
ชุดอุปกรณ์ NXP SLN-VIZNAS-IOT พร้อมใช้งานพร้อมกับรุ่นจดจำใบหน้าในตัว นักพัฒนาเสียบสาย USB และแตะปุ่มบนชุดเพื่อทำการลงทะเบียนใบหน้าแบบแมนนวลโดยใช้แอพพลิเคชั่น “elock” ที่โหลดไว้ล่วงหน้าและแอพมือถือที่ให้มา (รูปที่ 6 ด้านซ้าย) หลังจากลงทะเบียนแล้วแอพมือถือจะแสดงข้อความ "ยินดีต้อนรับกลับบ้าน" และป้าย "ปลดล็อก" เมื่อชุดตรวจสอบใบหน้าที่ลงทะเบียนไว้ (รูปที่ 6 ขวา)
รูปที่ 6: ชุดฮาร์ดแวร์ NXP SLN-VIZNAS-IOT ทำงานนอกกรอบโดยใช้แอพคู่หูเพื่อลงทะเบียนใบหน้า (ซ้าย) และจดจำใบหน้าที่ลงทะเบียน (ขวา) (แหล่งรูปภาพ: NXP)
ซอฟต์แวร์จดจำใบหน้า Oasis Lite ของชุดนี้ประมวลผลแบบจำลองจากฐานข้อมูลที่มี RGB มากถึง 3000 ใบหน้าโดยมีความแม่นยำในการจดจำ 99.6% และหน้า IR สูงสุด 100 หน้าพร้อมความแม่นยำในการป้องกันการปลอมแปลงที่ 96.5% ตามที่ระบุไว้ก่อนหน้านี้โซลูชันฮาร์ดแวร์/ซอฟต์แวร์ NXP ต้องการเวลาน้อยกว่าหนึ่งวินาทีในการตรวจจับใบหน้าการจัดตำแหน่งภาพการตรวจสอบคุณภาพการตรวจจับความสดและการจดจำในระยะ 0.2 ถึง 1.0 เมตร (ม.) ในความเป็นจริงระบบสนับสนุนรูปแบบการอนุมาน "แสง" ทางเลือกที่สามารถดำเนินการลำดับเดียวกันนี้ได้ในเวลาน้อยกว่า 0.5 วินาที แต่รองรับขนาดฐานข้อมูลสูงสุดที่เล็กกว่า 1,000 ใบหน้า RGB และ 50 หน้า IR
การสร้างแอปพลิเคชั่นจดจำใบหน้าแบบกำหนดเอง
ชุด NXP SLN-VIZNAS-IOT ช่วยให้นักพัฒนาสามารถประเมินสร้างต้นแบบและพัฒนาแอปพลิเคชันจดจำใบหน้าได้อย่างรวดเร็ว เมื่อสร้างโซลูชันฮาร์ดแวร์ที่กำหนดเองชุดนี้จะทำหน้าที่เป็นแบบอ้างอิงที่สมบูรณ์พร้อมแผนผังแบบเต็มและรายการวัสดุโดยละเอียด (BOM) สำหรับการพัฒนาซอฟต์แวร์โปรแกรมเมอร์สามารถใช้ NXP MCUXpresso integrated development environment (IDE) กับ FreeRTOS support and configuration tools สำหรับแอปพลิเคชันนี้นักพัฒนาเพียงแค่ใช้ NXP ออนไลน์ MCUXpresso SDK Builder เพื่อกำหนดค่าสภาพแวดล้อมการพัฒนาซอฟต์แวร์ด้วย VIZNAS SDK ของ NXP ซึ่งรวมถึงกลไกการเรียนรู้ของเครื่อง NXP Oasis Lite (รูปที่ 7)
รูปที่ 7: NXP จัดเตรียมสภาพแวดล้อมซอฟต์แวร์ที่ครอบคลุมซึ่งเรียกใช้ไลบรารีรันไทม์ NXP Oasis Lite และมิดเดิลแวร์ยูทิลิตี้บนระบบปฏิบัติการ FreeRTOS (แหล่งรูปภาพ: NXP)
ชุดซอฟต์แวร์ประกอบด้วยซอร์สโค้ดที่สมบูรณ์สำหรับสภาพแวดล้อมการทำงานตลอดจนแอปพลิเคชันตัวอย่าง elock ที่กล่าวถึงก่อนหน้านี้ NXP ไม่มีซอร์สโค้ดสำหรับเอ็นจิ้น Oasis Lite ที่เป็นกรรมสิทธิ์หรือสำหรับรุ่น นักพัฒนาจะทำงานกับไลบรารีรันไทม์ของ Oasis Lite โดยใช้อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) ที่จัดเตรียมไว้ให้ซึ่งรวมถึงชุดการเรียกฟังก์ชันที่ใช้งานง่ายเพื่อดำเนินการที่รองรับ นอกจากนี้นักพัฒนายังใช้ชุดของ C ที่กำหนดและโครงสร้างเพื่อระบุพารามิเตอร์ต่างๆรวมถึงขนาดภาพการจัดสรรหน่วยความจำการเรียกกลับและฟังก์ชันที่เปิดใช้งานที่ระบบใช้เมื่อเริ่มต้นสภาพแวดล้อมรันไทม์ของ Oasis Lite (รายการ 1)
คัดลอก
typedef struct {
//max input image height, width and channel, min_face: minimum face can be detected
int height;
int width;
//only valid for RGB images; for IR image, always GREY888 format
OASISLTImageFormat_t img_format;
OASISLTImageType_t img_type;
//min_face should not smaller than 40
int min_face;
/*memory pool pointer, this memory pool should only be used by OASIS LIB*/
char* mem_pool;
/*memory pool size*/
int size;
/*output parameter,indicate authenticated or not*/
int auth;
/*callback functions provided by caller*/
InfCallbacks_t cbs;
/*what functions should be enabled in OASIS LIB*/
uint8_t enable_flags;
/*only valid when OASIS_ENABLE_EMO is activated*/
OASISLTEmoMode_t emo_mode;
/*false accept rate*/
OASISLTFar_t false_accept_rate;
/*model class */
OASISLTModelClass_t mod_class;
} OASISLTInitPara_t;
รายการที่ 1: นักพัฒนาสามารถแก้ไขพารามิเตอร์การดำเนินการของซอฟต์แวร์ได้โดยการแก้ไขเนื้อหาของโครงสร้างเช่นที่แสดงไว้ที่นี่สำหรับการเริ่มต้นรันไทม์ของ Oasis Lite (แหล่งรหัส: NXP)
โค้ดตัวอย่างแอปพลิเคชัน elock แสดงให้เห็นถึงรูปแบบการออกแบบที่สำคัญสำหรับการเปิดใช้งาน Oasis เป็นงานที่ทำงานภายใต้ FreeRTOS เริ่มต้นสภาพแวดล้อมและเข้าสู่ขั้นตอนการรันปกติ ในขั้นตอนการรันสภาพแวดล้อมรันไทม์จะทำงานบนแต่ละเฟรมของรูปภาพโดยเรียกใช้ฟังก์ชันเรียกกลับที่จัดเตรียมไว้ซึ่งเชื่อมโยงกับแต่ละเหตุการณ์ที่กำหนดไว้ในสภาพแวดล้อม (รายการ 2)
คัดลอก
typedef enum {
/*indicate the start of face detection, user can update frame data if it is needed.
* all parameter in callback parameter is invalid.*/
OASISLT_EVT_DET_START,
/*The end of face detection.
*if a face is found, pfaceBox(OASISLTCbPara_t) indicated the rect(left,top,right,bottom point value)
*info and landmark value of the face.
*if no face is found,pfaceBox is NULL, following event will not be triggered for current frame.
*other parameter in callback parameter is invalid */
OASISLT_EVT_DET_COMPLETE,
/*Face quality check is done before face recognition*/
OASISLT_EVT_QUALITY_CHK_START,
OASISLT_EVT_QUALITY_CHK_COMPLETE,
/*Start of face recognition*/
OASISLT_EVT_REC_START,
/*The end of face recognition.
* when face feature in current frame is gotten, GetRegisteredFaces callback will be called to get all
* faces feature registered and OASIS lib will try to search this face in registered faces, if this face
* is matched, a valid face ID will be set in callback parameter faceID and corresponding simularity(indicate
* how confidence for the match) also will be set.
* if no face match, a invalid(INVALID_FACE_ID) will be set.*/
OASISLT_EVT_REC_COMPLETE,
/*start of emotion recognition*/
OASISLT_EVT_EMO_REC_START,
/*End of emotion recognition, emoID indicate which emotion current face is.*/
OASISLT_EVT_EMO_REC_COMPLETE,
/*if user set a registration flag in a call of OASISLT_run and a face is detected, this two events will be notified
* for auto registration mode, only new face(not recognized) is added(call AddNewFace callback function)
* for manu registration mode, face will be added forcely.
* for both cases, face ID of new added face will be set in callback function */
OASISLT_EVT_REG_START,
/*when registration start, for each valid frame is handled,this event will be triggered and indicate
* registration process is going forward a little.
* */
OASISLT_EVT_REG_IN_PROGRESS,
OASISLT_EVT_REG_COMPLETE,
OASISLT_EVT_NUM
} OASISLTEvt_t;
รายการที่ 2: รันไทม์ของ Oasis Lite รับรู้ชุดของเหตุการณ์ที่บันทึกเป็นชุดที่แจกแจงไว้ในไฟล์ส่วนหัวรันไทม์ของ Oasis Lite (แหล่งรหัส: NXP)
แอปพลิเคชันตัวอย่างสามารถให้ข้อความดีบักแก่นักพัฒนาทีละขั้นตอนซึ่งอธิบายผลลัพธ์ที่เกี่ยวข้องกับแต่ละเหตุการณ์ที่ประมวลผลโดยตัวจัดการเหตุการณ์ (EvtHandler) ตัวอย่างเช่นหลังจากการตรวจสอบคุณภาพเสร็จสิ้น (OASISLT_EVT_QUALITY_CHK_COMPLETE) ระบบจะพิมพ์ข้อความดีบักที่อธิบายผลลัพธ์และหลังจากการจดจำใบหน้าเสร็จสิ้น (OASISLT_EVT_REC_COMPLETE) ระบบจะดึง ID ผู้ใช้และชื่อจากฐานข้อมูลสำหรับใบหน้าที่จดจำและพิมพ์ข้อมูลนั้นออกมา (รายการที่ 3).
คัดลอก
static void EvtHandler(ImageFrame_t *frames[], OASISLTEvt_t evt, OASISLTCbPara_t *para, void *user_data)
{
[code redacted for simplification]
case OASISLT_EVT_QUALITY_CHK_COMPLETE:
{
UsbShell_Printf("[OASIS]:quality chk res:%d\r\n", para->qualityResult);
pQMsg->msg.info.irLive = para->reserved[5];
pQMsg->msg.info.front = para->reserved[1];
pQMsg->msg.info.blur = para->reserved[3];
pQMsg->msg.info.rgbLive = para->reserved[8];
if (para->qualityResult == OASIS_QUALITY_RESULT_FACE_OK_WITHOUT_GLASSES ||
para->qualityResult == OASIS_QUALITY_RESULT_FACE_OK_WITH_GLASSES)
{
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]:ok!\r\n");
}
else if (OASIS_QUALITY_RESULT_FACE_SIDE_FACE == para->qualityResult)
{
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]:side face!\r\n");
}
else if (para->qualityResult == OASIS_QUALITY_RESULT_FACE_TOO_SMALL)
{
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]:Small Face!\r\n");
}
else if (para->qualityResult == OASIS_QUALITY_RESULT_FACE_BLUR)
{
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]: Blurry Face!\r\n");
}
else if (para->qualityResult == OASIS_QUALITY_RESULT_FAIL_LIVENESS_IR)
{
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]: IR Fake Face!\r\n");
}
else if (para->qualityResult == OASIS_QUALITY_RESULT_FAIL_LIVENESS_RGB)
{
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]: RGB Fake Face!\r\n");
}
}
break;
[code redacted for simplification]
case OASISLT_EVT_REC_COMPLETE:
{
int diff;
unsigned id = para->faceID;
OASISLTRecognizeRes_t recResult = para->recResult;
timeState->rec_comp = Time_Now();
pQMsg->msg.info.rt = timeState->rec_start - timeState->rec_comp;
face_info.rt = pQMsg->msg.info.rt;
#ifdef SHOW_FPS
/*pit timer unit is us*/
timeState->rec_fps++;
diff = abs(timeState->rec_fps_start - timeState->rec_comp);
if (diff > 1000000 / PIT_TIMER_UNIT)
{
// update fps
pQMsg->msg.info.recognize_fps = timeState->rec_fps * 1000.0f / diff;
timeState->rec_fps = 0;
timeState->rec_fps_start = timeState->rec_comp;
}
#endif
memset(pQMsg->msg.info.name, 0x0, sizeof(pQMsg->msg.info.name));
if (recResult == OASIS_REC_RESULT_KNOWN_FACE)
{
std::string name;
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[OASIS]:face id:%d\r\n", id);
DB_GetName(id, name);
memcpy(pQMsg->msg.info.name, name.c_str(), name.size());
face_info.recognize = true;
face_info.name = std::string(name);
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[OASIS]:face id:%d name:%s\r\n", id, pQMsg->msg.info.name);
}
else
{
// face is not recognized, do nothing
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[OASIS]:face unrecognized\r\n");
face_info.recognize = false;
}
VIZN_RecognizeEvent(gApiHandle, face_info);
}
break;
รายการ 3: ดังที่แสดงในตัวอย่างนี้จากแอปพลิเคชันตัวอย่างในการแจกจ่ายซอฟต์แวร์ NXP ตัวจัดการเหตุการณ์จะประมวลผลเหตุการณ์ที่พบระหว่างลำดับการจดจำใบหน้า (แหล่งรหัส: NXP)
นอกจากรองรับข้อกำหนดการประมวลผลการจดจำใบหน้าแล้วซอฟต์แวร์ NXP SLN-VIZNAS-IOT ยังได้รับการออกแบบมาเพื่อปกป้องสภาพแวดล้อมการทำงาน เพื่อให้มั่นใจถึงความปลอดภัยของรันไทม์ระบบได้รับการออกแบบมาเพื่อตรวจสอบความสมบูรณ์และความถูกต้องของอิมเมจที่เซ็นชื่อแต่ละภาพที่โหลดเข้าสู่ระบบโดยใช้ใบรับรองที่เก็บไว้ในระบบไฟล์ของชุด SLN-VIZNAS-IOT เนื่องจากลำดับการตรวจสอบนี้เริ่มต้นด้วย bootloader ที่เชื่อถือได้ซึ่งจัดเก็บไว้ในหน่วยความจำแบบอ่านอย่างเดียว (ROM) กระบวนการนี้จะจัดเตรียมห่วงโซ่แห่งความไว้วางใจสำหรับการรันเฟิร์มแวร์ของแอปพลิเคชัน นอกจากนี้เนื่องจากการลงนามและการตรวจสอบรหัสอาจทำให้การพัฒนาช้ากระบวนการตรวจสอบนี้ได้รับการออกแบบมาให้ข้ามระหว่างการออกแบบซอฟต์แวร์และการแก้ไขข้อบกพร่อง ในความเป็นจริงชุด SLN-VIZNAS-IOT มาพร้อมกับอิมเมจที่ลงนามไว้ล่วงหน้า แต่การตรวจสอบลายเซ็นโค้ดจะถูกข้ามไปโดยค่าเริ่มต้น นักพัฒนาสามารถตั้งค่าตัวเลือกเพื่อเปิดใช้งานการตรวจสอบลายเซ็นรหัสทั้งหมดสำหรับการผลิตได้อย่างง่ายดาย
นอกเหนือจากสภาพแวดล้อมรันไทม์และโค้ดแอปพลิเคชันตัวอย่างที่เกี่ยวข้องแล้ว NXP ยังมีแอพมือถือ Android ที่มีซอร์สโค้ด java แบบเต็ม แอพเดียว VIZNAS FaceRec Manager มีอินเทอร์เฟซที่เรียบง่ายสำหรับการลงทะเบียนใบหน้าและจัดการผู้ใช้ แอปอื่นคือแอป VIZNAS Companion อนุญาตให้ผู้ใช้จัดเตรียมชุดด้วยข้อมูลรับรอง Wi-Fi โดยใช้การเชื่อมต่อ Wi-Fi หรือ BLE ที่มีอยู่
สรุป
การจดจำใบหน้าเป็นแนวทางที่มีประสิทธิภาพในการตรวจสอบสิทธิ์การเข้าถึงผลิตภัณฑ์อัจฉริยะ แต่โดยทั่วไปแล้วการใช้งานจะต้องใช้การประมวลผลประสิทธิภาพสูงในพื้นที่หรือการเชื่อมต่อแบนด์วิธสูงตลอดเวลาเพื่อการตอบสนองที่รวดเร็ว นอกจากนี้ยังตกเป็นเป้าหมายของการปลอมแปลงและอยู่ภายใต้ข้อกังวลเกี่ยวกับความเป็นส่วนตัวของผู้ใช้
ดังที่แสดงไว้โปรเซสเซอร์และไลบรารีซอฟต์แวร์เฉพาะจาก NXP Semiconductors เสนอแนวทางอื่นที่สามารถทำการจดจำใบหน้าออฟไลน์ได้อย่างแม่นยำภายในเวลาไม่ถึงหนึ่งวินาทีโดยไม่ต้องเชื่อมต่อระบบคลาวด์ในขณะที่ลดความพยายามในการปลอมแปลง
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.




