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 →

สตรีมฯ ย้ำภาพผู้นำด้านระบบการชำระเงินหรือ Digital Payments ร่วมเป็นวิทยากรในงาน Future Finance

เมื่อช่วงเช้าวันที่ 2 กันยายน ที่ผ่านมา คุณธัชชัย จงวิศาล ผู้บริหารของสตรีมฯ ได้ร่วมเป็น Speaker ในงานสัมมนา “Future Finance” ในหัวข้อการเปลี่ยนผ่านสู่ระบบดิจิทัลสำหรับบริการทางการเงิน จัดขึ้น ณ โรงแรม Hyatt Regency Sukhumvit

โดยใน session นี้ สตรีมฯ ได้ขึ้นพูดคุยร่วมกับพาร์ทเนอร์ที่เป็นผู้นำด้าน Digital Core Banking Platform ระดับโลก อย่าง Thought Machine ในประเด็นหลักที่ว่า การเปลี่ยนผ่านทางด้านเทคโนโลยีส่งผลต่อธุรกิจของผู้ให้บริการด้านการเงินในประเทศไทยอย่างไรบ้าง ไม่ว่าจะเป็นบริบททางด้านสภาพแวดล้อมที่เปลี่ยนไปสำหรับผู้บริโภค รวมถึงประโยชน์จากการนำ cloud มาใช้

 

ตลอดการเป็นที่ปรึกษาธุรกิจให้กับกลุ่มธนาคารตลอดมากว่า 23 ปี ทำให้สตรีมฯ เข้าใจในความต้องการของกลุ่มลูกค้า และสนับสนุนการนำเทคโนโลยีเข้ามาช่วยเพิ่มประสิทธิภาพในการเข้าถึงประชาชน และเพิ่มโอกาสในการขยายผลิตภัณฑ์ทางการเงินและประกัน โซลูชั่นของสตรีมฯ อาทิ การเชื่อมต่อระบบการชำระเงินของภาคธนาคาร ระบบพร้อมเพย์ ระบบเชื่อมต่อบัตรเครดิตต่าง ๆ ระบบ ATM การส่งข้อความระหว่างสถาบันการเงิน (ISO20022) การป้องกันและปราบปรามการฟอกเงิน การทำระบบให้บริการสินเชื่อดิจิทัล การทำระบบบัตรเครดิตอิเล็กทรอนิกส์ การดึงข้อมูล Big Data มาวิเคราะห์และประมวลผล ฯลฯ

 

สำหรับกลุ่มการประกันภัย ก็มีโซลูชั่นให้บริการอย่างหลากหลายตรงกลุ่มธุรกิจ เช่น การพัฒนาแอปพลิเคชั่นทั้ง Web App และ Mobile App ด้วยกระบวนการออกแบบ Microservices ทำให้การพัฒนาแอปรวดเร็วขึี้น การนำเทคโนโลยี Blockchain มาใช้ทำ Authentication เพื่อที่จะตรวจสอบสิทธิ์ในการเข้าถึงหรือทำธุรกรรม อย่างการพิสูจน์และยืนยันตัวตน สตรีมฯ ยังจัดทำสัญญาอิเล็กทรอนิกส์ (e-Contract) ที่สามารถดูความถูกต้องของสัญญาผ่านระบบออนไลน์ พร้อมลงลายมือชื่อดิจิทัลได้สะดวก

 

นอกจากสองกลุ่มนี้ สตรีมฯ ยังมีโซลูชั่นสำหรับกลุ่มธุรกิจอื่น อาทิเช่น กลุ่มมหาวิทยาลัย กลุ่มโรงพยาบาล กลุ่มค้าปลีก กลุ่มอุตสาหกรรม กลุ่มโทรคมนาคมและการขนส่ง กลุ่มสาธารณูปโภค และลูกค้าภาครัฐ หากท่านใดสนใจโซลูชั่นของกลุ่มธุรกิจใด สามารถติดต่อสอบถามได้ที่อีเมล marketing@stream.co.th หรือโทร. 02-679-2233 นะคะ

0 0 Continue Reading →

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

Privacy Preferences

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

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

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

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

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

Save