เบื้องหลัง Facial Liveness Detection ของ KBTG Labs กับการผ่านมาตรฐานโลกระดับสูงสุด!

Panya Sunantasaengtong
KBTG Life
Published in
5 min readDec 9, 2022

เพื่อนๆ เคยรู้สึกกังวลกับการลงรูปในโซเชียลมีเดียแล้วถูกนำไปใช้สมัครแอปพลิเคชันต่างๆ ไหมครับ วันนี้จะขอมาเล่าถึงเทคโนโลยีตัวนึงที่ช่วยป้องกันการสวมตัวตนจากการใช้รูปถ่ายใบหน้า นั่นคือ Facial Liveness Detection

ทาง KBTG Labs เองก็ได้มีการพัฒนาเทคโนโลยี Facial Liveness Detection ขึ้น ซึ่งบอกเลยว่าไม่ธรรมดาครับ เพราะ KBTG Face Liveness ของเราได้ผ่านการรับรองระดับสูงสุด (Level 2) จากการทดสอบของ iBeta ซึ่งเป็นถึงมาตรฐานระดับสากล! ในฐานะที่เป็นหนึ่งใน Research Engineer ผู้อยู่เบื้องหลัง จึงอยากจะมาแชร์เทคโนโลยีข้างในคร่าวๆ ให้ฟังกัน เผื่อจะพอช่วยเพิ่มความมั่นใจด้านความปลอดภัยให้แก่บางคนที่ยังเป็นกังวลกับเรื่องนี้อยู่บ้างครับ

https://www.ibeta.com/iso-30107-3-presentation-attack-detection-confirmation-letters/

Overview

ในช่วงไม่กี่ปีที่ผ่านมา โดยเฉพาะช่วงที่โควิดระบาดหนัก เพื่อนๆ จะสังเกตได้ว่าในหลายธุรกิจ เช่น ธนาคาร eCommerce หรือ Food Delivery ต่างต้องการให้ลูกค้าสามารถเข้าถึงสินค้าและบริการได้สะดวกขึ้นผ่านช่องทางออนไลน์ ทำให้เรื่อง Customer Onboarding หรือ eKYC โดยใช้ภาพถ่ายใบหน้าเริ่มเข้ามามีบทบาทในธุรกิจมากขึ้น เพื่อนๆ สายช็อปจะสังเกตได้ว่าเวลาสมัครบริการผ่านแอปพลิเคชันต่างๆ เราจะต้องมีขั้นตอนการถ่ายเซลฟี่ ซึ่งระบบก็จะนำภาพเซลฟี่นั้นไปเปรียบเทียบกับรูปถ่ายในบัตรประชาชนของเราว่าเป็นคนเดียวกันไหมนั่นแหละ

การปลอมแปลงตัวบุคคลผ่านการยืนยันตัวตนโดยใช้ใบหน้า

และสิ่งที่คนส่วนใหญ่กลัวที่สุดในการยืนยันตัวตนผ่านรูปถ่ายคือการสวมตัวตนด้วยการถูกแอบถ่ายใบหน้าหรือขโมยรูปถ่ายจากโซเชียลมีเดียเพื่อไปสมัครทำธุรกรรมต่างๆ โดยจากข้อมูล Fraud ที่ผ่านมาพบว่าส่วนใหญ่จะเกิดจากคนใกล้ตัวที่สามารถเข้าถึงรหัสโทรศัพท์มือถือหรือบัตรประชาชนของเหยื่อ ดังนั้นจะเห็นว่าสิ่งสำคัญที่ขาดไม่ได้ในระบบนี้คือการยืนยันว่ารูปถ่ายเซลฟี่ที่วิ่งเข้ามานั้นมาจากใบหน้าคนจริงๆ ไม่ได้มาจากรูปถ่ายบนนิตยสาร หน้าจอมือถือ แท็ปเล็ต หรือแม้แต่หน้ากาก 3D ที่ทำมาจากซิลิโคน เป็นต้น ซึ่งการตรวจสอบว่าในภาพเป็นรูปคนจริงๆ หรือไม่ เราเรียกระบบนี้ว่า Facial Liveness Detection นั่นเองครับ

ไหนๆ ก็ไหนๆ ลองมาเดากันหน่อยว่าภาพด้านล่าง ภาพไหนที่ถ่ายมาจากคนจริงๆ

Which one is a genuine face?

ติ๊กต๊อกๆๆๆ เฉลยครับ ภาพถ่ายจากใบหน้าคนจริงๆ คือภาพสุดท้าย เป็นภาพที่ถูกถ่ายด้วยมือถือ Oppo A15 ส่วนสองภาพแรกเป็นภาพที่ถ่ายด้วย iPhone 12 แต่แสดงบนหน้าจอ Macbook Pro และจอมือถือ Galaxy Note20 ตามลำดับครับ

จะเห็นว่าการแยกว่าภาพไหนคือหน้าคนจริง (Genuine Face) และภาพไหนไม่ใช่คน (Presentation Attack) นั้นไม่ใช่เรื่องง่ายเลย งั้นเราจะจัดการกับเรื่องนี้ยังไงได้บ้าง แบ่งคร่าวๆ ได้ 2 วิธีครับ

  1. Active Liveness Detection คือการที่ระบบจะขอให้ User ทำ Action อะไรบางอย่าง เพื่อพิสูจน์ว่าเป็นคนจริงๆ เช่น การให้กระพริบตา ยิ้ม หันหน้า เป็นต้น บางแอปพลิเคชันอาจจะให้ User มองจุดที่วิ่งบนจอมือถือ แล้วเช็คว่าทิศทางของสายตาขยับไปทิศเดียวกันกับจุดที่วิ่งบนจอหรือไม่ ซึ่งเทคนิคที่ว่ามาเหล่านี้สามารถป้องกันการสวมตัวตนจากรูปนิ่งได้ แต่กับวีดีโอยังไม่การันตี 100% และไม่สามารถป้องกันการสวมตัวตนจากประเภทหน้ากากได้เลย
  2. Passive Liveness Detection จะตรงกันข้ามกับแบบ Active คือระบบจะไม่ขอ Action ใดๆ จาก User แต่จะเป็นการประมวลผลสิ่งที่ได้จากเซ็นเซอร์แทน ยกตัวอย่างเช่น ถ้าเป็น iPhone X ขึ้นไปจะมีฟังก์ชัน Face ID อาศัยการวิเคราะห์รูปทรงของวัตถุจากกล้อง 3D ที่ติดมากับเครื่อง หรือบางแอปพลิเคชันใช้การวิเคราะห์แพทเทิร์นของแสงสะท้อนจากการเปิดแฟลชบนจอมือถือ แต่ที่นิยมส่วนมากคือการใช้ AI มาวิเคราะห์ภาพถ่าย 2D เป็นต้น

ที่ทาง KBTG Labs พัฒนาขึ้นมานั้นใช้ทั้ง Active และ Passive ร่วมกัน โดยในส่วนของ Active จะใช้การสุ่มขอให้ User กระพริบตา ยิ้ม หรือหันหน้า ในขณะที่ส่วน Passive จะใช้ AI มาประมวลภาพถ่าย ซึ่งตัว AI นี้ถูกสร้างขึ้นโดยใช้วิธีการ Deep Learning หรือการสอนคอมพิวเตอร์ให้เรียนรู้ว่ารูปไหนคือ Genuine และรูปไหนคือ Presentation Attack ด้วยการป้อนรูปข้อมูลจำนวนมากๆ นั่นเองครับ

แล้วก็มาถึงส่วนที่ยากที่สุดในการพัฒนา KBTG Face Liveness…

ทำยังไงให้ AI สามารถทำงานได้แม่นยำ?

1. จำนวนและความหลากหลายของข้อมูล

แน่นอนครับว่าจำนวนข้อมูลยิ่งเยอะ ตัว AI ยิ่งเก่งยิ่งโกง แต่ในเรื่อง Facial Liveness Detection ปัญหาที่น่าหนักใจที่สุดคือ Domain Generalization ยกตัวอย่างเช่น กล้องมือถือแต่ละยี่ห้อจะให้ Texture แตกต่างกันไป หาก AI ถูกเทรนด้วยรูปที่ถ่ายจาก iPhone เพียงอย่างเดียว แล้วมาทดสอบกับกล้องของ Oppo ผลลัพธ์ที่ได้ก็อาจจะไม่ดีนัก ลองสังเกตจากรูปที่เราเพิ่งทายเล่นกันไปครับ จะเห็นว่าสีสันและความคมชัดของรูปที่ถ่ายด้วย iPhone 12 นั้นจะมากกว่าที่ถ่ายด้วย Oppo A15 ดังนั้นมีโอกาสสูงที่ AI จะมองว่าภาพที่ได้จาก Oppo A15 เป็น Presentation Attack

สรุปแล้วข้อมูลจำนวนเยอะอย่างเดียวไม่พอ แต่ยังต้องการความหลากหลายด้วย เช่น รูปภาพที่ใช้เทรนจะต้องมาจากมือถือหลายรุ่นเพื่อเรียนรู้ Texture ที่หลากหลาย และรูปภาพใบหน้าจะต้องมาจากหลายคน รวมถึง Presentation Attack จะต้องมีหลายประเภท ซึ่งเราได้รวบรวมข้อมูลจากบนอินเทอร์เน็ต จากลูกค้า จากการสร้าง Presentation Attack กันเองภายในทีม และจากการซื้อข้อมูลจากต่างประเทศ รวมแล้วทั้งสิ้น 655,079 ภาพ แบ่งเป็น Genuine 116,612 ภาพ และ Presentation Attack 538,467 ภาพ

2. การออกแบบการทำงานของ AI

หลังจากที่เราเตรียมข้อมูลเสร็จ หากจะโยนข้อมูลทั้งหมดตู้มเดียวให้ AI บอกแค่ว่ารูปไหนคือ Genuine รูปไหนคือ Presentation Attack แล้วหวังให้ AI ฉลาดพอที่จะไปคิดเอาเองว่าจะดูฟีเจอร์ตรงไหนในภาพ เราจะไม่มีทางได้ผลลัพธ์ที่มีความแม่นยำมากพอ การสอน AI ให้รู้จักแค่ Genuine และ Presentation Attack ค่อนข้างที่จะหยาบไป เราจึงไกด์ AI ด้วยการแบ่ง Presentation Attack ออกเป็นหลายๆ ชนิด (Multi-label Classification) ตามตำหนิหรือสิ่งที่ผิดปกติบนภาพที่เราจะสามารถนึกออก คล้ายๆ กับเกมจับผิดภาพนั่นเองครับ เช่น ขอบของหน้าจอ ขอบของกระดาษ แสงสะท้อนบนจอ ลายมัวเร (Moiré Pattern) รอยเจาะที่ตา จมูก ปากของหน้ากาก ขอบของหน้ากาก Texture ของวัสดุที่ทำหน้ากาก เป็นต้น

ขอบของหน้าจอ, แสงสะท้อนจากจอ, ลายมัวเร (Moiré Pattern)
รอยเจาะตา, ขอบของหน้ากาก, Texture ของพลาสติก

จะเห็นได้ว่าจุดที่ทำให้เรามั่นใจว่าภาพดังกล่าวเป็น Presentation Attack ไม่จำเป็นจะต้องอยู่บนใบหน้า ซึ่งนอกจากเราจะเทรน AI แบบ Multi-label Classification แล้ว เรายังแบ่ง AI ออกเป็นอีก 2 ส่วน

Face Analysis

  • วิเคราะห์เฉพาะบนใบหน้า โดยใช้รูปที่ตัดเฉพาะส่วนของใบหน้าและปรับขนาดให้มีความละเอียดสูง
  • สำหรับป้องกันรูปปริ้นต์ (Texture) หน้าจอ (Texture) หน้ากาก 2D และ 3D (Texture, รอยเจาะตา จมูก ปาก, ขอบหน้ากาก)

Context Analysis

  • วิเคราะห์บริบทภายในภาพ โดยใช้รูปถ่ายเกือบจะเต็มรูปและปรับขนาดให้มีความละเอียดปานกลาง
  • สำหรับป้องกันรูปปริ้นต์ (ขอบกระดาษ) หน้าจอ (ขอบหน้าจอ, แสงสะท้อนจากจอ, ลายมัวเร)

มาถึงเรื่องสร้างเทคโนโลยีใช้เองแล้วเราจะมั่นใจได้อย่างไรว่ามันดีจริงๆ?

จะรู้ได้อย่างไรว่าเทคโนโลยีที่เราสร้างขึ้นดีจริง?

แน่นอนครับว่าแค่ไปบอกคนอื่นว่าใช้สิดีนะคงจะไม่มีใครเชื่อ เราจึงจำเป็นจะต้องผ่านการรับรองจากทดสอบของ iBeta ซึ่งเป็นการทดสอบระดับสากลตามมาตรฐาน ISO 30107–3 และค่าทดสอบนั้นแพงเป็นหลักล้านทีเดียว (ToT)

https://www.ibeta.com/

การที่จะผ่านหรือไม่ผ่านการทดสอบจะมีตัวชี้วัดอยู่ 2 ค่า คือ BPCER และ APCER

  • BPCER (Bona-fide Presentation Classification Error Rate) ว่าง่ายๆ คืออัตราความผิดพลาดที่คนจริงสแกนหน้าไม่ผ่าน
  • APCER (Attack Presentation Classification Error Rate) คืออัตราความผิดพลาดที่มีการสวมตัวตนแต่สแกนหน้าผ่าน

ระดับการทดสอบ

Level 1

  • ใช้ผู้ทดสอบทั้งหมด 10 คน โดยจะมีอายุ เพศ และเชื้อชาติแตกต่างกัน
  • ประเภทของ Presentation Attack ที่ถูกนำมาใช้ทดสอบจะมี 6 ประเภท โดยใช้ความพยายาม 150 ครั้งในเวลา 8 ชม./1 ประเภท/1 คน
  • วัสดุที่นำมาใช้ทำ Presentation Attack แต่ละชิ้นมีราคาไม่เกิน $30 และหาได้ทั่วไปภายในบ้านและสำนักงาน
  • ผู้ทดสอบเป็นบุคคลทั่วไป
  • ระยะเวลาทดสอบทั้งหมดประมาณ 2 อาทิตย์
  • เกณฑ์ผ่านการทดสอบคือ BPCER ต้องไม่เกิน 15% และ APCER ต้องเป็น 0%

Level 2

  • จำเป็นจะต้องผ่าน Level 1 ก่อน ถึงจะได้รับการทดสอบ Level 2
  • ใช้ผู้ทดสอบทั้งหมด 10 คน โดยจะมีอายุ เพศ และเชื้อชาติแตกต่างกัน
  • ประเภทของ Presentation Attack ที่ถูกนำมาใช้ทดสอบจะมี 5 ประเภท โดยใช้ความพยายาม 150 ครั้ง/1 ประเภท/1 คน
  • วัสดุที่นำมาใช้ทำ Presentation Attack แต่ละชิ้นมีราคาไม่เกิน $300
  • ผู้ทดสอบอย่างน้อย 1 คนเป็นผู้เชี่ยวชาญในการหลอกระบบ
  • ระยะเวลาทดสอบทั้งหมดประมาณ 1 เดือน
  • เกณฑ์การผ่านการทดสอบคือ BPCER ต้องไม่เกิน 15% และ APCER ต้องไม่เกิน 1%
The Testing Levels and Performance Requirements

และรูปตัวอย่างของ Presentation Attack แต่ละประเภทที่ทาง iBeta เลือกมาทดสอบ KBTG Face Liveness มีดังนี้

Samples of the Species of Attacks Defined for the Testing

ผลปรากฏว่า KBTG Face Liveness ของเราสามารถผ่านการทดสอบทั้ง Level 1 และ Level 2 โดยสามารถป้องกัน Presentation Attack ได้ทั้งหมด 100% (APCER=0%)

Level 1 Test Results
Level 2 Test Results

แต่เหรียญย่อมมีสองด้านครับ เราป้องกันการสวมตัวตนได้ 100% แต่เปอร์เซ็นต์คนจริงที่สแกนหน้าไม่ผ่านนับเป็น 6.4% สำหรับ Galaxy Note20 5G และ 4.67% สำหรับ iPhone 12 Pro

ทั้งนี้ ณ ปัจจุบัน มีเพียง Vendor ทั่วโลกจำนวน 25 บริษัทเท่านั้นที่ผ่าน iBeta level 1 และ 2 ซึ่งของเราเป็นเจ้าแรกในไทยและเจ้าที่ 3 ในเอเชีย! นอกจากนี้ KBTG Face Liveness ยังผ่านเกณฑ์ Own Sandbox ตามที่ธนาคารกำหนด โดยไม่มีการร้องเรียนจากลูกค้าที่ไม่สามารถสแกนใบหน้าผ่านทั้งที่เป็นบุคคลจริง และไม่มีเกิดเคสทุจริตสวมตัวตน รวมถึงผ่านการใช้งานจริงกับแอปพลิเคชัน MAKE by KBank, Kubix, K PLUS Vietnam และ CUNEX Staff แล้ว และกำลังจะถูกนำไปใช้กับแอปพลิเคชันอื่นๆ ที่เป็นพันธมิตรของ KBTG และ KBank อีกมากมาย

มาถึงตรงนี้แล้วเพื่อนๆ ที่ยังกังวลกับการสวมตัวตน อยากให้สบายใจได้ในระดับหนึ่งเลยครับ ไปกังวลเรื่องสแกนหน้าแล้วไม่ผ่านแทน 555

Real Talk: เพื่อนๆ เคยติดปัญหาสแกนหน้าแล้วไม่ผ่านกันบ้างไหมครับ ปกติจะมี 2 กรณี คือกรณีที่หน้าไม่เหมือนกับรูปในบัตรประชาชน ซึ่งจำเป็นจะต้องไปอัพเดทรูปหน้าบัตรใหม่ และอีกกรณีนึงเกิดจากเจ้า Liveness Detection นี่แหละครับ ถ้าเป็นกรณีนี้ ให้เพื่อนๆ ลองใหม่อีกครั้งโดยเปลี่ยน Environment ให้มีแสงไฟที่เพียงพอและหลีกเลี่ยงสถานที่ที่ทำให้เกิดเงาสะท้อนบนรูปหรือบนแว่นตา เพียงเท่านี้ก็สามารถผ่านได้แล้วครับ (0_<)

จบแล้ววว!! หวังว่าเพื่อนๆ จะได้รับประโยชน์จากบนความนี้ไม่มากก็น้อย เพื่อนๆ สาย Implement อาจจะได้ไอเดียกันไปพอหอมปากหอมคอ สังเกตได้ว่าบทความนี้จะไม่ได้เน้นวิชาการมาก เพื่อให้ทุกคนสามารถอ่านแล้วเข้าใจได้ และสำหรับเพื่อนๆ ในมุม User ก็อยากให้เห็นกระบวนการข้างหลังว่าเป็นยังไง และมีจุดไหนที่ทีมงานยังต้องพัฒนากันต่อไป ทั้งในแง่ของการลดโอกาสผิดพลาดจากคนจริงสแกนหน้าไม่ผ่าน และด้านความปลอดภัยที่ต้องคอยอัพเดทตลอดเวลาเพื่อให้ทันต่อเทคโนโลยีและกลโกงใหม่ๆ ครับ

สุดท้ายนี้ โปรเจคนี้เกิดขึ้นได้เพราะได้รับการร่วมมือจากหลายๆ ฝ่ายที่ช่วยกันผลักดันจนมาถึงตรงนี้ เลยอยากจะขอขอบคุณทุกคน ไม่ว่าจะเป็นภายในทีม Research เองที่ช่วยประสานงานและสร้าง Module แต่ละตัวขึ้นมา, AI Center จากสถาบัน AIT ที่ร่วมมือกันตั้งไข่โปรเจคนี้, Mobile Developer ทุกคนที่ช่วยกัน Debug ซ้ำแล้วซ้ำเล่า และทีม Product ที่ช่วยนำผลงานนี้ไปถึงมือลูกค้าครับ

Reference

สำหรับชาวเทคคนไหนที่สนใจเรื่องราวดีๆแบบนี้ หรืออยากเรียนรู้เกี่ยวกับ Product ใหม่ๆ ของ KBTG สามารถติดตามรายละเอียดกันได้ที่เว็บไซต์ www.kbtg.tech

--

--