ซินแส AI: มาทายโหงวเฮ้งจากใบหน้ากันเถอะ

Pleum164
Pleum164
Dec 12, 2020 · 6 min read
Image for post
Image for post

Objective: บทความนี้เป็นส่วนหนึ่งของ Data Science Essential ของ Botnoi Classroom หัวข้อ Machine Learning ของกลุ่ม IDE2_G10

สวัสดีครับ สำหรับครั้งนี้กลุ่ม10 ได้นำความรู้ที่ร่ำเรียนมาในวีคที่ 2–3 มาสร้างสรรค์ Project 2 ซึ่งกี่ยวกับ Artificial Intelligence (AI) และ Machine Learning (ML)

สำหรับโจทย์ในProjectของพวกเรานั้นก็คือ “สร้างโมเดลให้ ทายประเภทโหงวเฮ้งจากรูปใบหน้าคน”

ก่อนอื่นเลย เรามาทำความเข้าใจเกี่ยวกับเจ้า AI และ Machine Learning ว่ามันแตกต่างกันยังไงนะ?

AI หรือที่ภาษาไทยเรียกว่า ปัญญาประดิษฐ์ หมายถึง เครื่องจักร(machine) ที่มีฟังก์ชันทีมีความสามารถในการทำความเข้าใจ เรียนรู้องค์ความรู้ต่างๆ อาทิเช่น การรับรู้ การเรียนรู้ การให้เหตุผล และการแก้ปัญหาต่างๆ แล้วทีนี้ Machine Learning เกี่ยวยังไง

เอาหล่ะ เราลองคิดว่า ฟังก์ชั่นที่เราใส่ลงไปในmachine ก็เหมือนกับการสร้างสมองให้machineนั้น ๆ ดังนั้น Machine Learning คือซับเซ็ตของ AI ที่จะเจาะจงไปที่การTrainสมองของmachineนั้นๆ โดย machine ก็จะพยายามหารูปแบบ(pattern)ต่างๆของข้อมูล(input data )ที่ถูกใส่เข้ามาในการtrain ซึ่งเราสามารถที่จะนำหลักการนี้ มาประยุกต์ใช้เพื่อทำการทำนายถึงความเป็นไปในอนาคตได้ เช่น การใช้ Machine Learning ในการทำนายราคาหุ้นในอนาคต จากข้อมูลกราฟในอดีตและปัจจุบัน

ในโจทย์ของเรา เราจะใช้ Machine Learning ประเภทSupervised Learning แบบClassification มาทำนายประเภทของโหวงเฮ้ง ที่เราได้แบ่งไวhทั้งหมด 4 ประเภท ตามสาขาอาชีพที่เป็นที่รู้จักและได้รับการกล่าวถึงในโลกsocialเป็นอันดับต้นๆ ได้แก่ นักการเมือง นักธุรกิจ นักแสดง และนักกีฬา เอาหล่ะเกริ่นมาพอสมควรแล้ว เราไปดูกันเถอะว่า กว่าจะมาเป็นท่านซินแสAI ผู้ทำนายทายทักโหวงเฮ้งนั้น จะต้องผ่านขั้นตอนอะไรมาบ้าง

— — — BEHIND THE SCENES — — -

สำหรับProjectนี้ กลุ่มเราได้วางขั้นตอนการทำงานอย่างเป็นระบบตาม Machine Learning Pipeline โดยแบ่งเป็นเฟสต่างๆดังนี้

Image for post
Image for post

0. Find the topic — หาหัวข้อที่จะนำแมชชีนเลิร์นนิ่งมาใช้

  1. Collect & clean data — เก็บและจัดเตรียมข้อมูลรูปภาพที่จะใช้ป้อนให้โมเดลเรียนรู้
  2. Extract features — แปลงข้อมูลที่เป็นรูปภาพให้ออกมาเป็นข้อมูลตัวเลขที่โมเดลสามารถนำไปเรียนรู้ได้
  3. Train models and evaluate models — พัฒนาโมเดลให้สามารถทำนายผลลัพธ์ได้อย่างแม่นยำ และในขั้นตอนนี้ถ้าผลลัพธ์ยังไม่เป็นที่น่าพอใจ เราสามารถวนกลับไปยังขั้นตอนต้นๆ ทำการปรับปรุงแก้ไข หรือเก็บข้อมูลเพิ่มเติมได้ เพื่อการพัฒนาผลลัพธ์ของโมเดลให้ดียิ่งขึ้น
  4. Deploy API — นำโค้ดที่พัฒนาขึ้นไปวางไว้บนอินเตอร์เน็ตเพื่อให้บุคคลทั่วไปใช้งานได้

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

STEP 0 — FIND THE TOPIC

PROLOGUE

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

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

PHYSIOGNOMY (โหงวเฮ้ง)

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

ถัดมาจึงได้ทำการระดมสมองช่วยกันคิดเลือกอาชีพที่จะนำมาทายเป็นผลลัพธ์ ซึ่งได้แก่ นักการเมือง นักธุรกิจ นักอินฟลูเอนเซอร์ นักแสดงฮอลลีวู้ด นักแสดงเกาหลี นักกีฬา นักร้อง และนักวิทยาศาสตร์ ซึ่งนับรวมได้ทั้งหมด 8 คลาส และข้อมูลภาพเหล่านี้ก็น่าจะหาได้ไม่ยากนักจากกูเกิ้ลอิมเมจ

แม้ว่าทางกลุ่มเห็นตรงกันแล้วว่าใบหน้าของเรานั้นไม่อาจเป็นตัวทำนายที่แม่นยำได้ว่าบุคคลนั้นจะประกอบอาชีพอะไร (เพราะไม่มีความสัมพันธ์กัน) แต่เราก็ได้คิดกันว่าการที่ทำโมเดลออกมาแล้วค่าความแม่นยำในการทำนายซึ่งน่าจะไม่ต่างกับการเดาสุ่มนั้น การเดาสุ่มให้ถูก 1 ใน 8 นั้น ค่าที่ได้คือ 0.125 ซึ่งถ้าทำแบบนั้นอาจจะดูไม่งดงามเท่าใด กลุ่มจึงได้ทำการลดคลาสอาชีพลงมาเหลือ 4 คลาสเพื่อให้ค่าความแม่นยำไม่ดูน่าเวทนาเกินไปนัก โดยคลาสที่เหลือ ได้แก่ นักการเมือง นักธุรกิจ นักแสดง และนักกีฬา

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

STEP 1 — COLLECT AND CLEAN DATA

PLANED

ในการศึกษาภาพถ่ายใบหน้าของมนุษย์นั้นสิ่งที่จะต้องใช้เป็นข้อมูลคือ ภาพใบหน้าของมนุษย์ ทางกลุ่มของเราจึงได้คิดที่จะนำโค้ด image scraping ที่ใช้ในการดึงรูปที่ได้เรียนมาในคลาสเรียนของบอทน้อยมาดึงรูปตามคีย์เวิร์ดที่ให้ไป เช่น ‘businessman face’ แล้วนำภาพต่างๆ มาคัดแยกแบบแมนวลให้ได้ภาพที่มีคุณภาพดี กล่าวคือเป็นภาพของบุคคลที่ทำอาชีพนั้นและเห็นใบหน้าชัดเจน ให้ได้รูปคุณภาพดีๆ ดังกล่าวประมาณอาชีพละ 30–100 ภาพ

UNPLANED

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

Image for post
Image for post
Image for post
Image for post
Figure 1 Impostors จำนวนมากที่แสร้งทำตัวเป็นนักธุรกิจ พร้อมทั้งแสร้งทำเป็นคนดีใส่หน้ากากป้องกันโควิด

SOLUTION

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

Image for post
Image for post
Image for post
Image for post
Figure 2 รายชื่อบุคคลชั้นนำของอาชีพต่างๆ ที่จะเป็นตัวแทนข้อมูลป้อนให้โมเดลเรียนรู้

สำหรับแต่ละชื่อหรือคีย์เวิร์ดนั้นจะดึงมาทั้งหมด 10 รูป แล้วใช้แรงงานคนสแกนรูปที่ไม่มีคุณภาพออกไป ซื่งผลลัพธ์จากการดึงรูปมานั้นได้ภาพที่มีคุณภาพค่อนข้างดีทีเดียว ส่วนถ้าคีย์เวิร์ดใดได้รูปที่มีคุณภาพดีเป็นจำนวนมาก ก็จะถูกลบภาพบางภาพออกให้เหลือจำนวนไม่เกิน 4 รูปเพื่อไม่ให้เด่นเกินเบอร์มากไปนัก จนสุดท้ายได้ภาพ มาจำนวนทั้งหมดจำนวน 1,040 รูป แบ่งเป็นแต่ละอาชีพได้ดังกราฟ (384, 222, 185, และ 249 รูป)

Image for post
Image for post
Figure 3จำนวนรูปภาพอาชีพต่างๆที่จะถูกนำเข้าไปใช้ในการเทรนโมเดล
Image for post
Image for post
Figure 4 ประยุทธ์ จันทร์โอชา ผู้ที่มีโหงวเฮ้งเป็นนักการเมือง ไม่ใช่ทหาร

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

STEP 2 -EXTRACT FEATURES

PLANED

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

UNPLANED

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

Image for post
Image for post
Image for post
Image for post
Figure 5 การตรวจจับใบหน้าด้วย opencv

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

SOLUTION

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

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

STEP 3 -TRAIN MODELS AND EVALUATE MODELS

MODEL 1 (Haar Cascade: Face Detection)

จากสถานการณ์ UNPLANED ในSTEP 2 นั่นกลายเป็นว่าเราจะใช้ Haar Cascade ซึ่งต่อไปจะขอเรียกว่า “โมเดล 1” มาช่วยในการคัดแยกกรองobjectอื่นๆที่ไม่ใช่ใบหน้าของมนุษย์ และยังสามารถตีกรอบในส่วนของใบหน้ามนุษย์ (Focus area) เพื่อส่งเข้าไป extract feature ยังgetresnet50ได้อีกด้วย

แต่ก่อนที่จะไปพูดถึงการสร้างโมเดลแยกใบหน้านั้น ซึ่งต่อไปจะขอเรียกว่า “โมเดล 2” ขออนุญาตย้อนกลับมาพูดถึงการประเมินความแม่นยำของโมเดล 1 สักหน่อย

Image for post
Image for post
Figure 6 Haar-cascade Detection in OpenCV (Model 1)

ซึ่งก่อนที่จะนำโมเดล 1 นี้ไปใช้จริง เราเลือกที่จะทำการประเมินความแม่นยำของโมเดลก่อนโดยนำ

  1. ภาพคนที่ถูกclean จาก STEP 1 ที่มีคุณภาพตามต้องการแล้วจำนวนทั้งสิ้น 1,040 รูป
  2. ภาพที่ไม่ใช่คนจาก CIFAR-10 dataset ซึ่งเป็นชุดภาพที่ใช้กันทั่วไปในการเทรน Machine Learning ประกอบไปด้วยภาพสี 60,000 (32x32) ภาพใน 10 คลาสที่แตกต่างกัน ซึ่งเป็นภาพของสิ่งที่ไม่ใช่คน เช่นเครื่องบิน รถ กบ เป็นต้น โดยเราได้ดึงรูปในdatasetดังกล่าวจำนวน 1,040 รูป

เพื่อนำมาประเมินความแม่นยำของการตัวจับใบหน้าคนก่อน

Image for post
Image for post
Figure 7 CIFAR-10 dataset for Model 1’s evaluation
Image for post
Image for post
Figure 8 Model 1’s accuracy

ซึ่งจากการทำประเมินโมเดล 1 เราพบความ ความแม่นยำบนชุดข้อมูลของเราอยู่ที่ 0.93269 ซึ่งถือว่าโอเคในระดับหนึ่ง แต่ Precision 1.000000 หรือความหมายคือ ไม่ตรวจเจอใบหน้าของคนจากข้อมูลที่มาจาก CIFAR-10 เลย ซึ่งปรัหานี้น่าจะเกิดจากขนาดของรูป CIFAR-10 ที่ต่ำมาก (32x32) แต่เมื่อเทียบกับชุดข้อมูลใบหน้าที่มีความระเอียดสูงและใหญ่กว่า บางภาพ(600x400) เลยเป็นได้ว่าความละเอียดที่ต่ำมีผลต่อการตัวจับใบหน้า

MODEL 2 (Classifiers)

เราได้นำรูปภาพคน 1,040 รูปที่cleanไว้เซตเดิมจากSTEP 1 มาตีกรอบหน้าด้วยโมเดล 1 และนำoutputที่ได้ ไปextract feature ด้วยgetresnet50 ของbotnoi และเราจะได้ array ที่มี size 100352 จากนั้นนำชุด array ดังกล่าวเข้าทดสอบกับ Classifier 3 ประเภท ได้แก่

  • Randomforest
  • XGBoost
  • SVC (Support Vector Classification)
Image for post
Image for post
Figure 9 Cross Validation for Model 2

ซึ่งเราได้ใช้การcross validation แบ่งข้อมูลเป็น 10 Folds เพื่อประเมินผลของโมเดล โดยได้ผลลัพธ์ดังนี้

  • Random Forest มี accuracy อยู่ที่ 0.291346
  • XGBoost มี accuracy อยู่ที่ 0.29519
  • SVC มี accuracy อยู่ที่ 0.34711

จะเห็นได้ว่าทุกโมเดลให้ผลเกิน 25% ซึ่งเกินค่าพื้นฐาน (Minimun) ที่Model 2 ควรจะทำได้ จากการclassifyทั้งหมด 4 คลาส และตัวclassifier SVC ให้ผลลัพธ์ดีกว่าตัวอื่นๆ และถูกเลือกให้เป็นพระเอกในการDeploy ครั้งนี้

Figure 9 Model 2’s accuracy (Random Forest, XGBoost and SCV)

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

STEP 4 — DEPLOY API

PLANED

หลังจากที่ได้ตรากตรำเขียนโค้ดสร้างโมเดลบน Colab มาอย่างยาวนาน ขั้นตอนสุดท้ายก็น่าจะเป็นขั้นตอนง่ายที่สุดเพียงแค่เอาโค้ดที่ได้เขียนไว้แล้วไปแปะไว้บนไฟล์ตามตัวอย่างไฟล์ที่ทางบอทน้อยได้มีแสดงไว้ แล้วเราก็จะได้เปิดตัวโมเดล API สู่สาธารณชนอย่างสวยงาม

UNPLANED

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

SOLUTION

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

โดยรายละเอียดของ API มีดังนี้

ลิ้งค์ API

HEROKU:

API1 : Model 1 — ตรวจจับใบหน้าจากรูปภาพ

Api นี้จะรับรูปภาพมาเพื่อตรวจหาว่าในภาพนั้นมีใบหน้าคนอยู่ที่ตำแหน่งใด และจะตัดภาพออกมาเฉพาะตรงส่วนที่เป็นใบหน้าคนเท่านั้น แล้วส่งภาพใบหน้าดังกล่าวคืนออกมาเป็นผลลัพธ์ในรูปแบบ url โดยถ้าภาพที่ส่งมามีหลายใบหน้า Api ตัวนี้ก็จะคืนภาพใบหน้าออกมาทั้งหมดเท่าที่โมเดลนี้ตรวจจับได้

ลิงค์ API1

https://face-vs-occupation.herokuapp.com/getface?path=ลิงค์urlรูปภาพที่จะให้ตรวจจับใบหน้า

ตัวอย่าง

https://face-vs-occupation.herokuapp.com/getface?path=https://images.immediate.co.uk/production/volatile/sites/3/2020/06/the_politician_ben_platt-d1fe8db.jpg?quality=90&resize=768,574

Image for post
Image for post

API2 : Model 2 — ทำนายโหงวเฮ้งว่าเหมาะกับอาชีพอะไรจากภาพใบหน้า

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

ลิ้งค์ API2

https://face-vs-occupation.herokuapp.com/getoccupation?path=ลิงค์urlรูปภาพใบหน้าที่จะให้ทำนายโหงวเฮ้งอาชีพ

ตัวอย่าง

https://face-vs-occupation.herokuapp.com/getoccupation?path=http://res.cloudinary.com/dza8dpwsy/image/upload/v1607700520/face1.jpg

Image for post
Image for post
Image for post
Image for post

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

บทสรุปและมุมมองการต่อยอดทางธุรกิจ

กลุ่ม G10 ของเราได้สร้างท่านซินแสAI มาทำนายอาชีพการงาน จากโหงวเฮ้งของรูปภาพหน้าตาของคนเเต่ละคน โดยมีการใช้ 2 โมเดลเพื่อให้มีความถูกต้องซึ่งคือ โมเดล 1 ที่ตรวจสอบว่ารูปนี้เป็นบุคคลหรือไม่ โดยโมเดลนี้มี accuracy ถึง 90 กว่าเปอร์เซ็นต์เเต่ถึงกระนั้นก็อาจจะมีความเป็นไปได้ที่รูปที่เรานำมา train กับ test จาก CIFAR-10 นั้นมีขนาดที่เล็กเกินไปจนทำให้โมเดลมีความคลาดเคลื่อน โดยหลังจากที่จัดการรูปหลังจากโมเดล 1 เเล้วเราก็นำผลลัพธ์เข้าโมเดล 2 เพื่อจัดประเภทต่อไปว่า โหวงเฮ้งของคนๆนี้ควรถูกจัดอยู่ในอาชีพใด ใน 4 สาขาอาชีพที่คนในสังคมให้ความสนใจ

โดยเราเลือกใช้ SVC เป็นโมเดลหลักในการจัดประเภทเนื่องจาก SVC ให้ accuracy เกิน 30 เปอร์เซ็นต์ซึ่งสูงที่สุดในบรรดา 3 classifierที่ทางทีมของเราเลือกใช้ ซึ่งเป็นผลลัพธ์ที่น่าสนใจเพราะในตอนเเรกนั้นทีมของเราเชื่อว่าผลลัพธ์น่าจะวนอยู่ที่ 25 เปอร์เซ็นต์เท่ากับการเดาสุ่ม 1 อาชีพจาก 4 อาชีพ เนื่องจากทางทีมของมีความเห็นไปในทางเดียวกันที่ว่าหน้าตานั้นไม่น่าจะมีผลต่อการเลือกทำอาชีพ เเต่ผลลัพธ์ที่ออกมานั้นน่าสนใจจริงๆครับ ถึงเเม้ว่าเราคงจะพูดสรุปไม่ได้ว่าหน้าตามีส่วนเกี่ยวข้องกับอาชีพจริงๆหรือไม่ (อย่างที่ทุกคนก็ทราบกันอยู่ว่า หมอดูหรือซินแสในชีวิตจริง การที่เค้าทำนายทายทักเรามา มันก็มีโอกาสตรงบ้างไม่ตรงบ้าง) เเต่อย่างน้อยเราก็มองเห็นถึงความสามารถของซินแสAI ที่เป็นไปได้มากกว่าความตั้งใจตอนแรก (ทำแค่เน้นความสนุก เอามันส์)

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

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

ในเชิงธุรกิจการทำนายอาชีพจากโหงวเฮ้งบนใบหน้าสามารถเอาไปใช้ต่อยอดได้หลายระดับ ทั้งในระดับ B2C (Business-to-Consumer) หรือในระดับ B2B (Business-to-Business) มากมาย ดังตัวอย่าง

  • หากเรารู้ว่าลูกค้าของเรานั้นประกอบอาชีพอะไร เราก็อาจจะสามารถประเมินรายได้และกำลังซื้อของลูกค้าได้ ทำให้สามารถเลือกให้บริการลูกค้าแต่ละประเภทได้อย่างเหมาะสม เช่น เราสามารถเทรนด์พนักงานขายให้บริการพิเศษกับคุณลูกค้าที่ดูหน้าหรวย เป็นต้น
  • นอกจากนี้ในเชิงด้านการรักษาความปลอดภัยก็สามารถนำมาใช้งานได้ เนื่องจากอาชีพของคนเราเป็นตัวสะท้อนถึงความสามารถของคนๆนั้น ถ้าเราเป็นบริษัทให้บริการรักษาความปลอดภัยแล้วเจอเหตุการณ์ที่มีคนที่มีเรื่องกันในพื้นที่ที่เราดูแลอยู่ การที่เรารู้ว่าคนที่ทะเลาะกันมีความน่าจะเป็นที่จะเป็นนักมวยอาชีพ เราก็จะไม่รีบผลีผลามเข้าไป แต่จะวางแผนห้ามปรามความขัดแย้งดังกล่าวให้รัดกุม โดยทำการเรียกระดมพลให้พร้อมเพรียงก่อนที่จะเข้าไปต่อกรกับเขา
  • สำหรับในส่วนขององค์กรนั้น จะยิ่งเห็นภาพการนำโมเดลโหงวเฮ้งนี้ไปใช้ประโยชน์ได้ชัดเจน ดังคำกล่าวที่ว่า “Put the right man on the right job” หรือแปลได้ว่าการวางคนที่ใช่ไปใส่ไว้ในตำแหน่งงานที่เหมาะสม ตัวอย่างเช่น เราสามารถดึงคนที่ดูมีแวว มีโหงวเฮ้งเหมาะกับการเป็นนักบริหารขึ้นมาทำงานที่เหมาะสมกับเชา ดีกว่าจะปล่อยให้เขาผู้นั้นทนทำงานที่ไม่เหมาะสมกับตัวเองเช่นงานดูแลรักษาความปลอดภัยของชาติ เป็นต้น
  • และแม้ในองค์กรใหญ่ๆ ก็ยังมีการให้ความสำคัญกับการใช้โหงวเฮ้งในการรับคนเข้ามาทำงาน ซึ่งการดูโหงวเฮ้งแบบเดิมๆย่อมต้องใช้ซินแสที่เป็นคนในการตรวจสอบ ซึ่งคนเรานั้นย่อมจะมีความเกิด แก่ เจ็บ ตาย เป็นธรรมดา แล้วอะไรจะเกิดขึ้นถ้าหากซินแสผู้นั้นไม่สามารถอยู่เคียงคู่องค์กรได้ตราบนานเท่านาน? ซินแส AI ของเราจึงเป็นคำตอบของปัญหานี้

เนื่องจากทีมเราไม่ได้มี developer เเละ data scientist ที่เป็นโปร งานคราวนี้ได้ทีมงานจากทาง botnoi มาช่วยจัดการ environment เเละ deploy api ให้ถึงทำให้ทุกอย่างผ่านไปได้ด้วยดี ต้องขอบคุณมากๆครับ

ใครที่ชอบก็อย่าลืมกดตรบมือเป็นการให้กำลังใจเเก่คนเขียนด้วยนะครับ

ลิ้ง google colab ของกลุ่ม G10:

https://colab.research.google.com/drive/10lYN_zG0RHZdWj1aVX8mW4jZLhYp1BTc?usp=sharing

https://colab.research.google.com/drive/1DnPQZcZ50yl-dOHci4zfwlv44zhtJHxn?usp=sharing

https://colab.research.google.com/drive/1o6N8uYpHTJnfM4T9qsDGshLvaNSjan3A?usp=sharing

botnoi-classroom

This publication consists of articles related to Data…

Pleum164

Written by

Pleum164

botnoi-classroom

This publication consists of articles related to Data science and AI written from Botnoi’s data scientists and students.

Pleum164

Written by

Pleum164

botnoi-classroom

This publication consists of articles related to Data science and AI written from Botnoi’s data scientists and students.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store