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

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

เกี่ยวกับ Codelab นี้

subjectอัปเดตล่าสุดเมื่อ พ.ย. 16, 2021
account_circleเขียนโดย Khanh LeViet

1 บทนำ

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

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