แอป Not Hotdog จากซีรีส์ Silicon Valley ถูกพัฒนาขึ้นจริงด้วย TensorFlow

ในซีรีส์ Silicon Valley (ซีรีส์เกี่ยวกับเทคสตาร์ทอัป ใน Silicon Valley) ซีซัน 4 ตอน 4 ทีมได้พัฒนาแอปที่สามารถบอกได้ว่าภาพที่ถ่ายมาเป็นฮ๊อตดอกหรือไม่ ภายหลังที่ออกอากาศ ทีมสร้าง Silicon Valley ได้พัฒนาแอปนี้ขึ้นจริง ๆ มีให้ดาวน์โหลดทั้ง iOS และ Android และ Tim Anglade ผู้พัฒนาแอปนี้ได้เขียนบล๊อกอธิบายแนวทางการพัฒนาแอปนี้ ซึ่งได้ทดลองให้เครื่องมือหลาย ๆ อย่างในการทำ machine learning

แอป Not Hotdog พัฒนาขึ้นโดย Tim Anglade เพียงคนเดียว ทำการ train บน laptop 1 เครื่องที่ต่อ GPU ภายนอก และใช้ข้อมูลที่ใช้มนุษย์คัดเลือกให้

แรกเริ่ม Not Hotdog ถูกพัฒนาโดยใช้ Google Cloud’s Vision API แต่ถูกเปลี่ยนไปใช้เครื่องมืออื่นเพราะ

  • Google Cloud’s Vision API ถูก train ให้รู้จำ (recognize) สิ่งของต่าง ๆ หลายชนิด แต่ไม่ได้ถูก train ให้เด่นในเรื่องใดเรื่องหนึ่งโดยเฉพาะ ทำให้ recognize Hotdog ได้ไม่ดีนัก
  • Google Cloud’s Vision API ทำงานบน cloud ซึ่งใช้เวลาในการรับส่งข้อมูล ไม่สามารถทำงานได้แบบ offline และอาจมีปัญหาด้านความเป็นส่วนตัว (privacy)
  • ในการใช้งานจริงจะต้องเสียค่าบริการ Google Cloud

Not Hotdog จึงถูกเปลี่ยนจากการใช้ cloud computing เป็น edge computing คือการ train บนเครื่องผู้พัฒนา แล้วส่งผลการ train ไปยังเครื่องของผู้ใช้ และใช้ neural network คำนวณบนเครื่องผู้ใช้งาน

ผู้พัฒนาจึงเปลี่ยนมาใช้ TensorFlow ซึ่งสามารถ train จากภายนอกแล้วนำผลไป run บน mobile device ได้ นอกจากนี้ TensorFlow ยังมีสถาปัตยกรรมแบบ Inception ซึ่งถูก train มาด้วยข้อมูลชุด ImageNet แล้ว ทำให้ recognize สิ่งของทั่วไปได้ดี และสามารถนำมา train เพิ่มเติมเฉพาะสิ่งของบางประเภทได้ ทำให้ไม่ต้อง train ทั้ง neural network ตั้งแต่ต้นด้วยข้อมูลจำนวนมาก ซึ่งต้องใช้ทรัพยากรมหาศาล แต่สุดท้ายผู้พัฒนาก็เปลี่ยนไปใช้เครื่องมืออื่นเพราะ การใช้เทคนิคนี้ทำให้เกิดความไม่สมดุลของข้อมูล คือ มีการ train สิ่งของอย่างอื่นเป็นจำนวนมาก (สมมติว่า 97 รูป) แต่ train ฮ๊อตดอกไม่มาก (3 รูป) ถึงแม้จะ recognize ฮ๊อตดอกผิดหมดเลย (0%) แต่ recognize สิ่งของอื่นถูกหมด (100%) ก็ให้ผลความแม่นยำโดยรวมสูงอยู่ดี (97%)

สุดท้ายผู้พัฒนาจึงเปลี่ยนไปใช้ Keras ซึ่งเป็น library ที่เรียกใช้งาน TensorFlow อีกที แต่มีเครื่องมือที่สามารถปรับน้ำหนักข้อมูลได้ ซึ่งสามารถแก้ไขปัญหาความไม่สมดุลของข้อมูลได้

นอกจากนี้ผู้พัฒนายังได้ลองใช้เครื่องมืออื่น ๆ เช่น VGG แต่ VGG ใช้หน่วยความจำมากในการ run ซึ่งไม่สามารถทำงานบน mobile device ได้

ภาพที่นำมาใช้ train neural network นั้นได้คำนึงถึงประเด็นหลาย ๆ อย่าง เช่น ความหลากหลายของคุณลักษณะของภาพ ไม่ว่าจะเป็นขนาด พื้นหลัง สภาพแสง มุมมอง การจัดองค์ประกอบของภาพ มีการเลือกภาพในลักษณะที่คาดว่าผู้ใช้งานจะนำมาใช้ เช่น ภาพอาหารอื่น ๆ อาหารที่ใกล้เคียงอย่างแซนด์วิช เบอร์เกอร์ หรือแม้กระทั่งภาพถ่ายฮ๊อตดอกที่ถ่ายจากจอแสดงภาพ (ในกรณีที่ผู้ใช้ไม่มีฮ๊อตดอกอยู่จริง แล้วค้นหาภาพฮ๊อตดอกจากอินเทอร์เน็ต) โดยได้ภาพมา train ทั้งหมด 150,000 รูป เป็นฮ๊อตดอก 3,000 รูป

การ train ทำบนเครื่อง MacBook Pro 2015 ต่อเชื่อมกับ Nvidia GTX 980 Ti ใช้เวลา train ทั้งหมด 80 ชั่วโมง

นอกจากประเด็นในด้านเทคนิคที่เกี่ยวกับ machine learning แล้ว ผู้พัฒนายังแนะนำเรื่องอื่น ๆ ด้วย

  • ไม่มี AI ไหนที่สมบูรณ์แบบ ดังนั้นการออกแบบประสบการณ์การใช้งาน (UX – User Experience) จึงมีความจำเป็น การออกแบบ UX ที่ดีที่ทำงานร่วมกับ AI ที่ไม่ได้เก่งนัก ก็ยังให้ผลลัพธ์ที่ผู้ใช้ยอมรับได้
  • การเลือกเครื่องมือพัฒนาที่เหมาะสม จะทำให้พัฒนาได้เร็ว ปรับปรุงได้ง่าย (เช่น การ train บน cloud มีกำลังประมวลผลเยอะ แต่ train บนเครื่องตัวเองสามารถเตรียมไฟล์ แก้ไขไฟล์สำหรับ train ได้ง่ายกว่า)
  • ควรคำนึงถึงความหลากหลายด้านวัฒนธรรมด้วย ตัวอย่างเช่น ฮ๊อตดอก ก็ยังมีสไตล์ฝรั่งเศส เอเชีย ถ้าไม่ระมัดระวังก็อาจจะพลาดในข้อมูลเหล่านี้ (เช่น กรณี image recognition วิเคราะห์ภาพคนดำว่าเป็นกอริลล่า)

ใครอยากลองก็ดาวน์โหลดได้ทั้ง iOS และ Android ส่วนรายละเอียดการพัฒนาสามารถอ่านได้ในบล๊อกของ Tim Anglade ผู้พัฒนาแอปนี้

ถึงแม้แอปนี้จะทำขึ้นมาเพื่อความสนุกสนาน แต่นิทานเรื่องนี้ก็สอนให้รู้ว่า เทคโนโลยีและเครื่องมือในการพัฒนา AI / machine learning พัฒนาไปเยอะมาก บุคคลทั่วไปที่ไม่ใช่ผู้เชี่ยวชาญเฉพาะทางก็สามารถศึกษาและใช้งานได้ และสามารถทำได้โดยไม่ต้องใช้ทรัพยากรมาก

ภาพ Tim Anglade’s Medium
ที่มา engadget และ Tim Anglade’s Medium

LINE it!