AutoML ใครๆก็สร้าง Model AI ได้

Image placeholder
แวะมาทักทายกันได้


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



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

 

Machine Learning จะมาช่วยให้คอมพิวเตอร์สามารถรู้ได้ว่ารูปนั้น คืออะไร

 

ในปัจจุบัน Google Cloud มีเครื่องมืออำนวยความสะดวกด้าน Machine Learning มากมาย หนึ่งในนั้นคือ AutoML

 

AutoML มีหลายบริการ ที่ใช้ Machine Learning ใครๆก็สามารถสร้าง Model ได้


ปัจจุบันมีบริการ

  • AutoML Vision 
  • AutoML Video Intelligence สำหรับทำ Object Detection และ Video Classification
  • AutoML Natural Language
  • AutoML Translation
  • AutoML Table สำหรับทำนายผลจากข้อมูลที่เป็นตาราง


Cloud AutoML นี้เหมาะกับใคร

  • เหมาะกับทีมที่มี Data อยู่ในมือแล้วต้องการทำ ML เพราะไม่มี Data scientist
  • Developer ที่ต้องการพัฒนาโมเดลใช้งาน ML
  • ทีม Research ที่ต้องการใช้งาน ML
  • บริษัทที่ต้องการทดสอบ ML ก่อนสร้างทีม Data


ข้อจำกัดของ Cloud AutoML

  • มีค่าใช้จ่าย - ในตอนเริ่มต้นใช้งาน Google Cloud ใจดีมีให้ทดลองใช้งาน 300$ และจำกัดอายุ 91 วัน
  • อาจติดปัญหา Privacy ของข้อมูล – สำหรับบริษัทใหญ่ ๆ ที่มี Policy เรื่องการควบคุม Data ที่ค่อนข้างแน่นหนา การจะอัพข้อมูลเข้าไปในบริการ AutoML เป็นเรื่องที่ต้องสู้รบกับทีม Security พอสมควรเลยครับ

มีอีกบริการหนึ่งชื่อ Vision API จะเป็น Model ที่ทำไว้ให้ใช้งานฟรีๆ เรามาลองเล่น Model ที่ใช้ใน Vision API สามารถวิเคราะห์ภาพได้ในความหมายกว้าง ๆ กัน

 

สมมติว่ามีรูปอาหาร เช่น ส้มตำ ในภาพด้านล่าง รู้ว่าเป็นภาพอาหาร แต่รายละเอียดที่ได้จากข้อมูลวิเคราะห์ ไม่สามารถบอกได้ว่าเป็นส้มตำ โดยให้ค่าความมั่นใจ ว่าเป็นอาหาร (Food) กลับมาที่ 99% ที่ใกล้เคียงขึ้นมาอีกหน่อยก็ ใบของผักสลัด (leaf vegetable) ที่ 80%


สรุปได้ว่า Model ของ Vision API ตัวนี้จะไม่รู้ว่าเป็น ส้มตำ และ ไม่รู้ว่าเป็นส้มตำไทย ส้มตำปลาร้า



อีกสักตัวอย่าง

        


รู้ว่าเป็นคน (human body) มั่นใจ 88%

รู้ว่ากำลังดื่ม (Drinking) มั่นใจ 66%

รู้ว่าเป็นเบียร์ (Beer) มั่นใจ 87%

รู้ว่าเป็นวัด (Temple) มั่นใจ 87%

AI กำลังมองเห็นคนดื่มเบียร์อยู่ในวัด

 

จริง ๆ แล้ว เป็นลานวัด เอ้ย! ลานเบียร์

ในต่างประเทศส่วนมากจะเป็นโบสถ์ น่าจะลักษณะคล้ายในโบสถ์คริสต์มากกว่า

 

จะเห็นว่า Model ของ Vision API นี้จะวิเคราะห์ข้อมูลที่ส่วนใหญ่จะอยู่ใน หมวดรูปภาพของ Google Server เมื่อลองกด click ไปที่ label ที่ได้วิเคราะห์ออกมาเป็นค่าความมั่นใจ  มันจะนำคำนั้นไป Search ต่อ ผู้เขียนคิดว่าก็คงจะเทียบกันแบบนั้น

 

ในการใช้งานจริง ๆ เราอาจจะไม่ได้เพียงอยากให้รู้ว่ามันคือภาพอาหารอะไรประเภทไหน แต่อยากให้จัดกลุ่มได้และตรงตามการใช้งานมากขึ้นในธุรกิจนั้น ๆ

 

AutoML จึงจะเข้ามาเพื่อตอบโจทย์ เนื่องจากมันสามารถที่จะ Train Model ได้เพื่อจะวิเคราะห์ได้เฉพาะเจาะจงมากขึ้น โดยปกติแล้ว จะใช้ Deep learning และ Train บนคอมพิวเตอร์โดย Data Science หรือ ML Engineer เพื่อ train model ขึ้นมา

 

ผู้เขียนหลังจากที่ได้ลองเล่น API นี้และพอจะมีความรู้เรื่องการ Train Model มาอยู่บ้างเล็กน้อย และก่อนที่จะไปลองเล่น AutoML เพื่อจะ Train Model เป็นของตัวเองก็เกิดไอเดียอยากจะทดลองทำดูว่าจะ แม่นยำแค่ไหน โดยโจทย์มีอยู่ว่า

 

ผู้เขียนมองเห็นปัญหาของระบบที่มีระบบชำระเงิน ในการชำระเงินที่เห็นนั้น มีอยู่ 2 แบบคือ


1.            ใช้ Payment Gateway API ซึ่งในการใช้วิธีนี้จะมีความยุ่งยากในการทำ และ เสียค่าใช้จ่ายค่อนข้างสูงในการทำระบบแต่เพื่อแลกกับความสะดวกสบาย วิธีนี้น่าจะคุ้มค่ากว่า เพราะไม่ต้องใช้คนในการตรวจสอบ

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

 

จาก 2 วิธีข้างต้น ผู้เขียนจะพูดปัญหา และ จะประยุกต์ AutoML มาช่วยแก้ปัญหาที่เกิดจากการใช้วิธีการยืนยันการชำระเงิน

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

 

ถ้านำ ML มาช่วยตรวจสอบรูปภาพก่อนก็น่าจะป้องกันข้อผิดพลาด ได้ในระดับหนึ่ง

 

 

ผู้เขียนจะทดลอง Train Model ด้วย AutoML เพื่อตอบโจทย์ในเรื่องนี้กัน

 

ก่อนการใช้งาน google cloud จะให้กรอกข้อมูล บัตรเครดิตและการเตือนการใช้งาน cloud หากว่าเราเปิดใช้งานเกินโค้วต้าที่กำหนด แต่ทาง google cloud มีเครดิตให้ใช้งานฟรี 300$ ทั้งหมด 90วัน ถ้าหมดแล้วจะระงับให้อัตโนมัติ แต่ทางที่ดีควรจะอ่านคำแนะนำก่อนการใช้งาน ลองค้นหาที่เมนู Bill จะมีให้ Health Check  ดูว่าแนะนำอะไรบ้าง ให้ทำตามจนครบแล้ว AutoML API จะยอมให้เปิดใช้งาน จะเป็นตามภาพด้านล่าง



1.          เริ่มใช้งาน AutoML

a.   Vision cloud service

b.    คู่มือ vision

 

2.          สร้าง new data

a.           จากโจทย์เราต้องการ train model ให้รู้จัก slip payment ผู้เขียนจึงจัดเตรียม slip payment ของธนาคารต่างๆ เพื่อทดสอบ โดยใช้ ภาพที่อยู่ตาม internet จะมีบางส่วนที่เบลอ ๆ ก็ไม่เป็นไร เพราะต้องการแค่ template ภาพรวมเท่านั้น

b.          จากภาพที่ได้รวบรวมมาจะมีค่อนข้างน้อย ผู้เขียนจึงใช้เทคนิค Augmentation สร้างภาพจำลอง (หลอก) ขึ้นมาให้ใกล้เคียงกับ slip payment ในกลุ่มเดียวกัน ก็เพียงแค่ แก้ไขข้อความที่อยู่ในภาพ หรือ ตัดภาพบางส่วนออกไป

c.           กลุ่มที่จะทำการทดสอบ จะทำโดยใช้ Slip ของ SCB

 

 

3.          Upload image สำหรับเทรน

a.           ใส่ชื่อให้กับรูปภาพเพื่อเทรน

b.          รูปภาพในแต่ละกลุ่มจะต้องมากกว่า 10 ภาพขึ้นไป เพื่อใช้แบ่ง train , evaluate, test





ทดลองอัพโหลดรูปใน Tab IMPORT จะมีขั้นตอนให้เลือก วิธีอัปโหลด และ เลือกรูปภาพ จากนั้นก็เลือก Folder บน Cloud ว่าจะเก็บไปที่ Folder ไหนหากยังไม่มีก็สร้างขึ้นมา ตรงสร้าง Folder จะต้องเลือก Region ผู้เขียนเลือก Singapore เพราะว่าเลือก Region อื่นแล้วเมื่อเลือก Tab IMAGES จะเริ่มทำการ Import Image ที่ได้ Upload ขึ้นไป แต่จะไม่เจอรูปภาพที่เรา Upload ขึ้นไป  สามารถไปแก้ไขได้ที่ Menu Cloud Storage

 

Error: Cannot move files across regions. Please use a regional bucket in the same location and with same storage class as AutoML. Required Location: us-central1, required location type: Region, required storage class: Standard.

 

ให้ตั้ง Bucket ตามที่ Google แนะนำได้เลย ผู้เขียน เลือก us-central1 และ เลือก region และ เลือก Standard

 

จากนั้นก็กด Continue แล้วรอ



เวลาที่ Upload เสร็จ จะมี. Snack popup ให้กด มันจะพาไปที่ยัง Google Cloud Storage เพื่อดูรายละเอียด สามารถแก้ไข metadata หรือลบข้อมูลก็ได้

 

สร้าง Label ขึ้นเพื่อจัดกลุ่มให้กับ Dataset ที่ Tab IMAGES เมื่อได้ Upload รูปภาพสำหรับทำเป็น Dataset เรียบร้อยแล้ว จากนั้นก็เลือกภาพแต่ละภาพเพื่อ set Label


เรามาเริ่ม Train model กัน หลังจากได้ภาพมาอย่างน้อย 10 ภาพ ตามคำแนะนำ ระบบก็จะแบ่งกลุ่ม Data เพื่อทำการ Train , Validation และ Test ให้อัตโนมัติ แต่ผู้เขียนต้องใช้ถึง 20+ ภาพเพราะว่าระบบจะแจ้งเตือนว่า Dataset ไม่เพียงพอในการ Train ให้ทำการ upload ภาพเพิ่ม




หลังจากที่กด Start Training ในขั้นตอนแรก มีให้เลือกระหว่าง Train model บน cloud host หรือ ทำให้สามารถ Download model ลงมาได้ด้วย ณ ที่นี้ เลือก Cloud hosted ไปก่อน และขั้นตอนที่ 2 จะให้เลือก time ในการ train โดยตรงนี้จะต้องเสีย Budget ในการใช้งาน ผู้เขียนเลือก train ด้วย 8 nodeต่อชั่วโมง โดยระบบ Estimate ว่าประมาณ 1 ชั่วโมง 30 นาที จะเทรนเสร็จ โดยหลังจาก Train เสร็จก็ deploy ให้ใช้งานโดยมี Rest API ใช้งานได้เลย

 

รอจน train เสร็จ สามารถปิดเพจไปก่อนได้เลย หลังจากเสร็จจะมี Email ส่งมาบอก



ตอนนี้เราก็ได้ Model มาแล้วหลังจาก AutoML ส่งเมล์มาบอก ใช้เวลาในการ Train ไปตั้งแต่ 00.30 – 02.50 ประมาณ 2 ชั่วโมงกว่า



หลังจากที่ train เสร็จก็แสดงผล Tab Evaluation และ Test and User ว่าสามารถใช้งานได้แล้ว ใน Tab Evaluation ก็แสดงแบบนี้



Confusion Matrix เพื่ออ่านค่าว่า Model ที่ใช้ดีพอแล้วหรือไม่

 

จากนั้นผู้เขียนก็ลองเอาภาพ สลิปโอนเงินมาทดสอบ แบ่งเป็น 3 ตัวอย่าง

1.          สลิปโอนเงิน

2.          สลิปโอนเงินที่ถูกตัดออกบางส่วน

3.          ภาพที่ไม่ใช่ สลิปโอนเงิน

 

มาดูผลการทดสอบกัน

 

ภาพที่เป็น สลิป SCB ได้ค่าความมั่นใจ 1.0 หรือ 100%



ภาพที่เป็นของ SCB แต่ถูกตัดออกบางส่วน ได้ค่าความมั่นใจ 1.00 หรือ 100%



ภาพที่เป็น สลิป KASIKORN ได้ค่าความมั่นใจ 0.71 หรือ 71%



ภาพที่ไม่ใช่สลิป ได้ค่าความมั่นใจ 0.79 หรือ 79%



นอกจากนี้ ก็สามารถที่จะใช้ Rest API โดยส่ง parameter มาตามที่ระบบแจ้งได้เลย


URL ก็บอกตรงนี้แหละ อยู่ด้านล่าง

 

เท่านี้ก็เป็นอันเสร็จนำไปใช้งานได้เลย

 

สรุปผลการใช้งาน AutoML

จากการทดสอบ อาจจะต้องสร้าง Dataset ให้มากขึ้น หรือ กำหนดค่าที่ยอมรับได้ต่ำสุด เพื่อให้ Model มีประสิทธิภาพมากที่สุดต่อระบบ

 

ผู้เขียนหวังว่าจะเป็นประโยชน์ต่อเพื่อนๆทุกคนนะครับ

 

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


Download File บทความนี้


พูดคุยแลกเปลี่ยนได้ที่ Facebook Fanpage


Banner vector created by jcomp - www.freepik.com

แวะมาทักทายกันได้
donate