งานตัวแยกประเภทรูปภาพ MediaPipe ช่วยให้คุณจัดประเภทรูปภาพได้ คุณสามารถใช้งานนี้เพื่อระบุสิ่งที่รูปภาพแสดงจากชุดหมวดหมู่ที่กําหนดไว้เมื่อฝึก งานนี้จะดำเนินการกับข้อมูลรูปภาพด้วยโมเดลแมชชีนเลิร์นนิง (ML) เป็นข้อมูลแบบคงที่หรือสตรีมต่อเนื่อง และแสดงรายการหมวดหมู่ที่เป็นไปได้โดยจัดอันดับตามคะแนนความน่าจะเป็นจากมากไปน้อย
เริ่มต้นใช้งาน
เริ่มใช้แท็บงานนี้โดยทําตามคําแนะนําการใช้งานแพลตฟอร์มเป้าหมายข้อใดข้อหนึ่งต่อไปนี้ คู่มือเฉพาะแพลตฟอร์มเหล่านี้จะแนะนำการใช้งานพื้นฐานของงานนี้โดยใช้โมเดลที่แนะนํา รวมถึงแสดงตัวอย่างโค้ดพร้อมตัวเลือกการกําหนดค่าที่แนะนํา
- Android - ตัวอย่างโค้ด - คำแนะนำ
- Python - ตัวอย่างโค้ด - คู่มือ
- เว็บ - ตัวอย่างโค้ด - คำแนะนำ
- iOS - ตัวอย่างโค้ด - คำแนะนำ
รายละเอียดงาน
ส่วนนี้จะอธิบายความสามารถ อินพุต เอาต์พุต และตัวเลือกการกำหนดค่าของงานนี้
ฟีเจอร์
- การประมวลผลรูปภาพอินพุต - การประมวลผลประกอบด้วยการหมุนรูปภาพ การปรับขนาด การปรับให้เป็นมาตรฐาน และการแปลงพื้นที่สี
- พื้นที่สนใจ - จัดประเภทพื้นที่ของรูปภาพแทนทั้งรูปภาพ
- ภาษาของแผนที่ป้ายกำกับ - ตั้งค่าภาษาที่ใช้สำหรับชื่อที่แสดง
- เกณฑ์คะแนน - กรองผลลัพธ์ตามคะแนนการคาดการณ์
- การจัดประเภท Top-k - จำกัดจำนวนผลลัพธ์การจัดประเภท
- รายการที่อนุญาตและปฏิเสธของป้ายกำกับ - ระบุหมวดหมู่ที่จัดประเภท
อินพุตงาน | เอาต์พุตของงาน |
---|---|
อินพุตอาจเป็นประเภทข้อมูลอย่างใดอย่างหนึ่งต่อไปนี้
|
เครื่องมือจัดประเภทรูปภาพจะแสดงรายการหมวดหมู่ที่มี
|
ตัวเลือกการกําหนดค่า
งานนี้มีตัวเลือกการกำหนดค่าต่อไปนี้
ชื่อตัวเลือก | คำอธิบาย | ช่วงของค่า | ค่าเริ่มต้น |
---|---|---|---|
running_mode |
ตั้งค่าโหมดการทํางานสําหรับงาน โดยโหมดมี 3 แบบ ดังนี้ รูปภาพ: โหมดสำหรับอินพุตรูปภาพเดียว วิดีโอ: โหมดสำหรับเฟรมที่ถอดรหัสของวิดีโอ LIVE_STREAM: โหมดสตรีมแบบสดของข้อมูลอินพุต เช่น จากกล้อง ในโหมดนี้ คุณต้องเรียกใช้ resultListener เพื่อตั้งค่า Listener เพื่อรับผลลัพธ์แบบไม่พร้อมกัน |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
display_names_locale |
ตั้งค่าภาษาของป้ายกำกับที่จะใช้สำหรับชื่อที่แสดงซึ่งระบุไว้ในข้อมูลเมตาของโมเดลของงาน (หากมี) ค่าเริ่มต้นคือ en สำหรับภาษาอังกฤษ คุณเพิ่มป้ายกำกับที่แปลแล้วลงในข้อมูลเมตาของโมเดลที่กำหนดเองได้โดยใช้ TensorFlow Lite Metadata Writer API |
รหัสภาษา | en |
max_results |
กําหนดจํานวนสูงสุดของผลการแยกประเภทที่มีคะแนนสูงสุดที่จะแสดง (ไม่บังคับ) หากมีค่าน้อยกว่า 0 ระบบจะแสดงผลลัพธ์ทั้งหมดที่มีอยู่ | ตัวเลขบวกใดก็ได้ | -1 |
score_threshold |
ตั้งค่าเกณฑ์คะแนนการคาดการณ์ที่จะลบล้างเกณฑ์ที่ระบุไว้ในข้อมูลเมตาของโมเดล (หากมี) ระบบจะปฏิเสธผลลัพธ์ที่ต่ำกว่าค่านี้ | ตัวเลขทศนิยม | ไม่ได้ตั้งค่า |
category_allowlist |
ตั้งค่ารายการชื่อหมวดหมู่ที่อนุญาต (ไม่บังคับ) หากไม่ว่าง ระบบจะกรองผลการจัดประเภทที่มีชื่อหมวดหมู่ไม่อยู่ในชุดนี้ออก ระบบจะไม่สนใจชื่อหมวดหมู่ที่ซ้ำกันหรือไม่รู้จัก
ตัวเลือกนี้ใช้ร่วมกับ category_denylist ไม่ได้ และการใช้ทั้ง 2 ตัวเลือกจะทำให้เกิดข้อผิดพลาด |
สตริงใดก็ได้ | ไม่ได้ตั้งค่า |
category_denylist |
ตั้งค่ารายการชื่อหมวดหมู่ที่ไม่อนุญาต (ไม่บังคับ) หากไม่เป็นค่าว่าง ระบบจะกรองผลการจัดประเภทที่มีชื่อหมวดหมู่อยู่ในชุดนี้ออก ระบบจะไม่สนใจชื่อหมวดหมู่ที่ซ้ำกันหรือไม่รู้จัก ตัวเลือกนี้ใช้ร่วมกันกับ category_allowlist ไม่ได้ และการใช้ทั้ง 2 ตัวเลือกจะทำให้เกิดข้อผิดพลาด |
สตริงใดก็ได้ | ไม่ได้ตั้งค่า |
result_callback |
ตั้งค่าโปรแกรมรับฟังผลลัพธ์ให้รับผลการแยกประเภทแบบไม่พร้อมกันเมื่อตัวแยกประเภทรูปภาพอยู่ในโหมดสตรีมแบบสด ใช้ได้เมื่อตั้งค่าโหมดการทํางานเป็น LIVE_STREAM เท่านั้น |
ไม่มี | ไม่ได้ตั้งค่า |
โมเดล
ตัวแยกประเภทรูปภาพต้องดาวน์โหลดและจัดเก็บโมเดลการจัดประเภทรูปภาพไว้ในไดเรกทอรีโปรเจ็กต์ เริ่มต้นด้วยรูปแบบที่แนะนำโดยค่าเริ่มต้นสำหรับแพลตฟอร์มเป้าหมายเมื่อคุณเริ่มพัฒนาด้วยงานนี้ โมเดลอื่นๆ ที่มีให้ใช้งานมักจะมีการแลกเปลี่ยนระหว่างประสิทธิภาพ ความแม่นยำ ความละเอียด และข้อกำหนดด้านทรัพยากร และในบางกรณีอาจมีฟีเจอร์เพิ่มเติม
โมเดล EfficientNet-Lite0 (แนะนำ)
โมเดล EfficientNet-Lite0 ใช้สถาปัตยกรรม EfficientNet และได้รับการฝึกโดยใช้ ImageNet เพื่อจดจำคลาสต่างๆ 1,000 คลาส เช่น ต้นไม้ สัตว์ อาหาร ยานพาหนะ บุคคล ฯลฯ ดูรายการทั้งหมดของป้ายกำกับที่รองรับ EfficientNet-Lite0 มีให้บริการเป็นโมเดล int8 และ float 32 เราขอแนะนํารูปแบบนี้เนื่องจากช่วยให้เกิดความสมดุลระหว่างเวลาในการตอบสนองกับความแม่นยำ ทั้งยังแม่นยำและเบาพอสําหรับกรณีการใช้งานหลายประเภท
ชื่อโมเดล | รูปร่างอินพุต | ประเภทการแปลงค่าเป็นจำนวนเต็ม | เวอร์ชัน |
---|---|---|---|
EfficientNet-Lite0 (int8) | 224 x 224 | int8 | ล่าสุด |
EfficientNet-Lite0 (float 32) | 224 x 224 | ไม่มี (float32) | ล่าสุด |
โมเดล EfficientNet-Lite2
โมเดล EfficientNet-Lite2 ใช้สถาปัตยกรรม EfficientNet และได้รับการฝึกโดยใช้ ImageNet เพื่อจดจำคลาสต่างๆ 1,000 คลาส เช่น ต้นไม้ สัตว์ อาหาร ยานพาหนะ บุคคล ฯลฯ ดูรายการทั้งหมดของป้ายกำกับที่รองรับ EfficientNet-Lite2 มีให้บริการในรูปแบบ int8 และ float 32 โดยทั่วไปแล้วโมเดลนี้มีความแม่นยำมากกว่า EfficientNet-Lite0 แต่ก็ช้ากว่าและใช้หน่วยความจำมากกว่าด้วย รูปแบบนี้เหมาะสำหรับกรณีการใช้งานที่มีความแม่นยำสำคัญกว่าความเร็วหรือขนาด
ชื่อโมเดล | รูปร่างอินพุต | ประเภทการแปลงค่าเป็นจำนวนเต็ม | เวอร์ชัน |
---|---|---|---|
EfficientNet-Lite2 (int8) | 224 x 224 | int8 | ล่าสุด |
EfficientNet-Lite2 (float 32) | 224 x 224 | ไม่มี (float32) | ล่าสุด |
การเปรียบเทียบงาน
ต่อไปนี้คือการเปรียบเทียบประสิทธิภาพของงานสำหรับทั้งไปป์ไลน์โดยอิงตามโมเดลที่ผ่านการฝึกล่วงหน้าข้างต้น ผลลัพธ์เวลาในการตอบสนองคือเวลาในการตอบสนองโดยเฉลี่ยใน Pixel 6 ที่ใช้ CPU / GPU
ชื่อแบบจำลอง | เวลาในการตอบสนองของ CPU | เวลาในการตอบสนองของ GPU |
---|---|---|
EfficientNet-Lite0 (float 32) | 23.52 มิลลิวินาที | 18.90 มิลลิวินาที |
EfficientNet-Lite0 (int8) | 10.08 มิลลิวินาที | - |
EfficientNet-Lite2 (จำนวนลอยตัว 32) | 44.17 มิลลิวินาที | 22.20 มิลลิวินาที |
EfficientNet-Lite2 (int8) | 19.43 มิลลิวินาที | - |
โมเดลที่กำหนดเอง
คุณสามารถใช้โมเดล ML ที่กําหนดเองกับงานนี้ได้หากต้องการปรับปรุงหรือเปลี่ยนแปลงความสามารถของโมเดลที่ระบุ คุณสามารถใช้ Model Maker เพื่อแก้ไขโมเดลที่มีอยู่หรือสร้างโมเดลโดยใช้เครื่องมืออย่าง TensorFlow โมเดลที่กำหนดเองซึ่งใช้กับ MediaPipe ต้องเป็นรูปแบบ TensorFlow Lite และต้องระบุmetadataที่เฉพาะเจาะจงซึ่งอธิบายพารามิเตอร์การทํางานของโมเดล คุณควรพิจารณาใช้ Model Maker เพื่อแก้ไขโมเดลที่ให้มาสำหรับงานนี้ก่อนที่จะสร้างโมเดลของคุณเอง
หากสนใจสร้างตัวจัดประเภทรูปภาพที่กําหนดเองโดยใช้ชุดข้อมูลของคุณเอง ให้เริ่มด้วยบทแนะนำการปรับแต่งตัวจัดประเภทรูปภาพ