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

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

93f21fd287496e4e.png

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

  • วิธีฝึกโมเดลการจัดประเภทรูปภาพโดยใช้ AutoML Vision Edge ใน ML Kit
  • วิธีเรียกใช้ในแอป Android หรือ iOS ตัวอย่างโดยใช้ ML Kit SDK

สิ่งที่ต้องมี

สำหรับแอป Android

สำหรับแอป iOS

  • XCode เวอร์ชันล่าสุด (v10.2+)
  • iOS Simulator หรืออุปกรณ์ iOS ทางกายภาพ (v9.0+)
  • CocoaPods
  • ความรู้พื้นฐานเกี่ยวกับการพัฒนา iOS ใน Swift

2. ตั้งค่า

ดาวน์โหลดโค้ดและชุดข้อมูลการฝึก

ดาวน์โหลดไฟล์เก็บถาวร Zip ที่มีซอร์สโค้ดสำหรับ Codelab นี้และชุดข้อมูลการฝึก แตกไฟล์ที่เก็บถาวรในเครื่องของคุณ

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

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
  2. จากนั้นคลิกเรียกใช้ ( c8b8a080b7ead886.png) ในแถบเครื่องมือ Android Studio เพื่อเรียกใช้แอปอีกครั้ง

แอป iOS

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

7. ยินดีด้วย

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

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

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

ตัวอย่าง Android

ตัวอย่างสำหรับ iOS