ILS | USD

מימוש מהיר של זיהוי פנים חסין-התחזות (Spoofing-Resistant) ללא חיבור לענן

By Stephen Evanczuk

Contributed By Digi-Key's North American Editors

זיהוי פנים זכה בהכרה רחבה עבור אימות גישה לסמארטפונים, אבל נסיונות ליישם טכנולוגיה זו באופן נרחב יותר לא עמדו בציפיות בתחומים אחרים למרות היעילות וקלות השימוש בה. יחד עם האתגרים הטכניים של מימוש פתרונות למידת מכונה אמינים וזולים, מפתחים חייבים להתיחס לדאגות משתמשים סביב האמינות והפרטיות של שיטות זיהוי פנים קונבנציונליות התלויות בקישורי ענן, שפגיעות להתחזות (spoofing).

מאמר זה דן בקושי של אימות בטוח, לפני הצגת פתרון חומרה ותוכנה מבית NXP Semiconductors המטפל בנושאים אלה. אחר כך יראה כיצד מפתחים, ללא ניסיון קודם בשיטות למידת מכונה, יכולים להשתמש בפתרון עבור יישום מהיר של זיהוי פנים נוגד-התחזות, לא-מקוון, במוצר חכם.

האתגרים של אימות בטוח עבור מוצרים חכמים

בהתיחסות לדאגה הגוברת לנושא אבטחה של מוצרים חכמים, מפתחים מצאו את עצמם נותרים עם אפשרויות ישימות מעטות עבור אימות אמין של משתמשים המחפשים גישה מהירה אך בטוחה. שיטות מסורתיות מסתמכות על שיטות אימות הנשענות על שילוב מסוים של שלושת גורמי האימות הקלאסיים: “משהו שאתה יודע”, כגון סיסמה; “משהו שברשותך”, כגון מפתח‏ פיזי או כרטיס מפתח; ו-“משהו שהינך”, שאופיינית הוא‏ גורם ביומטרי כגון טביעת אצבע או קשתית. אם משתמשים בגישה זו, אימות ברמה גבוהה של מנעול דלת יכול לדרוש מהמשתמש להזין קוד סיסמה, ‏להשתמש בכרטיס מפתח, ובנוסף לספק טביעת אצבע כדי לפתוח את הדלת. פרקטית, דרישות מחמירות כגון אלו הן מציקות או פשוט לא מעשיות עבור צרכנים הנדרשים לשוב ולאמת את עצמם לעיתים קרובות ובקלות בסמארטפון או התקן אחר בשימוש שגרתי.‏

השימוש בזיהוי פנים פישט משמעותית את האימות עבור משתמשי סמארטפון, אבל לסמארטפונים יש יתרונות מסוימים שעלולים להיות חסרים בהתקנים אחרים. בנוסף לכוח העיבוד המשמעותי הקיים בסמארטפונים מתקדמים, קישוריות מופעלת-תמיד היא דרישה יסודית עבור אספקת מגוון השירותים המתוחכמים המצופים באופן שגרתי על ידי המשתמשים.

עבור מוצרים רבים הדורשים אימות בטוח, פלטפורמת ההפעלה הבסיסית תספק בדרך כלל משאבי מחשוב צנועים יותר וקישוריות מוגבלת יותר. שירותי זיהוי פנים מספקי שירותי-ענן מובילים מסיטים את עומס העיבוד לענן, אך הצורך בקישוריות איתנה כדי להבטיח שיהוי הענות מינימלי עלול לכפות דרישות שנשארות מעבר ליכולות של הפלטפורמה. דאגה שווה או גדולה יותר למשתמשים, שידור התמונה שלהם דרך רשתות ציבוריות עבור עיבוד ואחסון אפשרי בענן, מעלה בעיות פרטיות משמעותיות.

על ידי שימוש במעבד i.MX RT106F של NXP Semiconductors ותוכנה נלווית, מפתחים יכולים כעת לממש זיהוי פנים לא-מקוון המטפל ישירות בדאגות אלו.

חומרה ותוכנה עבור זיהוי פנים חסין-התחזות (spoof-proof)

חבר משפחה של המיקרו-בקר NXP i.MX RT1060, סדרת ה-‏NXP i.MX RT106F מתוכננת במיוחד לתמוך באינטגרציה קלה של זיהוי פנים לא-מקוון בהתקנים של בית חכם, מכשירי חשמל לצרכנים, התקני ביטחון וציוד תעשייתי. מבוססים על ליבת מעבד Arm® Cortex®-M7, המעבדים עובדים ב-528 מגה-הרץ (MHz) עבור ה-MIMXRT106FCVL5B בדרוג תעשייתי, או ‎600 MHz עבור מעבדים בדרוג מסחרי כגון ה-MIMXRT106FDVL6A וה-MIMXRT106FDVL6B.

בנוסף לתמיכה‏ במגוון רחב של ממשקי זיכרון חיצוניים, מעבדי i.MX RT106F כוללים 1 מגה-בייט (Mbyte‏) זיכרון גישה אקראית (RAM) על-השבב, עם 512 קילו-בייט (Kbyte‏) המוגדרים כ-RAM לשימוש כללי ו-‎512 Kbytes‏ שיכולים להיות מוגדרים כ-RAM לשימוש כללי או כ-Tightly-coupled memory‏ (TCM) עבור פקודות (I-TCM) או נתונים (D-TCM). יחד עם ניהול הספק על-השבב, מעבדים אלה מציעים מערך נרחב של מאפיינים משולבים עבור גרפיקה, ביטחון, בקרת מערכת, וממשקים אנלוגיים כמו גם דיגיטליים הדרושים בדרך כלל כדי לתמוך בהתקנים לצרכנים, ממשקי אדם-מכונה תעשייתיים (HMIs) ובקרת מנוע (איור 1).

תרשים של מעבדי i.MX RT106F של NXP Semiconductor  (הקלק להגדלה)איור 1: מעבדי i.MX RT106F של NXP Semiconductor משלבים מערך שלם של בלוקים פונקציונליים הדרושים כד לתמוך בזיהוי פנים עבור מוצרי צרכנים, תעשייתיים וביטחון. (מקור תמונה: NXP)

למרות שדומים לחברי משפחה אחרים של i.MX RT1060, מעבדי i.MX RT106F‏ כוללים רישיון הרצה עבור תוכנת זיהוי פנים ‏Oasis Lite של NXP. מתוכננת להסקת מסקנות (inference) מהירה במעבדים מהסוג הזה, סביבת ההרצה Oasis Lite מבצעת גילוי פנים, זיהוי ואפילו קטלוג רגש מוגבל תוך שימוש במודלים להסקת מסקנות רשת עצבית (‏neural network (NN) inference models) הרצים על מנוע הסקת מסקנות ו-MiniCV - גרסה בסיסית של ספריית ראיה ממוחשבת OpenCV מקור פתוח. מנוע הסקת המסקנות (inference engine) בונה על ספריית NXP NN וספריית Arm Cortex Microcontroller System Interface Standard NN ‏(CMSIS-NN) (איור 2).

תרשים של ספריית הרצה NXP Oasis Liteאיור 2: ספריית ההרצה NXP Oasis Lite כוללת ליבת Oasis Lite המשתמשת ב-MiniCV ומנוע הסקת מסקנות (inference engine) ‏NXP הבנוי על ספריות רשת עצבית מבית NXP ו-Arm. (מקור תמונה: NXP)

המודלים להסקת מסקנות שוכנים על פלטפורמת ה-i.MX RT106F, כך שגילוי וזיהוי פנים מתבצעים באופן מקומי, שלא כפתרונות אחרים התלויים במשאבים מבוססים-ענן כדי להריץ את האלגוריתמים של למידת מכונה. הודות ליכולת זו של זיהוי פנים לא-מקוון, מתכננים של מוצרים חכמים יכולים להבטיח אימות בטוח ששומר על פרטיות למרות רוחב-פס נמוך או קישוריות אינטרנט לא יציבה. יתר על כן, עם שילוב זה של חומרה ותוכנה, אימות מתבצע במהירות, דורש פחות מ-800 מילי-שניות (ms) עבור המעבד להתעורר ממצב המתנה הספק-נמוך ולהשלים זיהוי פנים.

בשימוש עם מעבד ה-i.MX RT106F, ההרצה Oasis Lite מפשטת מימוש של זיהוי פנים לא-מקוון עבור מוצרים חכמים, אך המעבד וסביבת ההרצה הם כמובן רק חלק מפתרון מערכת דרוש. יחד עם מערך שלם יותר של רכיבי מערכת, פתרון אימות יעיל דורש יכולת דימות (imaging) שיכולה למתן‏ סוג של איום אבטחה הנקרא Presentation Attacks. התקפות אלו מתכוונות לזייף אימות זיהוי פנים על ידי שימוש בתמונות. עבור מפתחים המחפשים להשתמש במהירות באימות מבוסס-פנים במוצרים שלהם, ערכת הפיתוח NXP SLN-VIZNAS-IOT ותוכנה קשורה מספקות ‏פלטפורמה מוכנה-לשימוש עבור הערכה, בניית אב-טיפוס ופיתוח זיהוי פנים נוגד-התחזות, לא-מקוון.

פתרון שלם של מערכת בטוחה לזיהוי פנים

כמו מרבית המעבדים המתקדמים, מעבד ה-i.MX RT106F דורש מספר רכיבים נוספים בלבד כדי לספק פלטפורמת מחשוב יעילה. ערכת ה-NXP SLN-VIZNAS-IOT‏ משלימה את התכנון על ידי שילוב ה-i.MX RT106F עם התקנים נוספים כדי לספק פלטפורמת ‏חומרה שלמה (איור 3).

תרשים של ערכת NXP SLN-VIZNAS-IOT (הקלק להגדלה)איור 3: ערכת ה-NXP SLN-VIZNAS-IOT‏ כוללת מודול‏ מקושר המספק פלטפורמת מערכת מקושרת‏ איתנה הדרושה כדי להריץ תוכנת אימות. (מקור תמונה: NXP)

לוח המודול המקושר של הערכה משלב מעבד NXP MIMXRT106FDVL6A i.MX RT106F, אלמנט ביטחון NXP A71CH ושתי אפשרויות קישוריות - מערכת-על-שבב (SoC) ‏Bluetooth אנרגיה נמוכה (BLE) ‏MKW41Z512VHT4 Kinetis KW41Z של NXP ומודול LBEE5KL1DX-883 Wi-Fi/Bluetooth של Murata Electronics.

כדי להשלים את הזיכרון על-שבב של המעבד, המודול המקושר מוסיף 256 מגה-ביט (Mbit) ‏RAM‏ דינמי סינכרוני (SDRAM) ‏W9825G6JB של Winbond Electronics, זיכרון ‎256 Mbit NOR flash‏ Integrated Silicon Solution. Inc. (ISSI) IS26KL256S-DABLI00, והתקן ממשק היקפי טורי (SPI) מרובע (Quad) ‏‎256 Mbit ‏IS25LP256D של ISSI.

לבסוף, המודול מוסיף ממיר buck ‏‏Torex Semiconductor XCL214B333DR כדי להשלים את יכולות ניהול ההספק הפנימיות של מעבד ה-i.MX RT106F עבור ההתקנים הנוספים על לוח המודול המקושר.

המודול המקושר מצידו מורכב על לוח יישום ראיה המשלב חיישן אינפרה-אדום פסיבי (PIR) ‏‏Murata Electronics IRA-S210ST01, חיישן תנועה, מטען סוללה, תמיכת אודיו, דיודות פולטות אור (LEDs), לחצנים ומחברי ממשק (איור 4).

תמונה של ערכת NXP SLN-VIZNAS-IOT (הקלק להגדלה)איור 4: בערכת ה-NXP SLN-VIZNAS-IOT‏, המודול המקושר (שמאל) מצורף ללוח יישום הראיה כדי לספק את בסיס החומרה עבור זיהוי פנים. (מקור תמונה: NXP)

בנוסף לפלטפורמת מערכת זו, תכן מערכת זיהוי פנים ברור שדורש חיישן מצלמה מתאים כדי ללכוד תמונה של פני המשתמש. עם זאת, כפי שהוזכר מקודם, דאגות הקשורות לתקיפות הצגה (presentation attacks) דורשות יכולות דימות נוספות.

מיתון תקיפות הצגה (presentation attacks)

חוקרים חקרו במשך שנים שיטות שונות של גילוי תקיפת הצגה (presentation attack detection‏ (PAD)) המתוכננות למתן נסיונות כמו שימוש בטביעות אצבע או תמונות של‏ פנים סמויות כדי להונות מערכות אימות מבוססות-ביומטריה. למרות שהפרטים הם הרבה מעבר להיקף מאמר זה, שיטות PAD באופן כללי משתמשות בניתוח עמוק של האיכות והמאפיינים של הנתונים הביומטריים הנאספים כחלק של התהליך, כמו גם שיטות גילוי “חיות” (liveness) המתוכננות לקבוע אם הנתונים הביומטריים נאספו מאדם חי. מונחים ביסוד רבות מהשיטות השונות האלו, מודלים של רשת עצבית עמוקה (deep neural network‏ (DNN)) משחקים תפקיד חשוב לא רק בזיהוי פנים, אלא גם בזיהוי נסיונות להונות את המערכת. עם זאת, מערכת הדימות המשמשת ללכוד את פני המשתמש יכולה לספק תמיכת גילוי חיות (liveness) נוספת.

עבור ערכת ה-SLN-VIZNAS-IOT, ה-NXP כוללת מודולים של מצלמה המכילים זוג חיישני תמונה MT9M114 של ON Semiconductor. כאן, מצלמה אחת מצוידת במסנן אדום, ירוק, כחול (RGB), ועל המצלמה האחרת מורכב מסנן אינפרה-אדום (IR). מחוברות באמצעות ממשקי מצלמה ללוח יישום ראיה, מצלמת ה-RGB מחוללת תמונת אור-נראה נורמלית, בעוד מצלמת ה-IR לוכדת תמונה שהיא שונה עבור אדם חי בהשוואה לתמונה של תמונת אדם. תוך שימוש בגישת גילוי חיות (liveness) זו ביחד עם יכולת פנימית שלה של זיהוי פנים, ערכת ה-SLN-VIZNAS-IOT מספקת יכולת זיהוי פנים נוגד-התחזות, לא-מקוונת, במארז שמידותיו הן בערך 40 x‏ 30 מילימטר (mm) (איור 5).

תמונה של ערכת חומרה NXP SLN-VIZNAS-IOTאיור 5: ערכת החומרה NXP SLN-VIZNAS-IOT משלבת מערכת של שתי מצלמות עבור גילוי חיות (liveness) (למעלה) ולוח יישום ראיה (למטה) עם מודול מקושר כדי לספק פתרון נתקע עבור זיהוי פנים לא-מקוון עם יכולת נוגדת-התחזות. (מקור תמונה: NXP)

צעדים ראשונים עם ערכת ה-SLN-VIZNAS-IOT

ערכת ה-NXP SLN-VIZNAS-IOT מגיעה מוכנה לשימוש עם מודלים של זיהוי פנים מובנים. מפתחים מחברים כבל USB ונוגעים בכפתור על הערכה כדי לבצע רישום פנים (face registration) ידני פשוט תוך שימוש ביישום “elock” הטעון מראש וביישום הנייד הנלווה (איור 6, שמאל). לאחר רישום (registration), היישום הנייד יציג מסר "welcome home” ותווית “unlocked” כשהערכה מאמתת את הפנים הרשומים (איור 6, ימין).

תמונה של ערכת חומרה NXP SLN-VIZNAS-IOT עובדת ישר מהקופסהאיור 6: ערכת החומרה NXP SLN-VIZNAS-IOT עובדת ישר מהקופסה, משתמשת ביישום נלווה עבור רישום פנים (שמאל) ועבור זיהוי פנים רשומים (ימין). (מקור תמונה: NXP)

תוכנת זיהוי הפנים Oasis Lite של הערכה מעבדת מודלים מבסיס הנתונים שלה של עד 3000 פנים RGB עם דיוק זיהוי של 99.6% ועד 100 פנים IR עם דיוק נוגד-התחזות של 96.5%. כפי שצוין קודם, פתרון החומרה/תוכנה NXP דורש פחות משניה אחת כדי לבצע גילוי פנים, יישור תמונה, בדיקת איכות, גילוי חיות וזיהוי בטווחים מ-0.2 עד 1.0 מטר (m). למעשה, המערכת תומכת בדגם הסקת מסקנות (inference) חלופי “קל” המסוגל לבצע את אותו הרצף בפחות מ-0.5‎ s אך תומך בגודל בסיס נתונים קטן יותר של 1000 פנים RGB ו-50 פנים IR.

בניית יישומי זיהוי פנים מותאמים במיוחד

ערכת ה-NXP SLN-VIZNAS-IOT, שמשתמשים בה כפי שהיא, מאפשרת למפתחים להעריך, לבנות אב-טיפוס ולפתח במהירות יישומי זיהוי פנים. כשיוצרים פתרונות חומרה מותאמים במיוחד, הערכה משמשת כתכן ייחוס שלם עם שרטוטים מלאים ומפרט חומרים (BOM) מפורט. עבור פיתוח תוכנה, מתכנתים יכולים להשתמש בסביבת הפיתוח המשולבת (IDE) ‏NXP MCUXpresso עם תמיכת FreeRTOS וכלי הגדרת תצורה. עבור יישום זה, מפתחים משתמשים פשוט ב-MCUXpresso SDK Builder המקוון של NXP כדי להגדיר תצורה של סביבת פיתוח התוכנה שלהם עם VIZNAS SDK של NXP, שכולל את מנוע הראיה למידת מכונה NXP Oasis Lite (איור 7).

תרשים של NXP המספקת סביבת תוכנה מקיפהאיור 7: NXP מספקת סביבת תוכנה מקיפה המבצעת את ספריית ההרצה NXP Oasis Lite ותוכנת שירות middleware על מערכת ההפעלה FreeRTOS. (מקור תמונה: NXP)

חבילת התוכנה כוללת קוד מקור שלם עבור סביבת ההפעלה כמו גם את יישום הדוגמה elock שהוזכר מוקדם יותר. NXP איננה מספקת קוד מקור עבור מנוע Oasis Lite הקנייני שלה או עבור המודלים. במקום זה, מפתחים עובדים עם ספריית ההרצה Oasis Lite תוך שימוש בממשק תכנות היישום (API) המסופק, שכולל מערך קריאות לפונקציה אינטואיטיבית כדי לבצע פעולות נתמכות. נוסף לכך, מפתחים משתמשים במערך‏ מסופק של הגדרות ומבנים C כדי לציין פרמטרים שונים כולל גודל תמונה, הקצאת זיכרון, התקשרויות חזרה (callbacks) ופונקציות מאופשרות המשמשות את המערכת בעת אתחול סביבת ההרצה 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, אתחול הסביבה וכניסה לשלב הריצה הנורמלית. בשלב הריצה, סביבת ההרצה פועלת על כל מסגרת של תמונה, מבצעת את פונקציות ההתקשרות חזרה (callback) המסופקות הקשורות לכל ארוע מוגדר בסביבה (רשימה 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), המערכת מושכת את מזהה המשתמש (user 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 מציעים שיטה חלופית שיכולה לבצע בדייקנות זיהוי פנים לא-מקוון בפחות‏ משנייה ללא חיבור לענן, תוך כדי מיתון נסיונות התחזות.

מיאון אחריות: דעות, אמונות ונקודות מבט המובעות על ידי מחברים שונים ו/או משתתפי פורום באתר אינטרנט זה לא בהכרח משקפות את הדעות, האמונות ונקודות המבט של חברת Digi-Key Electronics או את המדיניות הרשמית של חברת Digi-Key Electronics.

אודות כותב זה

Stephen Evanczuk

ל- Stephen Evanczuk יש ניסיון של יותר מ- 20 שנה בכתיבה עבור תעשיית האלקטרוניקה על מגוון רחב של נושאים, כולל חומרה, תוכנה, מערכות ויישומים, כולל IoT. הוא קיבל את הדוקטורט שלובמדעי המוח ברשתות נוירונים ועבד בתעשייה התעופה-וחלל על מערכות מאובטחות מבוזרות בסדר-גודל עצום ועל שיטות להאצת אלגוריתמים. כיום, כשהוא לא כותב מאמרים על טכנולוגיה והנדסה, הוא עובד על יישומים של למידה עמוקה למערכות זיהוי והמלצה.

אודות מוציא לאור זה

Digi-Key's North American Editors