ฝึกและติดตั้งใช้งานโมเดลการจัดประเภทรูปภาพในอุปกรณ์ด้วย AutoML Vision ใน ML Kit

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 เพื่อฝึกโมเดลการจัดประเภทดอกไม้ โมเดลได้รับการฝึกในระบบคลาวด์ แต่แอปจะรวมหรือดาวน์โหลดโมเดลเพื่อเรียกใช้การอนุมานในอุปกรณ์อย่างเต็มรูปแบบ

93f21fd287496e4e.png

สิ่งที่คุณจะได้เรียนรู้

  • วิธีฝึกโมเดลการจัดประเภทรูปภาพโดยใช้ 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

  1. ไปที่คอนโซล Firebase
  2. เลือกสร้างโปรเจ็กต์ใหม่ แล้วตั้งชื่อโปรเจ็กต์ว่า "ML Kit Codelab"

ตั้งค่าแอป Android

  1. เพิ่มแอป Android ของเราลงในโปรเจ็กต์ Firebase ชื่อแพ็กเกจ Android: com.google.firebase.codelab.mlkit.automl
  2. ดาวน์โหลดgoogle-services.jsonไฟล์การกำหนดค่า แล้ววางไว้ในแอป Android ที่ android/mlkit-automl/app/google-services.json

ตั้งค่าแอป iOS

  1. เพิ่มแอป iOS ของเราลงในโปรเจ็กต์ Firebase รหัสชุด iOS: com.google.firebase.codelab.mlkit.automl
  2. ดาวน์โหลดไฟล์การกำหนดค่า GoogleService-Info.plist แล้วทำตามวิธีการเพื่อวางไฟล์ในแอป iOS ที่ ios/mlkit-automl/GoogleService-Info.plist

3. เตรียมชุดข้อมูลการฝึก

หากต้องการฝึกโมเดลให้จดจำออบเจ็กต์ประเภทต่างๆ คุณต้องเตรียมชุดรูปภาพและติดป้ายกำกับแต่ละรูป เราได้สร้างคลังเก็บรูปภาพดอกไม้ที่ได้รับอนุญาตจากครีเอทีฟคอมมอนส์เพื่อให้คุณใช้ใน Codelab นี้

ระบบจะแพ็กเกจชุดข้อมูลเป็นไฟล์ ZIP ชื่อ flower_photos.zip ซึ่งรวมอยู่ในไฟล์เก็บถาวร ZIP ที่คุณดาวน์โหลดในขั้นตอนก่อนหน้า

สำรวจชุดข้อมูล

หากแตกไฟล์ flower_photos.zip คุณจะเห็นว่าชุดข้อมูลมีรูปภาพดอกไม้ 5 ประเภท ได้แก่ แดนดิไลออน เดซี่ ทิวลิป ทานตะวัน และกุหลาบ ซึ่งจัดระเบียบไว้ในโฟลเดอร์ที่มีชื่อตามดอกไม้ ซึ่งเป็นวิธีที่สะดวกในการสร้างชุดข้อมูลการฝึกเพื่อป้อนให้กับ AutoML และฝึกโมเดลการจัดประเภทรูปภาพ

ชุดข้อมูลการฝึกนี้มีรูปภาพ 200 รูปสำหรับดอกไม้แต่ละประเภท คุณต้องมีรูปภาพอย่างน้อย 10 รูปต่อคลาสเพื่อฝึกโมเดล อย่างไรก็ตาม โดยทั่วไปแล้วรูปภาพที่ใช้ฝึกมากขึ้นจะทำให้ได้โมเดลที่ดีขึ้น

e5772b6527a6048d.png 6c4443d31cd5653e.png

4. ฝึกการใช้งานโมเดล

อัปโหลดชุดข้อมูลการฝึก

  1. จากคอนโซล Firebase ให้เปิดโปรเจ็กต์ที่คุณเพิ่งสร้าง
  2. เลือก ML Kit > AutoML
  3. คุณอาจเห็นหน้าจอต้อนรับบางหน้าจอ เลือกเริ่มต้นใช้งาน (หากมี)
  1. หลังจากความคืบหน้าในการตั้งค่าเสร็จสิ้น ให้เลือกเพิ่มชุดข้อมูล แล้วตั้งชื่อว่า "ดอกไม้"
  2. ในวัตถุประสงค์ของโมเดล ให้เลือกการจำแนกประเภทแบบป้ายกำกับเดียว เนื่องจากข้อมูลการฝึกมีป้ายกำกับเพียง 1 รายการต่อรูปภาพ
  3. เลือกสร้าง
  4. อัปโหลดไฟล์ flower_photos.zip ที่ดาวน์โหลดไว้ในขั้นตอนก่อนหน้าเพื่อนำเข้าชุดข้อมูลการฝึกดอกไม้
  5. รอสักครู่เพื่อให้งานนำเข้าเสร็จสิ้น
  6. ตอนนี้คุณยืนยันได้ว่านำเข้าชุดข้อมูลอย่างถูกต้องแล้ว
  7. เนื่องจากอิมเมจทั้งหมดในชุดข้อมูลการฝึกได้รับการติดป้ายกำกับแล้ว คุณจึงฝึกโมเดลต่อได้

cdb18b61f890934f.png

ฝึกโมเดลการจัดประเภทรูปภาพ

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

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

dd6b7eaa2dd5a9de.png

หากต้องการฝึกโมเดลด้วยตนเอง ให้ทำตามขั้นตอนต่อไปนี้

  1. เลือกโมเดลการฝึก
  2. เลือกตัวเลือกอเนกประสงค์และเวลาฝึก1 ชั่วโมงการประมวลผล
  3. รอสักครู่ (อาจใช้เวลาหลายชั่วโมง) เพื่อให้งานการฝึกเสร็จสมบูรณ์
  4. หลังจากงานการฝึกเสร็จสิ้น คุณจะเห็นเมตริกการประเมินเกี่ยวกับประสิทธิภาพของโมเดลที่ฝึก

73f98fbed5ae5ee5.png

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 และจะดาวน์โหลดลงในอุปกรณ์ของผู้ใช้เมื่อจำเป็นเป็นครั้งแรกเท่านั้น หลังจากนั้น โมเดลจะทำงานแบบออฟไลน์ได้ด้วย

2e71ed2c7cb8757c.png

แอป Android

  1. เปิด Android Studio
  2. นำเข้าแอป Android ในส่วน android/mlkit-automl/
  3. (ไม่บังคับ) แตกไฟล์โมเดลที่คุณดาวน์โหลดมา แล้วคัดลอกเนื้อหาไปยังโมเดลที่รวมอยู่ในแอปตัวอย่าง 10cf6b1e0f34de29.png
  4. ตอนนี้คลิกเรียกใช้ ( c8b8a080b7ead886.png) ในแถบเครื่องมือของ Android Studio และตรวจสอบว่าแอปจดจำดอกไม้ประเภทต่างๆ ได้

2e71ed2c7cb8757c.png

แอป iOS

  1. เปิดเทอร์มินัลแล้วไปที่โฟลเดอร์ ios/mlkit-automl/
  2. เรียกใช้ pod install เพื่อดาวน์โหลดทรัพยากร Dependency ผ่าน Cocoapods
  3. เรียกใช้ open MLVisionExample.xcworkspace/ เพื่อเปิดพื้นที่ทำงานของโปรเจ็กต์ใน Xcode
  4. (ไม่บังคับ) แตกไฟล์โมเดลที่ดาวน์โหลดมา แล้วคัดลอกเนื้อหาของโมเดลนั้นไปยังโมเดลที่รวมอยู่ในแอปตัวอย่างในส่วน ios/ml-automl/Resources/automl/cd291fe04bcdc6ee.png
  5. ตอนนี้คลิก Run ( 16629f86bbeb4208.png) ในแถบเครื่องมือ Xcode และตรวจสอบว่าแอปจดจำดอกไม้ประเภทต่างๆ ได้

65172c3f35336d4e.png

6. (ไม่บังคับ) ใช้โมเดลระยะไกล

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

  • ไบนารีของแอปขนาดเล็กลง
  • อัปเดตโมเดลได้โดยไม่ต้องอัปเดตแอป
  • การทดสอบ A/B ด้วยโมเดลหลายเวอร์ชัน

ในขั้นตอนนี้ เราจะเผยแพร่โมเดลระยะไกลและใช้ในแอปตัวอย่าง โปรดตรวจสอบว่าคุณได้ฝึกโมเดลในขั้นตอนที่ 4 ของ Codelab นี้เสร็จแล้ว

เผยแพร่โมเดล

  1. ไปที่คอนโซล Firebase
  2. เลือกโปรเจ็กต์ "ML Kit AutoML Codelab" ที่คุณสร้างไว้ก่อนหน้านี้
  3. เลือก ML Kit > AutoML
  4. เลือกชุดข้อมูล "ดอกไม้" ที่คุณสร้างไว้ก่อนหน้านี้
  5. ยืนยันว่างานการฝึกเสร็จสมบูรณ์แล้ว จากนั้นเลือกโมเดล
  6. เลือกเผยแพร่และตั้งชื่อว่า "mlkit_flowers" b63a58b83e814acd.png

จดจำดอกไม้ด้วยโมเดลระยะไกล

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

7c8292293fd858ad.png de359886ccecef2.png

การแก้ปัญหา

หากแอปตัวอย่างยังคงใช้โมเดลในเครื่อง โปรดยืนยันว่าได้ตั้งชื่อโมเดลระยะไกลอย่างถูกต้องภายในโค้ด

แอป Android

  1. ไปที่ ImageClassifier.kt แล้วค้นหาบล็อกนี้
val remoteModel = FirebaseRemoteModel.Builder(REMOTE_MODEL_NAME).build()
  1. ตรวจสอบว่าชื่อโมเดลที่ตั้งค่าไว้ในโค้ดตรงกับชื่อโมเดลที่คุณเผยแพร่ก่อนหน้านี้ผ่าน Firebase Console
  2. ตอนนี้คลิกเรียกใช้ ( c8b8a080b7ead886.png) ในแถบเครื่องมือ Android Studio เพื่อเรียกใช้แอปอีกครั้ง

แอป iOS

  1. ไปที่ ImageClassifier.swift แล้วค้นหาบล็อกนี้
return RemoteModel(
  name: Constant.remoteAutoMLModelName,
  allowsModelUpdates: true,
  initialConditions: initialConditions,
  updateConditions: updateConditions
)
  1. ตรวจสอบว่าชื่อโมเดลที่ตั้งค่าไว้ในโค้ดตรงกับชื่อโมเดลที่คุณเผยแพร่ก่อนหน้านี้ผ่าน Firebase Console
  2. ตอนนี้คลิก Run ( 16629f86bbeb4208.png) ในแถบเครื่องมือ Xcode เพื่อเรียกใช้แอปอีกครั้ง

7. ยินดีด้วย

คุณได้ผ่านเส้นทางการฝึกโมเดลการจัดประเภทรูปภาพแบบต้นทางถึงปลายทางด้วยข้อมูลการฝึกของคุณเองโดยใช้ AutoML แล้ว จากนั้นใช้โมเดลในแอปบนอุปกรณ์เคลื่อนที่โดยใช้ ML Kit

โปรดดูเอกสารประกอบเพื่อดูวิธีผสานรวม AutoML Vision Edge ใน ML Kit เข้ากับแอปของคุณเอง

นอกจากนี้ คุณยังลองใช้แอปตัวอย่าง ML Kit เพื่อดูฟีเจอร์อื่นๆ ของ Firebase ML Kit ได้ด้วย

ตัวอย่าง Android

ตัวอย่าง iOS