การ Login ด้วยใบหน้า
บอกลาการ login แบบเดิมๆไปได้เลย Face authentication มาแบ๊ว!
Last updated
Was this helpful?
บอกลาการ login แบบเดิมๆไปได้เลย Face authentication มาแบ๊ว!
Last updated
Was this helpful?
ในรอบนี้เราจะมาลองใช้ AI สำเร็จรูปของ Microsoft Azure เพื่อทำระบบ Login ด้วยใบหน้ากันดูบ้างว่าเขาทำยังไง โดยจะใช้ภาษาอะไรก็ได้ แต่ในตัวอย่างจะใช้ C# นะ แต่ไม่ต้องห่วงตอนสุดท้ายมีบอกหมดว่าภาษาอื่นๆจะทำแบบนี้ได้ยังไง
แนะนำให้อ่าน บทความนี้เป็นหนึ่งในซีรี่ AI ดังนั้นถ้าเพื่อนสนใจของสนุกๆ เช่น หรือ ยืนยันตัวตนด้วยเสียง และอื่นๆ สามารถดูเนื้อหาทั้งหมดได้จาก side menu ในหมวดของ Cognitive Services ครับ กำลังทำเรื่อยๆอยู่ ส่วนถ้าอยากรู้ว่า AI สำเร็จรูปตัวอื่นๆของ Microsoft Azure มีอะไรน่าเล่นบ้าง ไปอ่านกันได้จากลิงค์นี้เลยครัช เชื่อผมเต๊อะ AI ไม่ได้ยากแบบที่คิด
ตัวโปรแกรมที่ผมจะทำ มันจะให้เราเลือกรูปที่จะใช้ในการ Login ซึ่งถ้ารูปนั้นเป็นใบหน้าที่ถูกต้อง มันก็จะให้เรา Login ผ่าน แต่ถ้ารูปไม่ถูกก็แค่บอกว่า Login ไม่ผ่านเพียงเท่านี้ ซึ่งตัวอย่างนี้ผมจะไม่ทำ UI เลยเพราะเน้นไปที่เรื่องการใช้ AI อย่างเดียวเท่านั้นครับ
อย่างที่บอกว่าตัวอย่างนี้ผมจะใช้ภาษา C# เขียน ดังนั้นใครที่จะทำตามด้วย C# รบกวนลง Visual Studio Code
และ .NET Core SDK
ด้วย ส่วนภาษาอื่นๆให้ดูขั้นตอนทั้งหมดให้เข้าใจก่อน แล้วตอนสุดท้ายจะมีบอกหมดเลยว่าทำยังไงเพราะขั้นตอนทั้งหมดมันเหมือนกันต่างกันแค่วิธีเขียน
ก่อนที่เราจะเริ่มเขียนโปรแกรมเราต้องเข้าใจก่อนว่าจะใช้งาน Face API นั้นเราต้องทำอะไรบ้าง ดังนั้นด้านล่างนี้คือสิ่งที่เราต้องทำทั้งหมด
สร้าง Face Serivce เพื่อจะได้ใช้ AI ได้
สร้าง PersonGroup บน Azure ขึ้นมา เจ้าตัวนี้มีหน้าที่เก็บข้อมูลคนหลายๆคนไว้
สร้าง Person เข้าไปใน PersonGroup หรือพูดง่ายๆคือสร้างคน
อัพโหลดรูปของหน้าเราหลายๆรูปลงไปใน Person ที่สร้างขึ้นมา
สั่งให้ AI เรียนรูปว่ารูปใน Person นั้นหน้าตาเป็นยังไง (เราเรียขั้นตอนนี้ว่า Train Model)
ทดลองเอารูปที่จะใช้ Login ไปให้ AI ดูว่าเป็นคนเดียวกับที่อยู่ใน Person นั้นหรือเปล่า
จากที่ว่ามาเราก็จะเริ่มทำทีละขั้นตอนกันเลย เพื่อทำระบบ Login ด้วยใบหน้ากัน ปะลุยๆ
1.หลังจากที่ Login เข้ามาละ ที่เมนูด้านซ้ายมือให้เลือก + Create a resource
ซะ แล้วเมนูในหน้าตรงกลางให้เลือก AI + Machine Learning
แล้วจะเห็น Face
ให้จิ้มมันเข้าไปเบย
2.ถัดมาก็ใส่รายละเอียดของ Face Service ให้เรียบร้อยซะ แล้วก็กดปุ่ม Create
ได้เลย
ชื่อ
รายละเอียด
Name
ชื่อ Face Service ที่จะสร้าง
Location
ตัว service นี้จะสร้างไว้ภูมิภาคไหน
ในตัวอย่างผมเล่นในไทยก็เลือกเป็น Southeast Asia
Pricing tier
จะให้เขาเก็บเงินเราแบบไหน
ถ้าจะลองเล่นเฉยๆให้เลือก F0 ครับ ส่งข้อมูลได้ 30K ครั้ง/เดือน
3.เรียบร้อยครับ ที่เหลือก็แค่รอให้มันสร้าง Face Service จนเสร็จ
ในขั้นตอนนี้ผมจะสร้างโปรเจคของ C# ขึ้นมา เพื่อเขียนโค้ดในการสร้าง PersonGroup ล่ะนะ ดังนั้นขอแบ่งเป็นหัวข้อย่อยๆนิดหน่อย
เริ่มต้นก็เปิด command prompt หรือ terminal ขึ้นมาเลย แล้วใช้คำสั่งด้านล่างในการสร้างโปรเจคได้เลย
saladpuk-faceauth
คือชื่อโปรเจคนะครับ อยากได้ชื่ออื่นก็เปลี่ยนได้เลย
ตอนนี้เราก็จะได้โปรเจคมา 1 ตัวละ ถัดไปก็เข้าไปที่โปรเจคนั้นครับด้วยคำสั่งด้านล่างนี้ (ใครที่เปลี่ยนชื่อโปรเจคก็ใส่ชื่อเป็นชื่อโปรเจคที่ตัวเองตั้งไว้นะ)
ทดสอบว่าโปรเจคไม่มีปัญหาอะไรด้วยคำสั่งด้านล่าง
ซึ่งถ้าไม่มีปัญหาอะไรก็น่าจะได้ผลลัพท์ออกมาแบบนี้
ในตัวอย่างนี้การที่เราจะเรียกใช้ Face API เราจะต้องทำงานผ่าน REST API ธรรมดานี่แหละ ดังนั้นเพื่อความง่ายผมจะลง library เสริม 2 ตัวเพื่อให้ทำงานกับ REST API และ Json ได้ง่ายขึ้นครับ โดยใช้คำสั่งด้านล่างก็เป็นอันเสร็จสิ้นพิธี
คราวนี้ให้เราเปิด Visual Studio Code ขึ้นมา โดยใช้คำสั่ง code .
ภายใน command prompt/terminal ได้เลย หรือจะเปิด Visual Studio Code แล้วเปิด folder มาที่ตัวโปรเจคก็ได้ แล้วก็เปิดไฟล์ Program.cs
ขึ้นมารอเลย
ตอนนี้ให้เอาโค้ดด้านล่างไปทับใน Program.cs
ทั้งหมดเลย ซึ่งเจ้าโค้ดด้านล่างจะเป็นแค่โครงคร่าวๆเท่านั้น
ในโค้ดด้านบน เราจะต้องไปเอา SubscriptionKey และ Endpoint มาใส่ให้มัน เพื่อที่มันจะได้ต่อไปยัง Face API ได้นั่นเอง ซึ่งเจ้าเราต้องกลับไปที่ Cognitive Service แล้วเลือกเมนู Keys
เพื่อ copy ค่า SubscriptionKey มาครับ
ส่วนค่า Endpoint เราสามารถเอาได้จากเมนู Overview
ครับตามรูปเลย
หลังจากที่เอา SubscriptionKey
และ Endpoint
ไปใส่ในโค้ดแล้ว ถัดไปเราก็จะเพิ่มโค้ดอีกนิสนุง เพื่อสร้าง PersonGroup นั่นเอง ตามโค้ดด้านล่างเบย
อธิบายโค้ด ในการสร้าง PersonGroup เราก็แค่เรียก REST API ไปโดยการส่ง SubscriptionKey ไปยัง Endpoint ของเราเพียงเท่านี้ก็จะสามารถสร้าง PersonGroup ได้แล้วครับ
เพื่อให้ AI เรารู้จักคนได้หลายๆคน เราก็จะสร้าง Person ให้มันครับ โดยเขียนโค้ดตัวนี้ต่อเข้าไปใน method Main()
อธิบายโค้ด
ผมทำการสร้าง Person ที่ชื่อ Prayut Chan O Char
ขึ้นมาภายใต้ PersonGroup ที่สร้างขึ้นมาจากขั้นตอน 2.2 ครับ
ถัดมาผมก็จะทำการอัพโหลดรูปคนเข้าไปใน Person โดยรูปที่ผมอัพโหลดเข้าไปจะเอามาจากเน็ทนะครับ ตามโค้ดและรูปด้านล่างเลย
อธิบายโค้ด อันนี้ผมสร้างลิสต์ของรูปขึ้นมา แล้วก็ทยอยอัพโหลดเข้าไปใน Person ทีละอันจนครบครับ
หลังจากที่เราอัพโหลดรูปไปเรียบร้อยแล้ว ถัดมาเราก็จะสั่งให้ AI ไปทำการเรียนรู้รูปพวกนั้น เพื่อสร้าง pattern ใบหน้าของคนใน PersonGroup ของเรา โดยผมก็จะเพิ่มโค้ดด้านล่างนี้เข้าไปครับ
อธิบายโค้ด อันนี้ไม่มีอะไรเลยก็แค่เรียก REST API สั่งให้มัน Train ธรรมดา
ความแม่นยำของ AI ยิ่งเราเอารูปของคนๆนั้นให้ AI เรียนรู้เยอะมากเท่าไหร่ ความแม่นยำก็จะเพิ่มขึ้นเยอะเท่านั้น ดังนั้นถ้าจะทำระบบตรวจสอบใบหน้าจริงๆเราจำเป็นต้องส่งรูปขึ้นไปเยอะพอสมควรครับ แต่สำหรับตัวอย่างเอาแค่ 5-10 รูปก็เพียงพอแล้วครับ
ในรอบนี้ผมก็จะลองส่งรูปที่ไม่ใช่หน้าลุงเข้าไปดูซิว่ามันจะ บอกว่ายังไงโดยใช้รูปและโค้ดด้านล่างนี้ครับ
อธิบายโค้ด ในรอบนี้ผมก็จะส่งรูปคนอื่นเข้าไปเทียบกับลุงแล้วเช็คว่ามีความใกล้เคียงกันกี่เปอร์เซ็นต์ ซึ่งในโค้ดผมบอกว่าต้องใกล้เคียงกัน 75% ขึ้นไปนะถึงจะผ่าน
สุดท้ายผมก็ลองเพิ่มโค้ดเพื่อเอารูปลุงแกไปตรวจสอบจริงๆละ โด้ยใช้รูปที่ไม่เคยส่งให้ AI เห็นมาก่อน และใช้โค้ดตามด้านล่างนี้
อธิบายโค้ด ก็ตรงตัวครับแค่เอารูปลุงไปตรวจสอบว่าเป็นคนเดียวกับรูปที่เราส่งไปให้ AI หรือเปล่า
จากทั้งหมดที่ทำมา เราก็จะทำการลอง Run กันนะครับ โดยกด CTRL + F5
หรือจะใช้คำสั่ง dotnet run
ก็ได้ครับ ซึ่งก็จะได้ผลลัพท์ออกมาแบบนี้
จากผลลัพท์ก็จะเห็นแล้วนะครับในบรรทัดที่ 18 ว่าเราไม่สามารถเอาคนอื่นมาแอบอ้างเป็นลุงได้ และในบรรทัดที่ 19 เราก็สามารถเอารูปลุงที่ AI ไม่เคยเห็นมาก่อนมาทำการยืนยันตัวตนได้ว่านี่คือรูปลุงจริงๆนะได้
ผมรอพิมพ์ถึงตรงนี้เหมือนกัน ง่วงนอนมากละตอนทำเรื่องนี้ แต่พอดีเนื้อหาค่อนข้างยาวดังนั้นผมขอยก source code ให้ไปดาวโหลดมาลองเล่นเลยดีกว่าครับ
ในการทำงานกับ AI จริงๆไม่ใช่เรื่องยากเลยหัวใจหลักของมันจริงๆก็คือการเรียกใช้ REST API ให้ถูกตัวเท่านั้น ดังนั้นไม่ว่าเราจะเขียนภาษาไหนก็ตาม เราก็สามารถเรียกใช้ Face API เพื่อทำของประมาณนี้ได้เลย
Cognitive Services API หากใครสนใจอยากดู API ทั้งหมดที่ Microsoft เตรียมไว้ให้เราเรียกใช้ AI สำเร็จรูป ก็สามารถเข้าไปดูได้จากลิงค์ด้านล่างนี้เลยครับ
Cognitive Services Library สำหรับคนที่ต้องการเขียนทำงานกับ Cognitive Services จริงๆไม่ต้องไปนั่งเขียนเชื่อม API ทีละตัวก็ได้นะ เพราะทาง Microsoft นั้นได้มี Library ให้เราสามารถเรียกใช้ได้เลยครับ เช่นในฝั่ง .NET ก็จะมีตัวนี้ Microsoft.Azure.CognitiveServices.Vision.Face ที่สามารถติดตั้งแล้วใช้งานได้เลย
Azure Portal เนื้อหาตรงจุดนี้จะต้องเข้าไปที่ทำที่เว็บ นี้นะครับ ซึ่งเราต้องสมัครสมาชิกก่อน แต่ถ้าใครยังไม่ได้สมัครก็ไปสมัครให้เรียบร้อยแซ๊ร