แนวคิดของเฟรมเวิร์ก

ก่อนที่จะใช้ MediaPipe Framework โปรดทำความคุ้นเคยกับแนวคิดต่อไปนี้

ข้อมูลพื้นฐาน

แพ็คเก็ต

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

กราฟ

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

โหนด

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

ยอดสตรีม

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

แพ็กเก็ตด้านข้าง

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

พอร์ตแพ็กเก็ต

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

ต้องมีพอร์ต ซึ่งหมายความว่าต้องทำการเชื่อมต่อเพื่อให้กราฟถูกต้อง หรือไม่บังคับ ซึ่งหมายความว่าอาจไม่มีการเชื่อมต่ออยู่

อินพุตและเอาต์พุต

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

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

ลักษณะรันไทม์

อายุการใช้งานของกราฟ

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

อายุการใช้งานของโหนด

วิธีการตลอดอายุการใช้งานหลัก 3 วิธีที่เฟรมเวิร์กจะเรียกบนโหนดมีดังนี้

  • เปิด: เรียก 1 ครั้งก่อนวิธีอื่นๆ เมื่อเรียกใช้ แพ็กเก็ตฝั่งอินพุตทั้งหมดที่โหนดต้องใช้จะพร้อมใช้งาน
  • กระบวนการ: มีการเรียกใช้หลายครั้งเมื่อมีอินพุตชุดใหม่ โดยเป็นไปตามนโยบายอินพุตของโหนด
  • ปิด: เรียกครั้งเดียวในตอนท้าย

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

นโยบายอินพุต

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

นอกจากนี้ยังมีนโยบายอื่นๆ ที่นำไปใช้ได้ โดยใช้คอมโพเนนต์อีกชนิดที่เรียกว่า InputStreamHandler

โปรดดูรายละเอียดเพิ่มเติมที่การซิงค์ข้อมูล

สตรีมแบบเรียลไทม์

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