ผู้นำทางความคิด

การใช้ AI ในการประมวลผลวิดีโอแบบเรียลไทม์: พื้นฐานและอื่นๆ

mm
เพิ่ม Unite.AI ลงในแหล่งข้อมูลที่คุณต้องการบน Google

โดย Maksym Tatariants, วิศวกรวิทยาศาสตร์ข้อมูลที่ Data Science ของ MobiDev

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

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

อ่านต่อเพื่อเรียนรู้ว่าคุณสามารถใช้ AI ในการประมวลผลวิดีโอได้อย่างไร

พื้นฐานของการประมวลผลวิดีโอแบบเรียลไทม์

เรามาเริ่มกับพื้นฐานกัน การประมวลผลวิดีโอแบบเรียลไทม์เป็นเทคโนโลยีที่จำเป็นในระบบการเฝ้าระวังที่ใช้การรู้จำวัตถุและใบหน้า นอกจากนี้ยังเป็นกระบวนการที่ใช้พลังงาน AI visual inspection software ในอุตสาหกรรม

ดังนั้น วิดีโอประมวลผลทำงานอย่างไร? การประมวลผลวิดีโอประกอบด้วยชุดของขั้นตอน ซึ่งรวมถึงการถอดรหัส การคำนวณ และการเข้ารหัส นี่คือสิ่งที่คุณต้องรู้:

  • การถอดรหัส: กระบวนการที่จำเป็นในการแปลงวิดีโอจากไฟล์ที่ถูกบีบอัดกลับไปสู่รูปแบบดั้งเดิม
  • การคำนวณ: การดำเนินการเฉพาะที่ดำเนินการบนเฟรมวิดีโอดั้งเดิม
  • การเข้ารหัส: กระบวนการในการแปลงเฟรมที่ประมวลผลกลับไปสู่สถานะที่ถูกบีบอัดดั้งเดิม

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

การแบ่งไฟล์วิดีโอเป็นอย่างไร?

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

คุณสามารถคิดว่าการแบ่งวิดีโอเป็นรูปแบบการสร้างไฟล์เสมือนจริงมากกว่าการสร้างไฟล์ย่อย

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

สถาปัตยกรรมท่อคืออะไร?

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

ต่อไปนี้เป็นตัวอย่างง่ายๆ ของสถาปัตยกรรมท่อในทางปฏิบัติ และวิธีการใช้ในการตรวจสอบวิดีโอด้วยการตรวจจับและเบลอใบหน้าแบบเรียลไทม์

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

การถอดรหัสและการเข้ารหัสอธิบาย

เกี่ยวกับการถอดรหัสและการเข้ารหัส? มีสองวิธีในการดำเนินการเหล่านี้: ซอฟต์แวร์และฮาร์ดแวร์

คุณอาจคุ้นเคยกับแนวคิดเรื่องการเร่งความเร็วของฮาร์ดแวร์ กระบวนการนี้เป็นไปได้โดยการถอดรหัสและเข้ารหัสที่ติดตั้งในการ์ดกราฟิก NVIDIA ล่าสุด เช่นเดียวกับ CUDA คอร์

ดังนั้น คุณมีตัวเลือกอะไรบ้างเมื่อพูดถึงการเร่งความเร็วของฮาร์ดแวร์สำหรับการเข้ารหัสและการถอดรหัส? ต่อไปนี้เป็นตัวเลือกที่ได้รับความนิยมมากที่สุด:

  • 编译 OpenCV ด้วยการสนับสนุน CUDA: การ编译 OpenCV ด้วย CUDA จะปรับให้เหมาะสมทั้งการถอดรหัสและการคำนวณท่อที่ใช้ OpenCV โปรดทราบว่าคุณจะต้องเขียนใน C++ เนื่องจากวรッเปอร์ Python ไม่รองรับฟังก์ชันนี้ แต่ในกรณีที่ต้องการการถอดรหัสและการคำนวณตัวเลขด้วย GPU โดยไม่ต้องคัดลอกจากหน่วยความจำ CPU จะยังคงเป็นตัวเลือกที่ดีที่สุด
  • 编译 FFmpeg หรือ GStreamer ด้วยการสนับสนุน NVDEC/NVENC: ตัวเลือกอื่นคือการใช้การถอดรหัสและเข้ารหัสของ NVIDIA ที่รวมอยู่ในตัวติดตั้งแบบกำหนดเองของ FFmpeg และ Gstreamer อย่างไรก็ตาม เราแนะนำให้ใช้ FFmpeg หากเป็นไปได้ เนื่องจากต้องการการบำรุงรักษาน้อยกว่า นอกจากนี้ ห้องสมุดส่วนใหญ่ยังทำงานโดยใช้ FFmpeg ซึ่งหมายความว่าคุณจะเพิ่มประสิทธิภาพของห้องสมุดโดยอัตโนมัติเมื่อแทนที่ FFmpeg
  • ใช้เฟรมเวิร์กการประมวลผลวิดีโอของ NVIDIA: ตัวเลือกสุดท้ายคือการใช้_WRAPPER Python เพื่อถอดรหัสเฟรมโดยตรงไปยังเทนเซอร์ PyTorch บน GPU ซึ่งจะลบการคัดลอกพิเศษจาก CPU ไปยัง GPU

การตรวจจับใบหน้าและการเบลอ

โมเดลการตรวจจับวัตถุ (SSDs หรือ RetinaFace) เป็นตัวเลือกที่ได้รับความนิยมในการตรวจจับใบหน้า โซลูชันเหล่านี้ทำงานเพื่อค้นหาใบหน้ามนุษย์ในเฟรม และตาม ประสบการณ์ของเรา เรามักจะชอบโมเดลการตรวจจับใบหน้า Caffe และโมเดลการตรวจจับวัตถุของ TensorFlow เนื่องจากให้ผลลัพธ์ที่ดีที่สุด นอกจากนี้ ทั้งสองแบบมีให้ใช้งานผ่าน โมดูล dnn ของ OpenCV

ดังนั้น สิ่ง tiếp theoหลังจากตรวจจับใบหน้าแล้ว? ต่อไป ระบบที่ใช้ Python และ OpenCV จะแสดง กล่องขอบเขต และความมั่นใจในการตรวจจับ สุดท้าย อัลกอริทึมการเบลอจะถูกนำมาใช้กับพื้นที่ที่ถูกตัดออก

คุณสามารถสร้างซอฟต์แวร์ประมวลผลวิดีโอแบบเรียลไทม์ที่มีพลังของ AI ได้อย่างไร?

ไม่มีใครลับว่าการประมวลผลวิดีโอ โค้ดคและฮาร์ดแวร์ที่จำเป็นต้องใช้ในการประมวลผลเป็นเรื่องที่ซับซ้อน

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

ต่อไปนี้เป็นภาพรวมสั้นๆ ของสิ่งที่คุณต้องทำ:

  1. เริ่มต้นด้วยการปรับเปลี่ยนเครือข่ายประสาทเทียมของคุณเพื่อทำตามที่ต้องการ
  2. กำหนดค่าโครงสร้างพื้นฐานบนคลาวด์ของคุณเพื่อประมวลผลวิดีโอและปรับขนาดตามความจำเป็น
  3. สร้างซอฟต์แวร์ระดับบนเพื่อทำให้กระบวนการง่ายขึ้นและรวมกรณีการใช้งานเฉพาะ เช่น แอปพลิเคชันมือถือและแพนเนลเว็บหรือแอดมิน

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

Maksym มีความสนใจที่จะเพิ่มพูนความรู้และประสบการณ์ใหม่ๆ ในสาขา Data Science และ Machine Learning โดยเฉพาะอย่างยิ่งเขามีความสนใจในเทคโนโลยีที่ใช้ Deep Learning และการประยุกต์ใช้ในกรณีการใช้งานทางธุรกิจ