1. บทนำ
ความก้าวหน้าล่าสุดของแมชชีนเลิร์นนิงทำให้คอมพิวเตอร์สามารถจดจำวัตถุในรูปภาพได้โดยง่าย ใน Codelab นี้ เราจะแนะนำคุณตลอดเส้นทางตั้งแต่ต้นจนจบโดยสร้างโมเดลการจัดประเภทรูปภาพที่จดจำวัตถุประเภทต่างๆ ได้ จากนั้นจึงทำให้โมเดลใช้งานได้ในแอป Android และ iOS ML Kit และ AutoML ช่วยให้คุณสร้างและทำให้โมเดลใช้งานได้ในวงกว้างโดยไม่ต้องมีความเชี่ยวชาญด้านแมชชีนเลิร์นนิง
ML Kit คืออะไร
ML Kit เป็น SDK สำหรับอุปกรณ์เคลื่อนที่ที่นำความเชี่ยวชาญด้านแมชชีนเลิร์นนิงของ Google มาสู่แอป Android และ iOS ในแพ็กเกจที่ทรงพลังแต่ใช้งานง่าย ไม่ว่าคุณจะเป็นมือใหม่หรือมีประสบการณ์ด้านแมชชีนเลิร์นนิง ก็ติดตั้งใช้งานฟังก์ชันที่ต้องการได้ง่ายๆ ด้วยโค้ดเพียงไม่กี่บรรทัด มี API หลายรายการที่สามารถจดจำข้อความ ใบหน้า ฯลฯ ให้คุณได้ใช้งานได้ทันที อย่างไรก็ตาม หากจำเป็นต้องรู้ออบเจ็กต์ที่ API ไม่รองรับ เช่น การจดจำดอกไม้ประเภทต่างๆ จากรูปภาพ คุณก็ต้องฝึกโมเดลของคุณเอง นี่คือสิ่งที่ AutoML สามารถช่วยคุณได้
AutoML คืออะไร
Cloud AutoML คือชุดผลิตภัณฑ์แมชชีนเลิร์นนิงที่ช่วยให้นักพัฒนาซอฟต์แวร์ที่มีความเชี่ยวชาญด้านแมชชีนเลิร์นนิงแบบจำกัดสามารถฝึกโมเดลคุณภาพสูงที่ตรงกับความต้องการทางธุรกิจของตนโดยเฉพาะ โดยการใช้ประโยชน์จากการเรียนรู้การโอนที่ทันสมัยของ Google และเทคโนโลยี Neural Architecture Search
ใน Codelab นี้ เราจะใช้ AutoML Vision Edge ใน ML Kit เพื่อฝึกโมเดลการจัดประเภทดอกไม้ โมเดลจะได้รับการฝึกในระบบคลาวด์ แต่จากนั้นแอปจะรวมหรือดาวน์โหลดโมเดลดังกล่าวเพื่อเรียกใช้การอนุมานในอุปกรณ์โดยสมบูรณ์
สิ่งที่คุณจะได้เรียนรู้
- วิธีฝึกโมเดลการจัดประเภทรูปภาพโดยใช้ AutoML Vision Edge ใน ML Kit
- วิธีเรียกใช้ในแอป Android หรือ iOS ตัวอย่างโดยใช้ ML Kit SDK
สิ่งที่ต้องมี
สำหรับแอป Android
- Android Studio เวอร์ชันล่าสุด (v3.4+)
- โปรแกรมจำลอง Android Studio ที่ใช้ Play Store หรืออุปกรณ์ Android จริง (v5.0 ขึ้นไป)
- ความรู้พื้นฐานเกี่ยวกับการพัฒนา Android ใน Kotlin
สำหรับแอป iOS
- XCode เวอร์ชันล่าสุด (v10.2+)
- iOS Simulator หรืออุปกรณ์ iOS ทางกายภาพ (v9.0+)
- CocoaPods
- ความรู้พื้นฐานเกี่ยวกับการพัฒนา iOS ใน Swift
2. ตั้งค่า
ดาวน์โหลดโค้ดและชุดข้อมูลการฝึก
ดาวน์โหลดไฟล์เก็บถาวร Zip ที่มีซอร์สโค้ดสำหรับ Codelab นี้และชุดข้อมูลการฝึก แตกไฟล์ที่เก็บถาวรในเครื่องของคุณ
สร้างโปรเจ็กต์คอนโซล Firebase
- ไปที่คอนโซล Firebase
- เลือกสร้างโปรเจ็กต์ใหม่ แล้วตั้งชื่อโปรเจ็กต์ของคุณว่า "ML Kit Codelab"
ตั้งค่าแอป Android
- เพิ่มแอป Android ของเราลงในโปรเจ็กต์ Firebase ชื่อแพ็กเกจ Android:
com.google.firebase.codelab.mlkit.automl
- ดาวน์โหลดไฟล์กำหนดค่า
google-services.json
แล้วใส่ในแอป Android ที่android/mlkit-automl/app/google-services.json
ตั้งค่าแอป iOS
- เพิ่มแอป iOS ของเราลงในโปรเจ็กต์ Firebase รหัสชุด iOS:
com.google.firebase.codelab.mlkit.automl
- ดาวน์โหลดไฟล์กำหนดค่า
GoogleService-Info.plist
แล้วทำตามวิธีการเพื่อใส่ไว้ในแอป iOS ที่ios/mlkit-automl/GoogleService-Info.plist
3. เตรียมชุดข้อมูลการฝึก
หากต้องการฝึกโมเดลให้จดจำวัตถุประเภทต่างๆ คุณต้องเตรียมชุดรูปภาพและติดป้ายกำกับแต่ละรายการ เราได้สร้างที่เก็บถาวรของรูปภาพดอกไม้ที่ได้รับอนุญาตจากครีเอทีฟคอมมอนส์เพื่อให้คุณใช้ใน Codelab นี้
ชุดข้อมูลได้รับการจัดแพ็กเกจไฟล์ ZIP ชื่อ flower_photos.zip
ที่อยู่ในชุดไฟล์ Zip ที่คุณดาวน์โหลดในขั้นตอนก่อนหน้า
สำรวจชุดข้อมูล
หากคุณแตกไฟล์ flower_photos.zip
คุณจะเห็นว่าชุดข้อมูลมีรูปภาพดอกไม้ 5 ประเภท ได้แก่ ดอกแดนดิไลออน เดซี่ ทิวลิป ทานตะวัน และกุหลาบ ซึ่งจัดระเบียบไว้เป็นโฟลเดอร์ที่ตั้งชื่อตามดอกไม้ดังกล่าว วิธีนี้เป็นวิธีที่มีประโยชน์ในการสร้างชุดข้อมูลการฝึกเพื่อฟีดไปยัง AutoML และฝึกโมเดลการจัดประเภทรูปภาพ
มีรูปภาพ 200 รูปสำหรับดอกไม้แต่ละประเภทในชุดข้อมูลการฝึกนี้ คุณต้องมีรูปภาพอย่างน้อย 10 รูปต่อคลาสเพื่อฝึกโมเดล อย่างไรก็ตาม อิมเมจการฝึกที่มากขึ้นมักจะนำไปสู่โมเดลที่ดีขึ้น
4. ฝึกการใช้งานโมเดล
อัปโหลดชุดข้อมูลการฝึก
- เปิดโปรเจ็กต์ที่คุณเพิ่งสร้างขึ้นจากคอนโซล Firebase
- เลือก ML Kit > AutoML
- คุณอาจเห็นหน้าจอต้อนรับ เลือกเริ่มต้นใช้งานหากทำได้
- หลังจากความคืบหน้าการตั้งค่าเสร็จสิ้น ให้เลือกเพิ่มชุดข้อมูลและตั้งชื่อว่า "ดอกไม้"
- ในวัตถุประสงค์ของโมเดล ให้เลือกการจัดประเภทแบบป้ายกำกับเดียว เนื่องจากข้อมูลการฝึกมีป้ายกำกับเพียง 1 ป้ายต่อรูปภาพ
- เลือกสร้าง
- อัปโหลดไฟล์
flower_photos.zip
ที่คุณดาวน์โหลดในขั้นตอนก่อนหน้าเพื่อนำเข้าชุดข้อมูลการฝึกดอกไม้ - รอสักครู่เพื่อให้งานการนำเข้าเสร็จสิ้น
- ตอนนี้ คุณจึงยืนยันได้ว่ามีการนำเข้าชุดข้อมูลอย่างถูกต้อง
- เนื่องจากอิมเมจทั้งหมดในชุดข้อมูลการฝึกได้รับการติดป้ายกำกับแล้ว คุณจึงดำเนินการฝึกโมเดลได้
ฝึกโมเดลการจัดประเภทรูปภาพ
เนื่องจากโมเดลของเราจะทำงานบนอุปกรณ์เคลื่อนที่ที่มีพลังในการประมวลผลและพื้นที่เก็บข้อมูลที่จำกัด เราจึงต้องคำนึงถึงนอกจากความแม่นยำของโมเดลแล้ว และขนาดและความเร็วของโมเดลด้วย ความถูกต้องแม่นยำของโมเดล เวลาในการตอบสนอง (กล่าวคือ ระยะเวลาที่ใช้ในการแยกประเภทรูปภาพ) และขนาดโมเดลย่อมมีข้อดีข้อเสียเสมอ โดยทั่วไปแล้ว โมเดลที่มีความแม่นยำสูงกว่าจะมีขนาดใหญ่กว่าและจะใช้เวลาในการจัดประเภทรูปภาพนานกว่า
AutoML มีตัวเลือกมากมายให้คุณเลือกใช้เพื่อเพิ่มประสิทธิภาพเพื่อความแม่นยำ เพิ่มประสิทธิภาพเพื่อเวลาในการตอบสนองและขนาดโมเดล หรือเพื่อสร้างความสมดุลระหว่างตัวเลือกทั้งสอง นอกจากนี้ คุณยังเลือกระยะเวลาอนุญาตให้โมเดลฝึกใช้งานได้ด้วย ชุดข้อมูลขนาดใหญ่กว่าต้องฝึกนานกว่า
ต่อไปนี้คือขั้นตอนหากคุณต้องการฝึกโมเดลด้วยตนเอง
- เลือกโมเดลรถไฟ
- เลือกตัวเลือกวัตถุประสงค์ทั่วไปและเวลาการฝึก 1 ชั่วโมงประมวลผล
- โปรดรอ (หลายชั่วโมง) เพื่อให้งานการฝึกเสร็จสิ้น
- หลังจากงานการฝึกเสร็จสิ้น คุณจะเห็นเมตริกการประเมินเกี่ยวกับประสิทธิภาพของโมเดลที่ได้รับการฝึก
5. ใช้โมเดลในแอปบนอุปกรณ์เคลื่อนที่
การเตรียมพร้อม
- Codelab นี้มีตัวอย่างแอป Android และ iOS ที่สาธิตวิธีใช้โมเดลการจัดประเภทรูปภาพที่เราฝึกให้ก่อนหน้านี้ในแอปบนอุปกรณ์เคลื่อนที่ โดยทั้ง 2 แอปมีฟีเจอร์ที่คล้ายกัน คุณเลือกแพลตฟอร์มที่คุณคุ้นเคยมากกว่าได้
- ก่อนดำเนินการต่อ โปรดตรวจสอบว่าคุณได้ดาวน์โหลดแอปตัวอย่างและกำหนดค่าแอปไว้ในขั้นตอนที่ 2 แล้ว
- นอกจากนี้ โปรดตรวจสอบว่าได้ตั้งค่าสภาพแวดล้อมในเครื่องของคุณให้สามารถสร้างแอปสำหรับแพลตฟอร์มที่คุณเลือก (Android/iOS)
ดาวน์โหลดโมเดลการจัดประเภทรูปภาพ
- หากคุณได้ฝึกโมเดลในขั้นตอนก่อนหน้าแล้ว ให้เลือกดาวน์โหลดเพื่อรับโมเดล
- หากไม่ได้ฝึกโมเดลหรืองานการฝึกยังไม่เสร็จสิ้น คุณจะใช้โมเดลที่รวมอยู่ในแอปตัวอย่างได้
เพิ่มโมเดลในแอปตัวอย่าง
คุณเพียงแค่ต้องเพิ่มโมเดลในแอปตัวอย่างเท่านั้น และแอปดังกล่าวจะใช้งานได้ทันที สำหรับคู่มือฉบับเต็มเกี่ยวกับวิธีผสานรวม ML Kit AutoML เข้ากับแอป โปรดดูเอกสารประกอบของเรา ( Android, iOS) โค้ดที่โต้ตอบกับ ML Kit SDK จะอยู่ในไฟล์ ImageClassifier.kt
และ ImageClassifier.swift
ตามลำดับ ดังนั้นคุณจึงเริ่มจากตรงนี้เพื่อดูว่าแอปทำงานอย่างไร
การทำให้โมเดลใช้งานได้มี 2 ตัวเลือกในการทำให้โมเดลใช้งานได้ ได้แก่ ในเครื่องและระยะไกล
- โมเดลในเครื่องจะใช้เพื่อรวมโมเดลการจัดประเภทรูปภาพในไบนารีของแอปเป็นหลัก แม้ว่าจะมีโมเดลที่บันทึกในพื้นที่เก็บข้อมูลในเครื่องด้วยก็ตาม ด้วยการรวมกลุ่มอีเมล โมเดลจะพร้อมใช้งานทันทีสำหรับผู้ใช้หลังจากดาวน์โหลดแอปของคุณจาก App Store / Play Store และโมเดลจะทำงานได้โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต
- โมเดลระยะไกลหมายความว่าโมเดลนี้โฮสต์อยู่บน Firebase และจะดาวน์โหลดลงในอุปกรณ์ของผู้ใช้เมื่อจำเป็นต้องใช้เป็นครั้งแรกเท่านั้น หลังจากนั้น โมเดลนี้จะทำงานแบบออฟไลน์ด้วย
แอป Android
- เปิด Android Studio
- นําเข้าแอป Android ในส่วน
android/mlkit-automl/
- (ไม่บังคับ) แยกโมเดลที่คุณดาวน์โหลดและคัดลอกเนื้อหาของโมเดลไปทับโมเดลที่รวมอยู่ในแอปตัวอย่าง
- จากนั้นคลิก "เรียกใช้" () ในแถบเครื่องมือ Android Studio และตรวจสอบว่าจดจำดอกไม้ประเภทต่างๆ ได้
แอป iOS
- เปิดเทอร์มินัลแล้วไปที่โฟลเดอร์
ios/mlkit-automl/
- เรียกใช้
pod install
เพื่อดาวน์โหลดทรัพยากร Dependency ผ่าน CocoaPods - เรียกใช้
open MLVisionExample.xcworkspace/
เพื่อเปิดพื้นที่ทำงานของโปรเจ็กต์ใน Xcode - (ไม่บังคับ) แยกโมเดลที่คุณดาวน์โหลดและคัดลอกเนื้อหาของโมเดลไปทับโมเดลที่รวมอยู่ในแอปตัวอย่างในส่วน
ios/ml-automl/Resources/automl/
- จากนั้นคลิก Run ( ) ในแถบเครื่องมือ Xcode และตรวจสอบว่ารู้จักดอกไม้ชนิดต่างๆ ได้หรือไม่
6. (ไม่บังคับ) ใช้โมเดลระยะไกล
โมเดลระยะไกลของ ML Kit ช่วยให้คุณไม่รวมโมเดล Tensorflow Lite ในไบนารีของแอป แต่ดาวน์โหลดโมเดลตามคำขอจาก Firebase ได้เมื่อจำเป็น โมเดลระยะไกลมีข้อดีเหนือกว่าโมเดลในเครื่องหลายประการ ดังนี้
- ไบนารีของแอปขนาดเล็กลง
- อัปเดตโมเดลได้โดยไม่ต้องอัปเดตแอป
- การทดสอบ A/B กับโมเดลหลายเวอร์ชัน
ในขั้นตอนนี้ เราจะเผยแพร่โมเดลระยะไกลและใช้ในแอปตัวอย่าง โปรดตรวจสอบว่าคุณฝึกโมเดลในขั้นตอนที่ 4 ของ Codelab นี้แล้ว
เผยแพร่โมเดล
- ไปที่คอนโซล Firebase
- เลือก "ML Kit AutoML Codelab" ที่คุณสร้างไว้ก่อนหน้านี้
- เลือก ML Kit > AutoML
- เลือก "ดอกไม้" ที่คุณสร้างไว้ก่อนหน้านี้
- ตรวจสอบว่างานการฝึกเสร็จสิ้น แล้วเลือกโมเดล
- เลือกเผยแพร่และตั้งชื่อว่า "mlkit_flowers"
จดจำดอกไม้ด้วยโมเดลรีโมต
แอปตัวอย่างได้รับการกำหนดค่าให้ใช้โมเดลระยะไกล หากมี หลังจากเผยแพร่โมเดลระยะไกลแล้ว คุณเพียงต้องเรียกใช้แอปอีกครั้งเพื่อทริกเกอร์การดาวน์โหลดโมเดล คุณสามารถยืนยันว่าแอปกำลังใช้โมเดลระยะไกลโดยดูที่ "แหล่งที่มา" ในส่วนท้ายของหน้าจอแอป โปรดดูที่ "การแก้ปัญหา" ด้านล่าง หากใช้งานไม่ได้
การแก้ปัญหา
หากแอปตัวอย่างยังคงใช้โมเดลในเครื่อง โปรดตรวจสอบว่าได้ตั้งชื่อโมเดลระยะไกลในโค้ดอย่างถูกต้อง
แอป Android
- ไปที่
ImageClassifier.kt
แล้วค้นหาบล็อกนี้
val remoteModel = FirebaseRemoteModel.Builder(REMOTE_MODEL_NAME).build()
- ตรวจสอบว่าชื่อโมเดลที่ตั้งไว้ในโค้ดตรงกับชื่อโมเดลที่คุณเผยแพร่ก่อนหน้านี้ผ่านคอนโซล Firebase
- จากนั้นคลิกเรียกใช้ ( ) ในแถบเครื่องมือ Android Studio เพื่อเรียกใช้แอปอีกครั้ง
แอป iOS
- ไปที่
ImageClassifier.swift
แล้วพบการบล็อกนี้
return RemoteModel(
name: Constant.remoteAutoMLModelName,
allowsModelUpdates: true,
initialConditions: initialConditions,
updateConditions: updateConditions
)
- ยืนยันว่าชื่อโมเดลที่ตั้งไว้ในโค้ดตรงกับชื่อโมเดลที่คุณเผยแพร่ก่อนหน้านี้ผ่านคอนโซล Firebase
- จากนั้นคลิก Run ( ) ในแถบเครื่องมือ Xcode เพื่อเรียกใช้แอปอีกครั้ง
7. ยินดีด้วย
คุณได้ดำเนินการตั้งแต่ต้นจนจบของการฝึกโมเดลการจัดประเภทรูปภาพด้วยข้อมูลการฝึกของคุณเองโดยใช้ AutoML แล้วนำโมเดลดังกล่าวไปใช้ในแอปบนอุปกรณ์เคลื่อนที่โดยใช้ ML Kit
โปรดดูเอกสารประกอบเพื่อดูวิธีผสานรวม AutoML Vision Edge ใน ML Kit กับแอปของคุณเอง
คุณยังสามารถลองใช้แอปตัวอย่าง ML Kit เพื่อดูฟีเจอร์อื่นๆ ของ Firebase ML Kit
ตัวอย่าง Android
ตัวอย่างสำหรับ iOS