TensorFlow Lite สำหรับ Android

TensorFlow Lite ช่วยให้คุณเรียกใช้โมเดลแมชชีนเลิร์นนิง (ML) ในแอป Android ได้ ระบบ TensorFlow Lite มีสภาพแวดล้อมการดำเนินการที่กำหนดไว้ล่วงหน้าและปรับแต่งได้สำหรับการเรียกใช้โมเดลบน Android อย่างรวดเร็วและมีประสิทธิภาพ รวมถึงตัวเลือกในการเร่งฮาร์ดแวร์

โมเดลแมชชีนเลิร์นนิง

TensorFlow Lite ใช้โมเดล TensorFlow ที่แปลงเป็นรูปแบบโมเดลแมชชีนเลิร์นนิงที่มีขนาดเล็กกว่า พกพาสะดวก และมีประสิทธิภาพมากกว่า คุณจะใช้โมเดลที่สร้างไว้ล่วงหน้ากับ TensorFlow Lite ใน Android หรือสร้างโมเดล TensorFlow ของคุณเองแล้วแปลงเป็นรูปแบบ TensorFlow Lite ก็ได้

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

เรียกใช้โมเดลใน Android

โมเดล TensorFlow Lite ที่ทำงานภายในแอป Android จะรับข้อมูล ประมวลผลข้อมูล และสร้างการคาดการณ์ตามตรรกะของโมเดล โมเดล TensorFlow Lite ต้องใช้สภาพแวดล้อมรันไทม์พิเศษเพื่อเรียกใช้งาน และข้อมูลที่ส่งผ่านไปยังโมเดลต้องอยู่ในรูปแบบข้อมูลเฉพาะที่เรียกว่า tensor เมื่อโมเดลประมวลผลข้อมูลที่เรียกว่าการเรียกใช้การอนุมาน โมเดลจะสร้างผลการคาดการณ์เป็น Tensor ใหม่และส่งไปยังแอป Android เพื่อดำเนินการต่างๆ เช่น แสดงผลลัพธ์ให้แก่ผู้ใช้หรือดำเนินการตามตรรกะทางธุรกิจเพิ่มเติม

โฟลว์การดำเนินการที่มีฟังก์ชันการทำงานสำหรับโมเดล TensorFlow Lite ในแอป Android

รูปที่ 1 โฟลว์การดำเนินการที่มีฟังก์ชันการทำงานสำหรับโมเดล TensorFlow Lite ในแอป Android

ในระดับการออกแบบฟังก์ชัน แอป Android ของคุณต้องมีองค์ประกอบต่อไปนี้เพื่อเรียกใช้โมเดล TensorFlow Lite

  • สภาพแวดล้อมรันไทม์ของ TensorFlow Lite สำหรับการเรียกใช้โมเดล
  • เครื่องจัดการอินพุตโมเดลเพื่อเปลี่ยนรูปแบบข้อมูลเป็น tensors
  • ตัวแฮนเดิลเอาต์พุตโมเดลเพื่อรับ Tensor ผลลัพธ์และตีความเป็นผลลัพธ์การคาดการณ์

ส่วนต่อไปนี้จะอธิบายวิธีที่ไลบรารีและเครื่องมือ TensorFlow Lite ให้องค์ประกอบการทำงานเหล่านี้

สร้างแอปด้วย TensorFlow Lite

ส่วนนี้จะอธิบายเส้นทางที่แนะนำและพบบ่อยที่สุดในการติดตั้งใช้งาน TensorFlow Lite ในแอป Android คุณควรให้ความสำคัญกับส่วนสภาพแวดล้อมรันไทม์และส่วนไลบรารีการพัฒนามากที่สุด หากคุณพัฒนารูปแบบที่กำหนดเองแล้ว อย่าลืมดูส่วนเส้นทางการพัฒนาขั้นสูง

ตัวเลือกสภาพแวดล้อมรันไทม์

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

โดยทั่วไป คุณควรใช้สภาพแวดล้อมรันไทม์ที่บริการ Google Play มีให้ เนื่องจากสภาพแวดล้อมดังกล่าวมีประสิทธิภาพมากกว่าสภาพแวดล้อมมาตรฐานเนื่องจากสภาพแวดล้อมนั้นจะโหลดแบบไดนามิก ทำให้แอปมีขนาดเล็กลง นอกจากนี้บริการ Google Play ยังใช้รันไทม์ของ TensorFlow Lite รุ่นล่าสุดที่เสถียรโดยอัตโนมัติเพื่อให้คุณได้ใช้ฟีเจอร์เพิ่มเติมและประสิทธิภาพที่ดีขึ้นเรื่อยๆ หากคุณนำเสนอแอปในอุปกรณ์ที่ไม่มีบริการ Google Play หรือจำเป็นต้องจัดการสภาพแวดล้อมรันไทม์ของ ML อย่างใกล้ชิด คุณควรใช้รันไทม์ของ TensorFlow Lite มาตรฐาน ตัวเลือกนี้จะรวมโค้ดเพิ่มเติมไว้ในแอป ซึ่งช่วยให้คุณควบคุมรันไทม์ของ ML ในแอปได้มากขึ้นโดยมีต้นทุนในการเพิ่มขนาดการดาวน์โหลดของแอป

คุณเข้าถึงสภาพแวดล้อมรันไทม์เหล่านี้ในแอป Android ได้โดยการเพิ่มไลบรารีการพัฒนา TensorFlow Lite ลงในสภาพแวดล้อมการพัฒนาแอป โปรดดูข้อมูลเกี่ยวกับวิธีใช้สภาพแวดล้อมรันไทม์มาตรฐานในแอปในหัวข้อถัดไป

ห้องสมุด

คุณเข้าถึง Debuger API ได้โดยใช้บริการ Google Play คุณใช้ไลบรารี TensorFlow Lite และไลบรารีการสนับสนุนในแอป Android ได้ สำหรับรายละเอียดการเขียนโปรแกรมเกี่ยวกับการใช้ไลบรารี TensorFlow Lite และสภาพแวดล้อมรันไทม์ โปรดดูเครื่องมือสำหรับการพัฒนาสำหรับ Android

รับโมเดล

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

จัดการข้อมูลอินพุต

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

เรียกใช้การอนุมาน

การประมวลผลข้อมูลผ่านโมเดลเพื่อสร้างผลการคาดการณ์เรียกว่าการเรียกใช้การอนุมาน การเรียกใช้การอนุมานในแอป Android ต้องใช้สภาพแวดล้อมรันไทม์ TensorFlow Lite, model และข้อมูลอินพุต

ความเร็วที่โมเดลสามารถสร้างการอนุมานในอุปกรณ์หนึ่งๆ จะขึ้นอยู่กับขนาดของข้อมูลที่ประมวลผล ความซับซ้อนของโมเดล และทรัพยากรในการประมวลผลที่ใช้ได้ เช่น หน่วยความจำและ CPU หรือตัวประมวลผลพิเศษที่เรียกว่า Accelerator โมเดลแมชชีนเลิร์นนิงทำงานได้เร็วขึ้นบนตัวประมวลผลพิเศษเหล่านี้ เช่น หน่วยประมวลผลกราฟิก (GPU) และหน่วยประมวลผล tensor (TPU) โดยใช้ไดรเวอร์ฮาร์ดแวร์ของ TensorFlow Lite ที่เรียกว่าการมอบสิทธิ์ ดูข้อมูลเพิ่มเติมเกี่ยวกับผู้รับมอบสิทธิ์และการเร่งฮาร์ดแวร์สำหรับการประมวลผลโมเดลได้ที่ภาพรวมการเร่งฮาร์ดแวร์

จัดการผลลัพธ์เอาต์พุต

โมเดลจะสร้างผลการคาดการณ์เป็น Tensor ซึ่งแอป Android จะต้องจัดการโดยการดำเนินการหรือแสดงผลลัพธ์ให้แก่ผู้ใช้ เอาต์พุตโมเดลอาจง่ายๆ ด้วยตัวเลขที่ตรงกับผลลัพธ์รายการเดียว (0 = สุนัข, 1 = แมว, 2 = นก) สำหรับการจัดประเภทรูปภาพ ไปจนถึงผลลัพธ์ที่ซับซ้อนขึ้นมาก เช่น กรอบล้อมรอบหลายกรอบสำหรับออบเจ็กต์ที่จัดประเภทหลายรายการในรูป โดยใช้คะแนนความเชื่อมั่นในการคาดคะเนระหว่าง 0 ถึง 1

เส้นทางการพัฒนาขั้นสูง

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

สภาพแวดล้อมรันไทม์ขั้นสูง

นอกจากรันไทม์มาตรฐานและสภาพแวดล้อมรันไทม์ของบริการ Google Play สำหรับ TensorFlow Lite แล้ว ยังมีสภาพแวดล้อมรันไทม์เพิ่มเติมที่คุณใช้กับแอป Android ได้ด้วย สิ่งที่น่าจะใช้มากที่สุดสำหรับสภาพแวดล้อมเหล่านี้คือหากคุณมีโมเดลแมชชีนเลิร์นนิงที่ใช้การดำเนินการ ML ซึ่งสภาพแวดล้อมรันไทม์มาตรฐานสำหรับ TensorFlow Lite ไม่รองรับ

  • รันไทม์ Flex สำหรับ TensorFlow Lite
  • รันไทม์ของ TensorFlow Lite ที่สร้างแบบกำหนดเอง

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

C และ C++ API

นอกจากนี้ TensorFlow Lite ยังมี API สำหรับการเรียกใช้โมเดลโดยใช้ C และ C++ หากแอปใช้ Android NDK คุณควรลองใช้ API นี้ คุณอาจต้องลองใช้ API นี้หากต้องการแชร์โค้ดระหว่างแพลตฟอร์มต่างๆ ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกการพัฒนานี้ได้ในหน้าเครื่องมือสำหรับการพัฒนา

การดำเนินการของโมเดลบนเซิร์ฟเวอร์

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

Google Cloud มีชุดบริการเต็มรูปแบบสำหรับการเรียกใช้โมเดลแมชชีนเลิร์นนิงของ TensorFlow ดูข้อมูลเพิ่มเติมได้ที่หน้า AI และผลิตภัณฑ์แมชชีนเลิร์นนิงของ Google Cloud

การพัฒนาและเพิ่มประสิทธิภาพโมเดลที่กำหนดเอง

เส้นทางการพัฒนาขั้นสูงขึ้นมีแนวโน้มที่จะรวมการพัฒนาโมเดลแมชชีนเลิร์นนิงที่กำหนดเอง และการเพิ่มประสิทธิภาพโมเดลเหล่านั้นสำหรับการใช้งานบนอุปกรณ์ Android หากคุณวางแผนที่จะสร้างโมเดลที่กำหนดเอง โปรดพิจารณาใช้เทคนิคการวัดปริมาณกับโมเดลเพื่อลดต้นทุนด้านหน่วยความจำและการประมวลผล ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีสร้างโมเดลประสิทธิภาพสูงเพื่อใช้งานกับ TensorFlow Lite ได้ที่แนวทางปฏิบัติแนะนำด้านประสิทธิภาพในส่วนโมเดล