[Firebase] มาดู ML Kit เครื่องมือใหม่จากทีม Firebase กัน

Kajornsak P.
Firebase Thailand
Published in
4 min readMay 11, 2018
https://developers.googleblog.com/2018/05/introducing-ml-kit.html

ในงาน Google I/O 2018 ทางทีม Firebase ได้เปิดตัวผลิตภัณฑ์ใหม่ ชื่อว่า ML Kit ซึ่งเป็น Tool ใหม่สำหรับการทำ Machine Learning อย่างง่าย ให้กับ Mobile Developer ทั้งหลาย

ทำไมต้องทำ Machine Learning บน Mobile application ด้วยหล่ะ?

ใน Session ของ ML Kit ได้บอกไว้ว่า เราสามารถใช้ Machine Learning ได้หลายวิธี เช่น

  • Google Translate ที่เราเคยเห็นกัน สำหรับการทำ real-time translation
  • Yousician ที่สามารถ classify โน้ตเสียงของเครื่องดนตรีได้ในแอพ
  • Evernote ที่ทำ Handwritten recognition ด้วย ML

เห็นได้ว่าจริงๆแล้ว ML นั้นไม่ได้เป็น Core สำคัญหลักของแอปเท่าไหร่นัก แต่สามารถเพิ่มประสิทธิภาพของแอปได้เยอะมาก ไหนจะ UX ที่ดีขึ้นต่อผู้ใช้งานอีกด้วย

ML นั้นทำได้ แต่ทำยาก (Doable, but hard.)

1. การทำ Machine Learning นั้นจำเป็นต้องใช้ข้อมูลที่มาก (ทั้งด้านปริมาณ และคุณภาพ)

2. ต้องทำ model ที่ optimized ให้เข้ากับ process ของ Mobile ให้ได้

3. การ Deploy ให้ใช้งานจริงนั้นทำได้ยาก หากโมเดลยังไม่นิ่ง มีการปรับเปลี่ยนเรื่อยๆ

Layer ของการทำ Machine Learning นั้นแบ่งออกเป็น 3 ส่วน

  1. Application SDK สำหรับ dev ใช้งาน (layer บนสุดเลย)
  2. Tensorflow Lite สำหรับเชื่อมต่อ model tensorflow และ Processing Unit ของ Mobile
  3. ส่วน Process หลักสำหรับการใช้งาน Machine Learning บน Mobile โดยแยกตาม Platform ซึ่งบน Android นั้นมี NN API และ iOS ใช้ Metal เพื่อคุม GPU นั่นเอง

โดยที่ML Kit จะอยู่ในส่วนของ Application SDK เพื่อให้นักพัฒนาสามารถใช้งานได้โดยไม่ต้องลงไปถึง layer ล่างๆนั่นเอง

ML Kit คืออะไร

ML Kit คือ SDK สำหรับ Machine Learning บน Android และ iOS ซึ่งประกอบไปด้วยสองส่วนหลักๆ คือ Base APIs และ Custom model ซึ่งเจ้า ML Kit นั้นสามารถใช้งานได้ทั้งแบบ Offline (On-device) และ Online (Google Cloud AI) ซึ่งแบบ Offline นั้นสามารถใช้ได้ฟรี แต่มีขีดจำกัดความสามารถอยู่นิดหน่อย

ข้อดีอีกอย่างของ ML Kit ก็คือ ตัวมันเองเป็น product ของ Firebase ทำให้สามารถ integrate เข้ากับตัวอื่นได้ง่ายๆ เช่น Firebase Remote Config

Base APIs

ML Kit มาพร้อมกับ API พื้นฐานสำหรับงาน ML ทั่วๆไปที่คนนิยมกัน ได้แก่

  • Text recognition (On-device, Cloud) สำหรับทำ OCR
  • Image labeling (On-device, Cloud) สำหรับ Classify ของที่อยู่ในรูป
  • Barcode scanning (On-device) สำหรับอ่านบาร์โค้ดชนิดต่างๆ
  • Face detection (On-device) สำหรับ detect หน้าและสีหน้าของคนจากกล้อง
  • Landmark recognition (Cloud) สำหรับค้นหาว่าสถานที่ในภาพคือที่ไหน
  • (Upcoming) High density face contour feature สำหรับ detect องค์ประกอบบนหน้าคน เท่าที่เห็น demo คือทำออกมาได้ดีเลย โดยไม่ต้องใช้ sensor อื่นๆเลย
  • (Upcoming) Smart reply APIสำหรับการ generate ข้อความเวลาตอบอีเมล์แบบ Gmail นั่นเอง
ตัวอย่าง การทำ face contour feature ที่กำลังจะมา

Custom model support

ML Kit นั่นรองรับการใช้ model อื่นๆนอกจากที่มีให้ใน Base APIs ด้วย โดยความสามารถหลักๆคือ

  • Dynamic model downloads เพื่อลดขนาดแอปตอนโหลดได้
  • Support A/B testing ด้วย Firebase Remote Config โดยไม่ต้องโหลดแอปใหม่
  • Model conversion and compression เพื่อแปลงจาก TF model กลายเป็น TFLite model (.tflite) ได้

เป้าหมายหลักของ ML Kit คือการ focus ที่ 4 ด้านได้แก่ Vision, Speech, Text และ การทำ support ให้ custom model ทั้งหลายนอกเหนือจาก image classification model

ML Kit ใช้ยังไง?

วิธีใช้ ML Kit นั้นง่ายๆ เหมือนกับ Firebase product อื่นๆเลย เพียงเข้าไปที่ ML Kit แล้วทำตาม Tutorial หรือ Docs จบ…เดี๋ยวว ง่ายไป

ใน Session ยังได้ยกตัวอย่างการใช้งาน Image Labeling API เพื่อหาว่ารูปนั้นเป็นรูปอะไรด้วย

ยกตัวอย่างเช่นรูปนี้ หากใช้ Image Labeling API จะสามารถบอกได้ว่า รูปนี้มีองค์ประกอบรวมๆเป็นอย่างไร เหมือนการหา tag ให้รูปนั่นเอง ซึ่งสามารถทำได้สองทาง ทั้งบน Device และบน Cloud ซึ่งสองอย่างนี้จะต่างกันก็ตรงที่

ราคา

  • On-Device : ฟรี ไม่จำกัดจำนวนการใช้
  • Cloud : ใช้ได้ฟรี 1000 API calls

ความสามารถ

  • On-Device : รองรับประมาณ 400+ labels (เนื่องจากขนาดต้องเล็กพอจะอยู่บน Mobile device นั่นเอง)
  • Cloud : บอก label ได้ประมาณ 10,000+ labels แม่นยำกว่าและมากกว่า เนื่องจาก process อยู่บน Cloud AI นั่นเอง (ตัวเดียวกับ Cloud Vision API อะแหละ)

ซึ่งการเปลี่ยนจาก On-device เป็น Cloud นั้นทำง่ายมากๆ แค่เปลี่ยน endpoint ของการใช้งาน ML Kit ในโค้ดนั่นเอง ไม่เกิน 2 บรรทัด ง่ายมั่กๆ

หากจะบอกว่า ML สามารถทำได้แค่นี้ ก็คงจะโหดร้ายเกินไป ดังนั้น Firebase team เลยเปิดให้ใช้ Custom model จาก TensorflowLite ได้ด้วย ซึ่งเดี๋ยวบทความหน้าๆ จะมาลองเล่นกันอีกที

ซึ่งเราสามารถ load model จาก Firebase กลับลงมาก็ได้ แถมเปลี่ยน Model ได้แบบ dynamic โดยใช้ Firebase Remote Config

อีกหนึ่ง feature ที่กำลังจะมา คือการ compression/conversion model

ทำไมถึงต้องทำการ compression/conversion?

ML model บน Cloud กับ Mobile นั้นต่างกันที่ขนาดของ Model เนื่องจากการทำ ML บน Cloud นั้นสามารถ maximize accuracy ได้ แต่ตามมาด้วยจำนวนของ parameter ที่เพิ่มขึ้นใน model นั่นเอง ซึ่งแลกมาด้วยขนาดของไฟล์ และความเร็วในการประมวลผลนั่นเอง

โมเดลยิ่งซับซ้อน ยิ่งขนาดใหญ่ แต่ก็ accuracy สูงขึ้น

โดยทีม ML Kit ได้บอกไว้หลักๆว่า เค้าทำยังไงเพื่อลดขนาด ML model มาใช้บน ML Kit ได้

  • Pruning weight และ activation(เหมือนทำ Pruning Graph อะแหละ ) โดยสามารถลดขนาดลงได้ 2x
  • Quantization โดยการใช้ 8-bit fixed point แทน float ใน weight และ activation สามารถลดขนาดลงได้ 4x
  • Distillation, distill knowledge จาก Teacher model (Model ที่ใหญ่กว่า) โดยให้ Student model (Model ที่เล็กกว่า) เรียนรู้จาก ground truth และ เรียนรู้จาก Teacher model ไปพร้อมกัน
  • Joint training โดยการแบ่ง student model ออกเป็นหลายๆตัว เพื่อช่วยกัน learn

Note: การ compression ยังต้องใช้ original model และ training data อยู่เพื่อการ fine-tuning model ใหม่ที่จะถูกสร้าง

Note 2 : ทั้งนี้ทั้งนั้น model compression รองรับเฉพาะ Image classification เท่านั้น ณ วันที่เขียนบทความ และยังไม่เปิดให้ใช้

Note 3 : ML Kit ยังเป็น Beta อยู่ เพราะฉะนั้น โปรดใช้วิจารณญาณในการใช้งานนะจ๊ะ

บทความนี้ขอเกริ่นไว้คร่าวๆก่อนว่า ML Kit คืออะไร แล้วเดี๋ยวบทความหน้าเราจะมาลองเล่น Tools แต่ละตัวกันเน้อ บัยย~

--

--

Kajornsak P.
Firebase Thailand

Android & iOS developer. Interest in UI/UX design. Currently, Senior iOS Engineer at Agoda — Mobile Platform team