เข้าร่วม Women in ML Symposium ในวันที่ 7 ธันวาคม ลงทะเบียนตอนนี้

การจัดหมวดหมู่วิดีโอ

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

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

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

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

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

เริ่ม

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

ดาวน์โหลดโมเดลเริ่มต้นพร้อมข้อมูลเมตา

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

Android

แอปพลิเคชัน Android ใช้กล้องหลังของอุปกรณ์เพื่อจัดหมวดหมู่วิดีโออย่างต่อเนื่อง การอนุมานทำได้โดยใช้ TensorFlow Lite Java API แอปสาธิตจะจัดประเภทเฟรมและแสดงการจำแนกประเภทที่คาดการณ์ไว้แบบเรียลไทม์

ตัวอย่าง Android

ราสเบอร์รี่ปี่

ตัวอย่าง Raspberry Pi ใช้ TensorFlow Lite กับ Python เพื่อทำการจำแนกวิดีโออย่างต่อเนื่อง เชื่อมต่อ Raspberry Pi กับกล้อง เช่น Pi Camera เพื่อทำการจำแนกวิดีโอแบบเรียลไทม์ หากต้องการดูผลลัพธ์จากกล้อง ให้เชื่อมต่อจอภาพกับ Raspberry Pi และใช้ SSH เพื่อเข้าถึง Pi shell (เพื่อหลีกเลี่ยงการเชื่อมต่อคีย์บอร์ดกับ Pi)

ก่อนเริ่มต้น ให้ ตั้งค่า Raspberry Pi ของคุณด้วย Raspberry Pi OS (ควรอัปเดตเป็น Buster)

ตัวอย่าง Raspberry Pi

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

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

โมเดล MoviNet สำหรับ TensorFlow Lite มีสามรุ่น: MoviNet-A0 , MoviNet-A1 และ MoviNet-A2 ตัวแปรเหล่านี้ได้รับการฝึกอบรมด้วยชุดข้อมูล Kinetics-600 เพื่อรับรู้การกระทำของมนุษย์ 600 แบบ MoviNet-A0 มีขนาดเล็กที่สุด เร็วที่สุด และแม่นยำน้อยที่สุด MoviNet-A2 ใหญ่ที่สุด ช้าที่สุด และแม่นยำที่สุด MoviNet-A1 เป็นการประนีประนอมระหว่าง A0 และ A2

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

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

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

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

การกระทำ ความน่าจะเป็น
การเต้นรำแบบสี่เหลี่ยม 0.02
เข็มเกลียว 0.08
นิ้วก้อย 0.23
โบกมือ 0.67

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

อินพุตโมเดล

โมเดลยอมรับสตรีมของเฟรมวิดีโอ RGB เป็นอินพุต ขนาดของวิดีโออินพุตนั้นยืดหยุ่นได้ แต่ควรให้เข้ากับความละเอียดการฝึกโมเดลและอัตราเฟรม:

  • MoviNet-A0 : 172 x 172 ที่ 5 fps
  • MoviNet-A1 : 172 x 172 ที่ 5 fps
  • MoviNet-A1 : 224 x 224 ที่ 5 fps

วิดีโออินพุตคาดว่าจะมีค่าสีภายในช่วง 0 และ 1 ตาม แบบแผนอินพุตรูปภาพทั่วไป

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

ผลลัพธ์ของโมเดล

โมเดลจะส่งคืนชุดป้ายกำกับและคะแนนที่เกี่ยวข้อง คะแนนเป็นค่า logit ที่แสดงถึงการทำนายสำหรับแต่ละชั้นเรียน คะแนนเหล่านี้สามารถแปลงเป็นความน่าจะเป็นได้โดยใช้ฟังก์ชัน softmax ( tf.nn.softmax )

    exp_logits = np.exp(np.squeeze(logits, axis=0))
    probabilities = exp_logits / np.sum(exp_logits)

ภายใน เอาต์พุตของโมเดลยังรวมสถานะภายในจากโมเดลและป้อนกลับเข้าไปในโมเดลสำหรับเฟรมที่จะเกิดขึ้น

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

ตัวเลขเปรียบเทียบประสิทธิภาพสร้างขึ้นด้วย เครื่องมือเปรียบเทียบ MoviNets รองรับ CPU เท่านั้น

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

ชื่อรุ่น ขนาด ความแม่นยำ * อุปกรณ์ ซีพียู **
MoviNet-A0 (คำนวณจำนวนเต็ม) 3.1 MB 65% Pixel 4 5 ms
Pixel 3 11 ms
MoviNet-A1 (หาจำนวนเต็ม) 4.5 MB 70% Pixel 4 8 ms
Pixel 3 19 ms
MoviNet-A2 (หาจำนวนเต็ม) 5.1 MB 72% Pixel 4 15 ms
Pixel 3 36 ms

* ความแม่นยำสูงสุด 1 อันดับแรกที่วัดในชุดข้อมูล Kinetics-600

** Latency วัดเมื่อรันบน CPU ที่มี 1-thread

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

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแบบจำลองการปรับแต่งข้อมูลที่กำหนดเอง โปรดดูที่ MoViNets repo และ บทช่วยสอน MoViNets

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

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