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

จากการทดสอบจริง พบว่าความเร็วในการรัน YOLOv5 ที่บน Raspberry Pi 4B หนึ่งเครื่องทำได้เพียง 4fps เมื่อกระจายไปยัง 4 โหนดแล้วเพิ่มขึ้นเป็น 16~17fps แบบ เชิงเส้น

ระบบประกอบด้วย Producer ที่สร้างเฟรม, Consumer ที่ทำหน้าที่ประมวลผล และ Gateway ที่รวบรวมผลลัพธ์และแสดงผล
Gateway สามารถสลับอินเทอร์เฟซได้อย่างอิสระเพื่อขยายไปยังหลายระบบ และ Redis ที่ทำหน้าที่เป็นโบรกเกอร์ (Broker) ตรงกลางก็ออกแบบให้ปรับแต่งเป็นโปรโตคอลอื่นได้เช่นกัน

คุณสมบัติหลัก

  • คำสั่ง edgeflow: ใช้คำสั่งเดียวเพื่อจัดการตั้งแต่ build image, push และ deploy ไปยังคลัสเตอร์ k3s ได้ในครั้งเดียว
  • ไปป์ไลน์ที่เข้าใจง่าย: สามารถประกอบไปป์ไลน์ได้อย่างตรงไปตรงมาผ่านไวยากรณ์ link().to()
  • การจัดการที่ยืดหยุ่น: จัดการ dependency แยกอิสระในแต่ละโหนดได้ และหากไม่มีการเปลี่ยนแปลง dependency ก็สามารถสะท้อนโค้ดไปยัง pod ที่กำลังรันอยู่ได้ทันทีโดยไม่ต้อง rebuild
  • การรับประกันลำดับ: เพื่อแก้ปัญหาลำดับเฟรมสลับกันระหว่างการประมวลผลแบบกระจาย จึงฝัง Jitter Buffer ไว้ใน Gateway
  • การทดสอบบนเครื่องโลคัล: แม้ไม่มี Kubernetes cluster ก็สามารถจำลองไปป์ไลน์ในสภาพแวดล้อมโลคัลด้วยรูปแบบ multi-process ได้

สถานะความคืบหน้า

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


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

รายละเอียดเพิ่มเติมหรือบทช่วยสอนแบบรวดเร็วสามารถดูได้จากลิงก์ด้านล่าง
Github: https://github.com/seolgugu/edgeflow

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น