สร้าง classification model ด้วย Custom Vision

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

เราเดินทางมาถึงยุคที่สามารถสร้าง classification model ผ่านเว็บกันแล้ว บทความที่แล้วเราได้รู้จักกับ AutoML ของ google ไปบ้างแล้ว บทความนี้เราจะพาไปทำความรู้จักกับ Custom Vision ของ Microsoft กันบ้างครับ

https://customvision.ai

Custom Vision ( ตอนนี้ยังอยู่ในสถานะ preview ) ทำได้ 2 อย่างคือ

  1. Classification — บอกได้ว่ารูปใบนี้คือรูปอะไร
  2. Object Detection — บอกได้ว่าวัตถุนี้อยู่ตรงไหนของรูป

Dataset

ก่อนจะเริ่มลงมือ ขอแนะนำ dataset ที่เราใช้กันก่อนคับ เรายังคงใช้ pika dataset v.3 ตัวเดียวกับที่ใช้ในบทความก่อน เพื่อเวลาเอาผลลัพท์มาชนกัน จะได้ชนกันได้ตรงๆครับ

Pika Dataset v3 — https://github.com/diewland/pika-dataset-v3

Classification

“upload รูปภาพ / label รูปภาพที่ upload / กด train” เป็นอันจบกระบวนการครับ

ความเร็วในการ train ของ Custom Vision ต้องบอกว่าตกตะลึงมาก ผู้เขียนใช้รูปภาพ label ละ ~500 ใบ 3 label รวมภาพทั้งหมดราว 1500 ใบ ใช้เวลาในการ train ประมาณ 10 วินาที.. เร็วจนทีแรกเข้าใจว่ากดไม่ติด แต่พอจะกด train ซ้ำพบว่า model ได้ถูกสร้างขึ้นมาแล้ว พร้อมทั้งวัด performance ให้เสร็จสรรพ 😱..

เราสามารถทำอะไรกับ model ที่ถูกสร้างขึ้นได้บ้าง ?

  1. ทดลองอัพรูปเล่นในเว็บดูงานก่อนได้ ( เหมือน AutoML )
  2. ทำเป็น classification service ยิง REST เข้ามาได้ ( เหมือน AutoML )
  3. สามารถ export model ออกมาใช้งาน offline ได้ ✨ เป็น killer feature ของ Custom Vision ในตอนนี้ เพราะ AutoML ไม่มี feature นี้แล้ว ( ในอดีต AutoML เคยมี feature นี้ แต่พอ product เริ่มนิ่งซักพัก feature นี้ก็ถูกลบทิ้งไป ) ซึ่งเราไม่รู้ได้ว่า Custom Vision จะเดินตามรอย AutoML รึเปล่า ? ใครอยากได้ classification model คุณภาพดี แถมยังยอมให้ save เก็บไว้ได้ด้วย ตอนนี้ถือเป็นโอกาสอันดีครับ 👍 👍
Export format ของ Custom Vision

การ export model ของ Custom Vision มีเงื่อนไขอยู่อย่างนึงคือ เราต้องเลือก Project Domain เป็นแบบ compact ครับ ซึ่งจะมีขนาด model ที่เล็กกว่าแบบปกติ ซึ่งแน่นอนว่าจะส่งผลต่อความแม่นยำของ model ด้วยเช่นกัน

ต่อไปเป็นการชนกันระหว่าง Custom Vision และ AutoML ด้วยรูปตัวอย่างที่เราเตรียมไว้เซตเดียวกัน dataset ในการ train มีรายละเอียดดังนี้

  1. ใช้ 3 label ( pikachu, raichu, not_match )
  2. ใช้รูป ~500 ใบในแต่ละ label ( รวมรูปทั้งหมด ~1500 ใบ )
  3. ฝั่ง Custom Vision ใช้ Domain แบบปกติ ( ไม่ compact )
Custom Vision vs AutoML, ~500 images per label

Object Detection

นอกจากการทำ Classification แล้ว Custom Vision ยังสามารถทำ Object Detection ได้อีกด้วย ซึ่งความโหดของการทำ Object Detection คือเราต้องทำการ label ทีละใบด้วยมือของเราเอง 😱..

Object Detection — Example labeled images

หลังจากที่ผู้เขียน label ไปประมาณ 200 รูป พบว่านิ้วเริ่มล็อค จึงหยุด label แล้วทำการ train ผลลัพท์ออกมาเป็นดังนี้

Object Detection — Result from 200 labeled images

เราจะพบว่าผลลัพท์ดู promising ระดับนึง ถ้าหากเรา label ต่อไปที่ 500 รูป, 1000 รูป (และนิ้วยังไม่ล็อค) ผลลัพท์ก็ควรจะดีขึ้นตามลำดับ

Summary

ขอสรุป feature ( โดยไม่อิงความแม่นยำ ) ได้ดังนี้คับ

  • Custom Vision และ AutoML สามารถทำ Classification แบบ REST ได้ทั้งคู่
  • Custom Vision สามารถ export classification model ได้ โดยต้องเลือก domain เป็นแบบ compact
  • Object Detection มีเพียง Custom Vision ที่สามารถทำได้ โดยต้องการ label ด้วยมือทั้งหมด แล้วไม่สามารถ export model ออกมาใช้ offline ได้
Custom Vision vs AutoML features

สุดท้ายนี้ขอให้ผู้อ่านมีความสุขในเทศกาลปีใหม่ที่กำลังจะมาถึง Merry X’mas & Happy new year ครับ 🎆 🌟 🎆🌟🎆 ️✨✨