ML Community Day คือวันที่ 9 พฤศจิกายน! ร่วมกับเราสำหรับการปรับปรุงจาก TensorFlow, JAX และอื่น ๆ เรียนรู้เพิ่มเติม

การจำแนกภาพ

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

ดาวน์โหลดรุ่นเริ่มต้น

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

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

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

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

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

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

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

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

ผลลัพธ์ที่ไม่ชัดเจน

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

ตัวอย่างเช่นสิ่งต่อไปนี้อาจบ่งบอกถึงผลลัพธ์ที่ไม่ชัดเจน:

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

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

TensorFlow Lite ให้คุณมีรูปแบบการจำแนกภาพที่หลากหลายซึ่งทั้งหมดได้รับการฝึกฝนบนชุดข้อมูลดั้งเดิม สถาปัตยกรรมโมเดลเช่น MobileNet, Inception และ NASNet มีอยู่ใน หน้าโมเดลที่โฮสต์ ในการเลือกรูปแบบที่ดีที่สุดสำหรับกรณีการใช้งานของคุณคุณต้องพิจารณาสถาปัตยกรรมแต่ละแบบรวมถึงการแลกเปลี่ยนระหว่างโมเดลต่างๆ การแลกเปลี่ยนโมเดลเหล่านี้บางส่วนขึ้นอยู่กับเมตริกเช่นประสิทธิภาพความแม่นยำและขนาดของโมเดล ตัวอย่างเช่นคุณอาจต้องการโมเดลที่เร็วกว่าในการสร้างเครื่องสแกนบาร์โค้ดในขณะที่คุณอาจต้องการโมเดลที่ช้ากว่าและแม่นยำกว่าสำหรับแอปถ่ายภาพทางการแพทย์ โปรดทราบว่า รูปแบบการจัดหมวดหมู่รูปภาพที่ ให้ไว้รองรับอินพุตที่แตกต่างกัน สำหรับบางรุ่นจะระบุไว้ในชื่อไฟล์ ตัวอย่างเช่นรุ่น 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) . ประสิทธิภาพของโมเดล MobileNet เชิงปริมาณของ TensorFlow Lite มีตั้งแต่ 3.7ms ถึง 80.3 ms ตัวเลขมาตรฐานประสิทธิภาพถูกสร้างขึ้นด้วย เครื่องมือเปรียบเทียบ
ชื่อรุ่น ขนาดโมเดล อุปกรณ์ NNAPI ซีพียู
Mobilenet_V1_1.0_224_quant 4.3 ลบ พิกเซล 3 (Android 10) 6 มิลลิวินาที 13 มิลลิวินาที *
พิกเซล 4 (Android 10) 3.3 มิลลิวินาที 5 มิลลิวินาที *
iPhone XS (iOS 12.4.1) 11 มิลลิวินาที **

* 4 เธรดที่ใช้

** 2 เธรดที่ใช้บน iPhone เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด

ความแม่นยำของโมเดล

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

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

TensorFlow Lite วัดปริมาณความแม่นยำสูงสุดของรุ่น MobileNet ได้ตั้งแต่ 64.4 ถึง 89.9%

ขนาดโมเดล

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

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

อ่านเพิ่มเติมและแหล่งข้อมูล

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