1. บทนำ
ความก้าวหน้าล่าสุดในแมชชีนเลิร์นนิงทำให้คอมพิวเตอร์จดจำออบเจ็กต์ในรูปภาพได้ง่ายขึ้น ในโค้ดแล็บนี้ เราจะพาคุณไปดูเส้นทางแบบต้นทางถึงปลายทางในการสร้างโมเดลการจัดประเภทรูปภาพที่สามารถจดจำออบเจ็กต์ประเภทต่างๆ จากนั้นจึงนำโมเดลไปใช้งานในแอป Android และ iOS โดย ML Kit และ AutoML จะช่วยให้คุณสร้างและนำโมเดลไปใช้งานได้ในวงกว้างโดยไม่ต้องมีความเชี่ยวชาญด้านแมชชีนเลิร์นนิง
ML Kit คืออะไร
ML Kit เป็น SDK สำหรับอุปกรณ์เคลื่อนที่ที่นำความเชี่ยวชาญด้านแมชชีนเลิร์นนิงของ Google มาสู่แอป Android และ iOS ในแพ็กเกจที่ทรงพลังแต่ใช้งานง่าย ไม่ว่าคุณจะเพิ่งเริ่มใช้หรือมีประสบการณ์ด้านแมชชีนเลิร์นนิงอยู่แล้ว ก็สามารถใช้ฟังก์ชันที่คุณต้องการได้ง่ายๆ ด้วยโค้ดเพียงไม่กี่บรรทัด มี API หลายรายการที่สามารถจดจำข้อความ ใบหน้า ฯลฯ ซึ่งคุณสามารถใช้ได้ทันที อย่างไรก็ตาม หากต้องการจดจำออบเจ็กต์ที่ API ไม่รองรับ เช่น การจดจำดอกไม้ประเภทต่างๆ จากรูปภาพ คุณจะต้องฝึกโมเดลของคุณเอง AutoML ช่วยคุณได้ในเรื่องนี้
AutoML คืออะไร
Cloud AutoML เป็นชุดผลิตภัณฑ์แมชชีนเลิร์นนิงที่ช่วยให้นักพัฒนาซอฟต์แวร์ซึ่งมีความเชี่ยวชาญด้านแมชชีนเลิร์นนิงในระดับที่จำกัดฝึกฝนโมเดลคุณภาพสูงให้ตรงกับความต้องการทางธุรกิจของตนเองได้ โดยใช้ประโยชน์จากการเรียนรู้แบบถ่ายโอนที่ทันสมัยและเทคโนโลยีการค้นหาสถาปัตยกรรมประสาทของ Google
ใน Codelab นี้ เราจะใช้ AutoML Vision Edge ใน ML Kit เพื่อฝึกโมเดลการจัดประเภทดอกไม้ โมเดลได้รับการฝึกในระบบคลาวด์ แต่แอปจะรวมหรือดาวน์โหลดโมเดลเพื่อเรียกใช้การอนุมานในอุปกรณ์อย่างเต็มรูปแบบ

สิ่งที่คุณจะได้เรียนรู้
- วิธีฝึกโมเดลการจัดประเภทรูปภาพโดยใช้ AutoML Vision Edge ใน ML Kit
- วิธีเรียกใช้ในแอป Android หรือ iOS ตัวอย่างโดยใช้ ML Kit SDK
สิ่งที่คุณต้องมี
สำหรับแอป Android
- Android Studio เวอร์ชันล่าสุด (v3.4 ขึ้นไป)
- Android Studio Emulator ที่มี Play Store หรืออุปกรณ์ Android จริง (v5.0 ขึ้นไป)
- ความรู้พื้นฐานเกี่ยวกับการพัฒนาแอป Android ใน Kotlin
สำหรับแอป iOS
- XCode เวอร์ชันล่าสุด (v10.2 ขึ้นไป)
- โปรแกรมจำลอง iOS หรืออุปกรณ์ iOS จริง (v9.0 ขึ้นไป)
- CocoaPods
- ความรู้พื้นฐานเกี่ยวกับการพัฒนา iOS ใน Swift
2. ตั้งค่า
ดาวน์โหลดโค้ดและชุดข้อมูลการฝึก
ดาวน์โหลดไฟล์เก็บถาวรแบบ ZIP ที่มีซอร์สโค้ดสำหรับโค้ดแล็บนี้และชุดข้อมูลการฝึก แตกไฟล์ที่บีบอัดในเครื่องของคุณ
สร้างโปรเจ็กต์คอนโซล 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 มีตัวเลือกให้คุณหลายอย่าง คุณสามารถเลือกเพิ่มประสิทธิภาพเพื่อความแม่นยำ หรือเพิ่มประสิทธิภาพเพื่อเวลาในการตอบสนองและขนาดโมเดล หรือจะเลือกให้ทั้ง 2 อย่างมีความสมดุลก็ได้ นอกจากนี้ คุณยังเลือกระยะเวลาที่อนุญาตให้โมเดลฝึกได้ด้วย ชุดข้อมูลที่ใหญ่ขึ้นต้องใช้เวลาฝึกนานขึ้น

หากต้องการฝึกโมเดลด้วยตนเอง ให้ทำตามขั้นตอนต่อไปนี้
- เลือกโมเดลการฝึก
- เลือกตัวเลือกอเนกประสงค์และเวลาฝึก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 Console
- ตอนนี้คลิกเรียกใช้ (
) ในแถบเครื่องมือ Android Studio เพื่อเรียกใช้แอปอีกครั้ง
แอป iOS
- ไปที่
ImageClassifier.swiftแล้วค้นหาบล็อกนี้
return RemoteModel(
name: Constant.remoteAutoMLModelName,
allowsModelUpdates: true,
initialConditions: initialConditions,
updateConditions: updateConditions
)
- ตรวจสอบว่าชื่อโมเดลที่ตั้งค่าไว้ในโค้ดตรงกับชื่อโมเดลที่คุณเผยแพร่ก่อนหน้านี้ผ่าน Firebase Console
- ตอนนี้คลิก Run (
) ในแถบเครื่องมือ Xcode เพื่อเรียกใช้แอปอีกครั้ง
7. ยินดีด้วย
คุณได้ผ่านเส้นทางการฝึกโมเดลการจัดประเภทรูปภาพแบบต้นทางถึงปลายทางด้วยข้อมูลการฝึกของคุณเองโดยใช้ AutoML แล้ว จากนั้นใช้โมเดลในแอปบนอุปกรณ์เคลื่อนที่โดยใช้ ML Kit
โปรดดูเอกสารประกอบเพื่อดูวิธีผสานรวม AutoML Vision Edge ใน ML Kit เข้ากับแอปของคุณเอง
นอกจากนี้ คุณยังลองใช้แอปตัวอย่าง ML Kit เพื่อดูฟีเจอร์อื่นๆ ของ Firebase ML Kit ได้ด้วย
ตัวอย่าง Android
ตัวอย่าง iOS