โปรเจกต์โอเพนซอร์สใหม่แสดงให้เห็นว่านักพัฒนาสามารถสตรีมวิดีโอจากเว็บแคมแบบสดพร้อมความสามารถด้าน computer vision ไปยังเว็บเบราว์เซอร์โดยตรงได้อย่างไร โปรเจกต์ gocv-to-webrtc ผสมผสาน GoCV สำหรับการจับภาพจากกล้อง FFmpeg สำหรับการเข้ารหัสวิดีโอ และ Pion WebRTC สำหรับการส่งสื่อแบบเรียลไทม์ เพื่อสร้างรากฐานสำหรับแอปพลิเคชัน computer vision บนเบราว์เซอร์
โปรเจกต์นี้แก้ไขปัญหาทั่วไปในการพัฒนา computer vision คือ วิธีทำให้ผลลัพธ์การประมวลผลเข้าถึงได้ง่ายโดยไม่ต้องให้ผู้ใช้ติดตั้งซอฟต์แวร์เฉพาะทาง ด้วยการใช้ประโยชน์จากเทคโนโลยี WebRTC นักพัฒนาสามารถรันอัลกอริทึม computer vision ที่ใช้ทรัพยากรมากบนเซิร์ฟเวอร์ที่มีประสิทธิภาพสูง ขณะเดียวกันส่งผลลัพธ์ผ่านอินเทอร์เฟซเว็บที่เรียบง่าย
องค์ประกอบสถาปัตยกรรมทางเทคนิค
- ชั้นการจับภาพ: การเข้าถึงเว็บแคมผ่าน GoCV
- ชั้นการเข้ารหัส: การประมวลผล FFmpeg VP8 ผ่าน stdin/stdout pipes
- ชั้นการส่งข้อมูล: Pion WebRTC พร้อม TrackLocalStaticSample
- ชั้นไคลเอนต์: HTML5 RTCPeerConnection พร้อม STUN servers
ความสนใจของชุมชนในการรวม Object Detection
การสนทนาระหว่างนักพัฒนาเผยให้เห็นความสนใจอย่างมากในการขยายฟังก์ชันการสตรีมพื้นฐานด้วยฟีเจอร์ computer vision สมาชิกชุมชนหลายคนกำลังสำรวจวิธีการเพิ่ม object detection และความสามารถในการวางภาพซ้อนก่อนที่จะส่งสตรีมวิดีโอไปยังเบราว์เซอร์ แนวทางนี้จะช่วยให้สามารถสร้างแอปพลิเคชันอย่างการจดจำท่าทางแบบเรียลไทม์ การตรวจจับใบหน้า หรือระบบตรวจสอบอัตโนมัติที่ผู้ใช้สามารถเข้าถึงผ่านเว็บเบราว์เซอร์ใดก็ได้
การออกแบบแบบโมดูลาร์ช่วยให้นักพัฒนาสามารถแทรกการประมวลผล computer vision ระหว่างขั้นตอนการจับภาพจากกล้องและการเข้ารหัส ความยืดหยุ่นนี้หมายความว่าทีมงานสามารถทดลองกับอัลกอริทึมการตรวจจับที่แตกต่างกันในขณะที่ยังคงโครงสร้างพื้นฐานการสตรีมเดิมไว้
แนวทางการใช้งานทางเลือก
ชุมชนได้ระบุวิธีการหลายแบบในการสร้างระบบที่คล้ายกันนอกเหนือจากแนวทาง FFmpeg pipeline นักพัฒนาสามารถเลือกจากการรวม FFmpeg library โดยตรง เฟรมเวิร์ก GStreamer หรือการเข้ารหัส libvpx ขึ้นอยู่กับความต้องการเฉพาะและเทคโนโลยีสแต็กที่มีอยู่
มันเจ๋งมากที่คุณสามารถมีเซิร์ฟเวอร์ที่ทรงพลังทำงาน computer vision ที่เจ๋งๆ ทั้งหมดนี้ แต่จากนั้นก็มีไคลเอนต์ที่เรียบง่ายที่ทำแค่ WebRTC
การแยกสถาปัตยกรรมนี้มีคุณค่าเป็นพิเศษสำหรับงาน computer vision ที่ใช้ทรัพยากรมากซึ่งจะทำให้อุปกรณ์ไคลเอนต์ล้นหลาม โทรศัพท์มือถือและแท็บเล็ตสามารถแสดงสตรีมวิดีโอที่ประมวลผลแล้วโดยไม่ต้องรับภาระการคำนวณของการวิเคราะห์ภาพ
การกำหนดค่าวิดีโอเริ่มต้น
- ความละเอียด: 640x480 พิกเซล
- อัตราเฟรม: 30 fps
- การเข้ารหัส: VP8 codec ในรูปแบบ IVF
- อัตราบิต: 1 Mbps
- รูปแบบสี: BGR24 (ข้อมูลดิบที่นำเข้า)
ไปป์ไลน์ทางเทคนิคและข้อพิจารณาด้านประสิทธิภาพ
ระบบทำงานโดยการจับเฟรม BGR ดิบจากเว็บแคมผ่าน GoCV จากนั้นส่งข้อมูลนี้ไปยัง FFmpeg สำหรับการเข้ารหัส VP8 ในรูปแบบ IVF เฟรมที่เข้ารหัสแล้วจะเดินทางผ่านการเชื่อมต่อ WebRTC ไปยังไคลเอนต์เบราว์เซอร์ ซึ่งเอลิเมนต์วิดีโอ HTML5 มาตรฐานจะแสดงผลลัพธ์
ตัวเลือกการปรับแต่งประสิทธิภาพรวมถึงการปรับค่าความละเอียด อัตราเฟรม และบิตเรตการเข้ารหัสตามแบนด์วิดท์ที่มีอยู่และพลังการประมวลผล การกำหนดค่าเริ่มต้นสตรีมวิดีโอ 640x480 ที่ 30 เฟรมต่อวินาทีด้วยการเข้ารหัส 1 เมกะบิต แต่นักพัฒนาสามารถปรับเปลี่ยนพารามิเตอร์เหล่านี้สำหรับกรณีการใช้งานเฉพาะของตน
โปรเจกต์นี้แสดงถึงแนวโน้มที่เพิ่มขึ้นในการทำให้ computer vision เข้าถึงได้มากขึ้นผ่านเทคโนโลยีเว็บ เมื่อการสนับสนุน WebRTC ยังคงขยายตัวในอุปกรณ์และเบราว์เซอร์ต่างๆ แนวทางการสตรีมดังกล่าวอาจกลายเป็นมาตรฐานสำหรับการปรับใช้แอปพลิเคชันที่ใช้วิชันกับผู้ใช้ปลายทาง
อ้างอิง: gocv-to-webrtc