การจำแนกรูปภาพ

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

รูปภาพต่อไปนี้แสดงผลลัพธ์ของโมเดลการจำแนกรูปภาพบน Android

สกรีนช็อตของตัวอย่าง Android

เริ่ม

หากคุณเพิ่งเริ่มใช้ TensorFlow Lite และกำลังทำงานกับ Android หรือ iOS ขอแนะนำให้คุณสำรวจตัวอย่างแอปพลิเคชันต่อไปนี้ที่สามารถช่วยคุณเริ่มต้นได้

คุณสามารถใช้ API แบบสำเร็จรูปจาก ไลบรารีงาน TensorFlow Lite เพื่อรวมโมเดลการจัดประเภทรูปภาพในโค้ดเพียงไม่กี่บรรทัด คุณยังสามารถสร้างไปป์ไลน์การอนุมานที่กำหนดเองได้โดยใช้ TensorFlow Lite Support Library

ตัวอย่าง Android ด้านล่างสาธิตการใช้งานสำหรับทั้งสองวิธีเป็น lib_task_api และ lib_support ตามลำดับ

ดูตัวอย่าง Android

ดูตัวอย่าง iOS

หากคุณกำลังใช้แพลตฟอร์มอื่นที่ไม่ใช่ Android/iOS หรือหากคุณคุ้นเคยกับ TensorFlow Lite API อยู่แล้ว ให้ดาวน์โหลดรุ่นเริ่มต้นและไฟล์สนับสนุน (ถ้ามี)

ดาวน์โหลดรุ่นสตาร์ท

คำอธิบายแบบจำลอง

มันทำงานอย่างไร

ระหว่างการฝึก โมเดลการจัดประเภทรูปภาพจะถูกป้อนรูปภาพและ ป้ายกำกับ ที่เกี่ยวข้อง ป้ายแต่ละป้ายคือชื่อของแนวคิดหรือคลาสที่แตกต่างกัน ซึ่งตัวแบบจะเรียนรู้ที่จะจดจำ

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

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

ประเภทสัตว์ ความน่าจะเป็น
กระต่าย 0.07
หนูแฮมสเตอร์ 0.02
หมา 0.91

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

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

ผลลัพธ์ที่คลุมเครือ

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

ตัวอย่างเช่น ข้อมูลต่อไปนี้อาจบ่งบอกถึงผลลัพธ์ที่คลุมเครือ:

ฉลาก ความน่าจะเป็น
กระต่าย 0.31
หนูแฮมสเตอร์ 0.35
หมา 0.34
หากแบบจำลองของคุณแสดงผลลัพธ์ที่คลุมเครือบ่อยครั้ง คุณอาจต้องใช้แบบจำลองที่แตกต่างและแม่นยำยิ่งขึ้น

การเลือกรูปแบบสถาปัตยกรรม

TensorFlow Lite มีโมเดลการจัดประเภทรูปภาพที่หลากหลาย ซึ่งทั้งหมดได้รับการฝึกอบรมจากชุดข้อมูลดั้งเดิม สถาปัตยกรรมโมเดล เช่น MobileNet, Inception และ NASNet มีอยู่ใน TensorFlow Hub ในการเลือกแบบจำลองที่ดีที่สุดสำหรับกรณีการใช้งานของคุณ คุณต้องพิจารณาสถาปัตยกรรมแต่ละแบบรวมถึงจุดประนีประนอมระหว่างรุ่นต่างๆ การแลกเปลี่ยนแบบจำลองเหล่านี้บางส่วนขึ้นอยู่กับตัวชี้วัด เช่น ประสิทธิภาพ ความแม่นยำ และขนาดโมเดล ตัวอย่างเช่น คุณอาจต้องการโมเดลที่เร็วกว่าสำหรับการสร้างเครื่องสแกนบาร์โค้ด ในขณะที่คุณอาจต้องการรุ่นที่ช้ากว่าและแม่นยำกว่าสำหรับแอปสร้างภาพทางการแพทย์ โปรดทราบว่า โมเดลการจัดประเภทรูปภาพ ที่ให้มานั้นยอมรับอินพุตขนาดต่างๆ สำหรับบางรุ่น ข้อมูลนี้จะระบุไว้ในชื่อไฟล์ ตัวอย่างเช่น รุ่น Mobilenet_V1_1.0_224 ยอมรับอินพุตขนาด 224x224 พิกเซล ทุกรุ่นต้องการช่องสีสามช่องต่อพิกเซล (แดง เขียว และน้ำเงิน) โมเดลเชิงปริมาณต้องการ 1 ไบต์ต่อแชนเนล และโมเดลโฟลตต้องการ 4 ไบต์ต่อแชนเนล ตัวอย่างโค้ด Android และ iOS สาธิตวิธีประมวลผลภาพจากกล้องขนาดเต็มให้อยู่ในรูปแบบที่จำเป็นสำหรับแต่ละรุ่น

การใช้และข้อจำกัด

โมเดลการจัดประเภทรูปภาพของ TensorFlow Lite มีประโยชน์สำหรับการจำแนกประเภทป้ายกำกับเดียว นั่นคือ การคาดคะเนว่ารูปภาพมีแนวโน้มที่จะแสดงป้ายกำกับใดมากที่สุด พวกเขาได้รับการฝึกฝนให้รู้จัก 1,000 คลาสรูปภาพ สำหรับรายการคลาสทั้งหมด โปรดดูไฟล์ป้ายกำกับใน model zip หากคุณต้องการฝึกโมเดลให้รู้จักคลาสใหม่ โปรดดู กำหนดโมเดลเอง สำหรับกรณีการใช้งานต่อไปนี้ คุณควรใช้แบบจำลองประเภทอื่น:
  • การคาดคะเนประเภทและตำแหน่งของออบเจ็กต์ตั้งแต่หนึ่งรายการขึ้นไปภายในรูปภาพ (ดู การตรวจจับออบเจกต์ )
  • การคาดคะเนองค์ประกอบของภาพ เช่น ตัวแบบกับพื้นหลัง (ดู การแบ่งส่วน )
เมื่อคุณมีรุ่นสตาร์ทที่ทำงานบนอุปกรณ์เป้าหมายของคุณแล้ว คุณสามารถทดลองกับรุ่นต่างๆ เพื่อหาสมดุลที่เหมาะสมที่สุดระหว่างประสิทธิภาพ ความแม่นยำ และขนาดโมเดล

ปรับแต่งโมเดล

โมเดลที่ได้รับการฝึกฝนมาล่วงหน้านั้นได้รับการฝึกฝนให้รู้จักรูปภาพ 1,000 คลาส สำหรับรายการคลาสทั้งหมด โปรดดูไฟล์ป้ายกำกับใน model zip คุณยังสามารถใช้การเรียนรู้แบบโอนย้ายเพื่อฝึกแบบจำลองใหม่เพื่อให้รู้จักคลาสที่ไม่ได้อยู่ในชุดเดิมได้ ตัวอย่างเช่น คุณสามารถฝึกแบบจำลองใหม่เพื่อแยกแยะระหว่างต้นไม้ชนิดต่างๆ แม้ว่าจะไม่มีต้นไม้ในข้อมูลการฝึกเดิมก็ตาม ในการทำเช่นนี้ คุณจะต้องมีชุดภาพการฝึกสำหรับป้ายกำกับใหม่แต่ละรายการที่คุณต้องการฝึก เรียนรู้วิธีดำเนินการเรียนรู้การโอนย้ายด้วย TFLite Model Maker หรือใน Recognize flowers ด้วย TensorFlow codelab

มาตรฐานประสิทธิภาพ

ประสิทธิภาพของโมเดลจะวัดในแง่ของระยะเวลาที่โมเดลใช้ในการอนุมานบนชิ้นส่วนของฮาร์ดแวร์ที่กำหนด ยิ่งเวลาที่ต่ำลงเท่าใด โมเดลก็จะยิ่งเร็วขึ้นเท่านั้น ประสิทธิภาพที่คุณต้องการขึ้นอยู่กับแอปพลิเคชันของคุณ ประสิทธิภาพอาจมีความสำคัญสำหรับแอปพลิเคชัน เช่น วิดีโอแบบเรียลไทม์ โดยอาจมีความสำคัญในการวิเคราะห์แต่ละเฟรมในช่วงเวลาก่อนที่จะวาดเฟรมถัดไป (เช่น การอนุมานต้องเร็วกว่า 33ms เพื่อทำการอนุมานแบบเรียลไทม์บนสตรีมวิดีโอ 30fps) . ช่วงประสิทธิภาพของรุ่น TensorFlow Lite ของ MobileNet มีตั้งแต่ 3.7ms ถึง 80.3 ms ตัวเลขเปรียบเทียบประสิทธิภาพสร้างขึ้นด้วย เครื่องมือเปรียบเทียบ
ชื่อรุ่น ขนาดรุ่น อุปกรณ์ นภาภรณ์ ซีพียู
Mobilenet_V1_1.0_224_quant 4.3 Mb พิกเซล 3 (แอนดรอยด์ 10) 6ms 13ms*
พิกเซล 4 (แอนดรอยด์ 10) 3.3ms 5ms*
iPhone XS (iOS 12.4.1) 11ms**

* ใช้ 4 เธรด

** ใช้ 2 เธรดบน iPhone เพื่อผลลัพธ์ประสิทธิภาพที่ดีที่สุด

ความแม่นยำของแบบจำลอง

ความแม่นยำวัดจากความถี่ที่โมเดลจัดประเภทรูปภาพได้อย่างถูกต้อง ตัวอย่างเช่น แบบจำลองที่มีความแม่นยำตามที่ระบุ 60% สามารถจำแนกประเภทรูปภาพได้อย่างถูกต้องโดยเฉลี่ย 60% ของเวลา

เมตริกความแม่นยำที่เกี่ยวข้องมากที่สุดคือ Top-1 และ Top-5 อันดับ 1 หมายถึงความถี่ที่ป้ายกำกับที่ถูกต้องปรากฏเป็นป้ายกำกับที่มีความน่าจะเป็นสูงสุดในผลลัพธ์ของแบบจำลอง 5 อันดับสูงสุดหมายถึงความถี่ที่ป้ายกำกับที่ถูกต้องปรากฏใน 5 ความน่าจะเป็นสูงสุดในเอาต์พุตของโมเดล

ช่วงความแม่นยำ 5 อันดับแรกของรุ่น TensorFlow Lite ของรุ่น MobileNet มีตั้งแต่ 64.4 ถึง 89.9%

ขนาดรุ่น

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

ขนาดของโมเดล MobileNet เชิงปริมาณของ TensorFlow Lite มีตั้งแต่ 0.5 ถึง 3.4 MB

อ่านเพิ่มเติมและทรัพยากร

ใช้แหล่งข้อมูลต่อไปนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับแนวคิดที่เกี่ยวข้องกับการจัดประเภทรูปภาพ: