Skip to Content

Blog Archives

Face Comparison API with Python

มาลองทำ API ง่าย ๆ เพื่อเปรียบเทียบใบหน้า (Face Comparison) โดยใช้ภาษา Python

ในปัจจุบันหลายธุรกิจเริ่มผันตัวเข้าสู่โลกของดิจิทัล หรือเริ่มหันมาทำ Application เพื่อให้บริการลูกค้ามากขึ้น สิ่งหนึ่งที่สำคัญและขาดไม่ได้คือการระบุตัวตนของลูกค้า ซึ่งการเปรียบเทียบใบหน้านั้น เป็นหนึ่งในวิธีการระบุตัวตนของผู้ใช้งาน ไม่ให้ผู้อื่นมาแอบอ้างเป็นเรา เช่น การลงทะเบียนผู้ใช้งานใหม่ จำเป็นจะต้องให้ลูกค้าถ่ายรูปหน้าบัตรประชาชน และถ่ายรูปหน้าตัวเอง เพื่อทำการเปรียบเทียบว่าเป็นคนเดียวกันหรือไม่

หากไม่มีการเปรียบเทียบใบหน้าลองคิดกันดูว่าจะเกิดอะไรขึ้น !!! สมมุติว่าเราทำบัตรประชาชนหาย แล้วมีใครที่ไหนไม่รู้ เอาบัตรประชาชนของเราไปสมัคร Application โดยที่เราไม่รู้ตัว หรือแอบนำไปทำธุรกรรมใดๆ ก็อาจสร้างความเสียหายแก่เราได้

วันนี้เราจะใช้ Python มาทำการเปรียบเทียบใบหน้า โดยใช้ Library ที่ชื่อว่า “DeepFace” และ “Flask” มาทำ Rest API มาดูขั้นตอนการทำได้เลย!!

DeepFace เป็น Library Python สำหรับการจดจำใบหน้าแบบโอเพ่นซอร์ส ที่มีขนาดเล็กได้รับความนิยมสูงสุด สามารถการจดจำและวิเคราะห์คุณลักษณะใบหน้า (อายุ เพศ อารมณ์ และเชื้อชาติ)  ซึ่งเราจะนำมาใช้ในส่วน Face Comparison

Flask เป็น Python Web Framework ที่มีส่วนควบคุมการทำงานที่มีขนาดเล็กและง่ายต่อการขยาย ซึ่งเราจะนำมาใช้ในส่วนของการสร้าง API

ก่อนที่เราจะเริ่มพัฒนา จำเป็นต้องต้องติดตั้ง 2  ตัวนี้ก่อน

ภาพจาก : towardsai

  • Python 3

ภาษาไพธอน เป็นภาษาโปรแกรมมิ่ง แบบ Open Source ที่ทำงานบนระบบปฎิบัติการได้หลากหลาย สามารถทำงานได้เหมือนกับภาษาโปรแกรมมิ่งทั่วไป และมีจุดเด่นเหมาะสำหรับงานที่ต้องการประมวลผลแบบพิเศษ เช่น การวิเคราะห์ข้อมูล (Data analytics) งานที่เกี่ยวกับการประมวลผลด้านสื่อกราฟฟิก และการประมวลผลภาพ (Multimedia & Image processing) การประมวลผลทางวิทยาศาสตร์และสถิติ (Scientific & Statistics computing) และงานด้าน Machine learning เป็นต้น

  • VS Code application และ VS Code Python extension

หรือ Visual Studio Code (VS Code) เป็นโปรแกรมแก้ไขซอร์สโค้ดที่มีขนาดเล็กแต่ทรงพลัง ซึ่งทำงานบนเดสก์ท็อปรองรับการทำงานบน Windows, macOS และ Linux พร้อมทั้งยังสามารถปรับแต่ง ด้วยการใช้ส่วนขยาย (Extension) อื่นๆ ได้อีกมากมาย ในที่นี้เราจะใช้ ส่วนขยาย ที่ชื่อว่า VS Code Python extension เข้ามาช่วยในการเขียนนะครับ (link วิธีการติดตั้ง https://code.visualstudio.com/docs/python/python-tutorial)

ส่วนใครที่ติดตั้ง Python และ VS code เรียบร้อยแล้วก็ข้ามมาได้เลย ส่วนใครที่ยังไม่แน่ใจว่าเคยติดตั้ง Python ไปแล้ว ให้ใช้ Command นี้เพื่อตรวจสอบเวอร์ชั่นของ Python (Execute ใน Command Prompt)

python — version

1. สร้าง Folder ขึ้นมาใหม่ และตั้งชื่อตามใจชอบได้เลย และเปิด Folder ด้วย VS code

2. สร้าง File ขึ้นมาใหม่ ภายใต้ Folder ที่สร้างไป ในทีนี้ใช้ชื่อว่า face.py

3. Setup Environment โดยกด ctrl+shift+P และพิมพ์ว่า Python: Create Environment จากนั้นคลิกเลือก Venv

4. ทำการ Import Library DeepFace และ Flask โดยเปิด Terminal ใน VS code และพิมพ์ Command ดังนี้

5. Copy Code ส่วนนี้ไปวางในไฟล์ face.py

อธิบาย Code แบบสั้นๆ

บรรทัดที่ 8 เป็นการสร้าง API โดยกำหนด Path คือ /face-compare และกำหนดให้เป็น Method-POST

บรรทัดที่ 11-13 เป็นการอ่านรูปจาก Path ใน Request Body

บรรทัดที่ 16 ทำการส่งรูปเข้าไปยัง Library DeepFace เพื่อเปรียบเทียบรูป

บรรทัดที่ 21 ใส่เงื่อนไขว่าคะแนนให้เกินเท่าไหร่ ถึงจะถือว่าเป็นคนๆเดียวกัน ตรงนี้สามารถปรับคะแนนได้

บรรทัดที่ 28-31 เป็นการกำหนด Json ที่จะ Response สามารถแก้หรือเพิ่มลบ attributes ตรงนี้ได้

บรรทัดที่ 36 เป็นการ Return Json กลับไปให้คนที่ Call API มา

*** ใครอยากแก้ Port ของ Service ให้แก้ตรงบรรทัดที่ 44 ได้เลย

 

6. สร้าง Folder Images ใน Project

จากนั้นนำรูปที่ต้องการ Compare เข้าไปใส่ใน Folder

7. Start program โดยการกดปุ่ม Run > Run Without Debugging หรือพิมพ์ Command ใน Terminal “python face.py” เมื่อ Start เรียบร้อยจะขึ้นหน้าตาแบบนี้

8. ทดสอบ Call API โดยใช้ Postman

 

ภาพตัวอย่างที่ใช้ในการเปรียบเทียบ

ผลที่ได้

ความหมายคือ ตรวจพบใบหน้าในรูป (detected = true)
เป็นใบหน้าคนๆเดียวกัน (sameFace = true)
คะแนนความเหมือนกันอยู่ที่ 71.16%

 

มาลองคนละคนดีกว่า

ผลที่ได้

ความหมายคือ ตรวจพบใบหน้าในรูป (detected = true)
ไม่ใช่ใบหน้าคนๆเดียวกัน (sameFace = false)
คะแนนความเหมือนกันอยู่ที่ 29.63%

 

การนำไปใช้งานจริงควรจะมี Service มาครอบตัวนี้อีกทีนะครับ เช่นเขียน Java Service ขึ้นมา 1 ตัว และรับเป็น Multipart Form-data เพื่อให้ Front-end หรือคนที่เรียก Service แนบรูปมาได้ จากนั้นเราก็เขียนให้ Java ไปเก็บรูปลงใน Path Images ของ Project Python จากนั้นก็ Call Python Service และส่ง Path ของรูปไปด้วย เมื่อ Java Service ได้รับ Response จาก Python ก็ให้ไปลบไฟล์รูปที่เคยเก็บไว้ใน Folder Images

เป็นยังไงกันบ้างครับ กับการทำการเปรียบเทียบใบหน้าโดยใช้ Python ที่เราได้นำเสนอไป ทางทีมงานสตรีมฯ ของเรายังมี โซลูชั่น เทคโนโลยี นวัตกรรม ด้านดิจิทัลอีกมากมาย รอติดตามบทความต่อๆไปได้เลยครับ

หากสนใจโซลูชั่นด้านดิจิทัล สามารถติดต่อเราได้ที่อีเมล marketing@stream.co.th หรือโทร. 02-679-2233

*Head Banner Image Credit: recfaces

 

เรียบเรียงโดย Phasathon Yingcharoenrat

Senior Software Engineer, Stream I.T. Consulting Ltd.

0 3 Continue Reading →

Unlock Your Business with AI POWER – Seminar Event

30 พฤษภาคม ที่ผ่านมา ทางสตรีมฯ ได้จัดงาน “Unlock Your Business with AI POWER” ที่จัดขึ้นร่วมกับ NVIDIA, Cloudera และ Sensetime ณ โรงแรม Grande Centre Point Terminal 21

ในงานนี้ Theme หลักของเราเน้นเรื่อง AI จึงได้นำเทคโนโลยี AI Face Recognition มาใช้ในการลงทะเบียนให้กับลูกค้าที่มางาน ภายในการมีการสัมมนา ได้รับเกียรติจาก ผศ. ดร. ทศพล สอตระกูล มากล่าวให้ความรู้ในหัวข้อ “Artificial Intelligence (AI) กับอนาคตของธุรกิจในภาคอุตสาหกรรม” ต่อด้วย Sensetime ยกตัวอย่างเทคโนโลยี AI ต่างๆ ที่นำไปประยุกต์ใช้ได้หลากหลาย NVIDIA แนะนำขุมพลังในการประมวลผล AI ให้มีประสิทธิภาพสูงสุด และ Cloudera อธิบายถึงการนำ Enterprise Cloud มาใช้ในระบบการเก็บข้อมูล Big Data

ปิดท้ายด้วย ส่วนของสตรีมฯ เราสามารถให้คำปรึกษา และนำเทคโนโลยี AI ทั้ง Machine Learning, Deep Learning มาปรับให้เข้ากับลูกค้าแต่ละราย แต่ละอุตสาหกรรม พร้อมทั้งตัวอย่าง Use Case ที่ประสบความสำเร็จที่ผ่านมา

ก่อนจบงาน เราสร้างสีสันให้ผู้มาร่วมงานได้ลุ้นโชค กับมีการจับสลากผู้โชคดี รับ iPad Mini 2019 และ Gift voucher จากห้างสรรพสินค้าชั้นนำ

สุดท้ายนี้ ทางผู้จัดงาน ต้องขอขอบคุณทุกฝ่าย ไม่ว่าจะเป็นลูกค้า คู่ค้า และผู้ที่เกี่ยวข้องทุกท่านค่ะ

 

ภาพบรรยากาศในงาน

สนใจโซลูชันด้าน AI ติดต่อสอบถามได้ที่ Marketing@stream.co.th ค่ะ

 

0 0 Continue Reading →

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายการใช้คุกกี้ และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • คุกกี้ที่จำเป็น
    Always Active

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

  • คุกกี้เพื่อการวิเคราะห์

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

Save