หลังจากใช้เวลาหลายคืนในการทำงานกับรูปแบบการเข้ารหัสสี YUV ฉันก็พบว่ามีข้อมูลเกี่ยวกับรูปแบบที่น่าทึ่งนี้เพียงเล็กน้อยเท่านั้น อย่างไรก็ตาม รูปแบบนี้สามารถเป็นประโยชน์อย่างยิ่งสำหรับผู้ที่เกี่ยวข้องกับการสตรีมวิดีโอ P2P หรือการประมวลผลสตรีมวิดีโอด้วย AI
เมื่อมองดูครั้งแรก RGB และ YUV อาจดูเหมือนเป็นเพียงวิธีแสดงสีที่แตกต่างกัน แต่ภายใต้ความแตกต่างนี้ยังมีการต่อสู้ที่ยังคงดำเนินต่อไป ได้แก่ ความสะดวกเทียบกับประสิทธิภาพ ความแม่นยำเทียบกับประสิทธิภาพ การรับรู้ที่สมบูรณ์แบบเทียบกับการบีบอัดโดยไม่สูญเสียข้อมูลที่มองเห็นได้ เราอาจถือเอาว่า RGB เป็นราชาแห่งพื้นที่สีที่ไม่มีใครโต้แย้งได้ เพราะกล้อง หน้าจอ และเครือข่ายประสาทส่วนใหญ่ทำงานอยู่ในนั้น อย่างไรก็ตาม ในโลกของการสตรีมและการเข้ารหัสวิดีโอ YUV เป็นผู้นำโดยซ่อนตัวอยู่ภายใต้ชุดการแลกเปลี่ยนที่ซับซ้อนซึ่งช่วยให้เราสามารถรับชมวิดีโอได้โดยไม่เกิดความล่าช้า ประหยัดข้อมูลได้หลายกิกะไบต์ และเร่งการประมวลผลแบบเรียลไทม์
แต่จะเกิดอะไรขึ้นหากคุณต้องการเชื่อมโยงสองโลกนี้เข้าด้วยกัน โมเดล AI ที่ได้รับการฝึกบน RGB จัดการสตรีมวิดีโอใน YUV ได้อย่างไร เหตุใดโคเดกจึงลังเลที่จะทำงานกับ RGB และเป็นไปได้หรือไม่ที่จะบรรลุความสมดุลที่สมบูรณ์แบบระหว่างรูปแบบเหล่านี้ ที่นี่ ฉันจะช่วยให้คุณเจาะลึกว่าทำไม RGB และ YUV จึงเหมือนกับนักมวยสองคนจากรุ่นน้ำหนักที่แตกต่างกันที่ถูกบังคับให้มาพบกันในสังเวียนเดียวกันของการสตรีมวิดีโอและเทคโนโลยี AI
รูปแบบ RGB และ RGBA ค่อนข้างตรงไปตรงมาและใช้กันอย่างแพร่หลายในกราฟิกคอมพิวเตอร์ ดังนั้นเราจะไม่ลงลึกในพื้นฐานมากเกินไป กล่าวโดยสรุป เมื่อคอมพิวเตอร์ของคุณเรนเดอร์ภาพ คอมพิวเตอร์จะทำงานด้วยสามช่องสัญญาณ ได้แก่ สีแดง (R) , สีเขียว (G) และ สีน้ำเงิน (B) นี่คือลักษณะการทำงานของหน้าจอส่วนใหญ่
RGBA เพิ่มช่องสัญญาณเพิ่มเติม — อัลฟา (A) — ซึ่งควบคุมความโปร่งใส ทำให้มีประโยชน์อย่างยิ่งสำหรับกราฟิกบนเว็บและการออกแบบดิจิทัล RGB แสดงสีได้อย่างแม่นยำโดยไม่เกิดการบิดเบือน แต่มีข้อเสียสำคัญคือใช้พื้นที่มากเกินไป ตัวอย่างเช่น รูปภาพที่มีความละเอียด 1920 × 1080
ในรูปแบบ RGBA (ใช้ 1 ไบต์ต่อช่องสัญญาณ) ใช้พื้นที่: 1920×1080×4 = 8294400 bytes ≈ 8.2 MB
รูปแบบที่บีบอัด เช่น JPEG ช่วยลดขนาดไฟล์ แต่ในโลกของการสตรีมวิดีโอ P2P และการประมวลผลแบบเรียลไทม์ด้วย AI บนเครื่องของลูกค้า เช่น การจดจำวัตถุ การตรวจจับจุดสำคัญ และการแบ่งส่วน นี่ไม่ใช่ตัวเลือกที่เหมาะสม เราจำเป็นต้องส่งและวิเคราะห์ทุกเฟรมแบบเรียลไทม์ โดยไม่ทำให้เกิดอาตีแฟกต์การบีบอัดหรือสูญเสียรายละเอียดที่สำคัญ นั่นคือจุดที่ YUV เข้ามามีบทบาท โดยนำเสนอแนวทางที่ชาญฉลาดกว่าในการสร้างสมดุลระหว่างคุณภาพ ประสิทธิภาพ และประสิทธิภาพการทำงาน
ต่างจาก RGB ที่เก็บข้อมูลสีโดยตรง YUV จะแยกภาพออกเป็นองค์ประกอบลูมา (Y) และโครมา (U และ V) วิธีนี้ช่วยให้บีบอัดข้อมูลได้อย่างมีประสิทธิภาพโดยไม่สูญเสียคุณภาพอย่างมาก
Y (Luma, ความสว่าง) – แสดงความสว่างของพิกเซล โดยกำหนดว่าภาพจะสว่างหรือมืดเพียงใด โดยพื้นฐานแล้ว นี่คือภาพในโทนสีเทา (ขาวดำ) โดยคงรูปร่างและรายละเอียดทั้งหมดไว้
U และ V (Chroma, color) – จัดเก็บข้อมูลสีแต่มีความแม่นยำต่ำกว่า เนื่องจากดวงตาของมนุษย์รับรู้ความสว่างได้คมชัดกว่าความแม่นยำของสี กล่าวอย่างง่ายๆ ก็คือ ช่องสัญญาณเหล่านี้ทำหน้าที่เป็น “การเปลี่ยนแปลง” ความสว่างแบบสองมิติไปยังเฉดสีต่างๆ
การแยกนี้เป็นกุญแจสำคัญที่ทำให้ YUV มีประสิทธิผลอย่างมากในการบีบอัดวิดีโอ การสตรีมมิ่ง และการประมวลผลวิดีโอที่ใช้ AI
ข้อดีอย่างหนึ่งของ YUV ที่ไม่ชัดเจนแต่มีประสิทธิภาพสูงก็คือ ช่องสัญญาณหนึ่ง (Y) ของ YUV นั้นไม่ได้มีไว้สำหรับจัดเก็บสีเลย แต่กลับอธิบายสีได้อย่างชัดเจน
ดวงตาของมนุษย์รับรู้ภาพโดยใช้โฟโตรีเซพเตอร์สองประเภทในจอประสาทตา:
เซลล์รูปแท่ง (~120 ล้านเซลล์) – ไวต่อความสว่างและความคมชัด แต่ไม่สามารถตรวจจับสีได้ เซลล์รูปแท่งทำให้เราสามารถมองเห็นรูปร่างและรายละเอียดต่างๆ ได้แม้ในสภาพแสงน้อย
เซลล์รูปกรวย (~6 ล้านเซลล์) – มีหน้าที่รับรู้สี แต่มีจำนวนน้อยกว่าถึง 20 เท่า เซลล์รูปกรวยทำงานได้เฉพาะในสภาพแสงที่ดีเท่านั้น และมี 3 ประเภท ได้แก่ สีแดง สีเขียว และสีน้ำเงิน ( RGB )
เนื่องจากตัวรับแสงไม่สมดุล สมองของเราจึงให้ความสำคัญกับรูปร่างมากกว่าสี หากความสว่างหรือความคมชัดผิดเพี้ยน เราจะสังเกตเห็นได้ทันที อย่างไรก็ตาม การเปลี่ยนแปลงสีเพียงเล็กน้อยมักไม่ถูกสังเกตเห็น
นี่คือหลักการสำคัญของ YUV
ซึ่งหมายความว่า YUV ปฏิบัติต่อช่องสัญญาณของตนแตกต่างกันตามการรับรู้ของมนุษย์ ซึ่งแตกต่างจาก RGB ที่ช่องสัญญาณทั้งสามมีความสำคัญเท่าเทียมกัน เนื่องจากข้อมูลสี (U และ V) มีความสำคัญน้อยกว่า เราจึงลดปริมาณข้อมูลที่ส่งออกโดยไม่สูญเสียคุณภาพที่รับรู้ได้
นี่เป็นวิธีการทำงานของกลไก Chroma Subsampling โดยเฉพาะ — เพิ่มประสิทธิภาพการเข้ารหัสวิดีโอด้วยการบีบอัดข้อมูลสีแบบเลือกสรรในขณะที่ยังคงรักษาความสว่างไว้
การสุ่มตัวอย่างสี เป็นเทคนิคในการลดปริมาณข้อมูลสีในภาพ แทนที่จะเก็บสีไว้สำหรับทุกพิกเซล (เช่นใน RGB ) YUV จะลดความละเอียดของช่องสีในขณะที่ยังคงความสว่าง (รูปร่าง) ไว้
มีมาตรฐานอุตสาหกรรมหลายประการสำหรับการสุ่มตัวอย่างโครมา:
การสุ่มตัวอย่าง แบบ 4:2:2 – พิกเซลแต่ละคู่จะแบ่งปันข้อมูลสีร่วมกัน ตาแทบจะไม่สังเกตเห็นความแตกต่าง แต่ขนาดไฟล์จะลดลง 33% วิธีนี้ไม่ค่อยได้ใช้
การสุ่มตัวอย่างแบบ 4:2:0 – สีจะถูกเก็บไว้เพียงหนึ่งพิกเซลจากสี่พิกเซล ช่วยให้เกิดการบีบอัดข้อมูลสูงสุด
เหตุใด 4:2:0 จึงเป็นมาตรฐานหลัก?
รูปแบบนี้ช่วยลดขนาดข้อมูลลงครึ่งหนึ่งโดยไม่ทำให้คุณภาพของภาพลดลงอย่างเห็นได้ชัด นั่นคือเหตุผลที่รูปแบบนี้จึงเป็นมาตรฐานสำหรับบริการสตรีมมิ่งและแพลตฟอร์มวิดีโอเกือบทั้งหมด ตัวอย่างเช่น Microsoft Teams ส่งสัญญาณวิดีโอที่อัตรา 4:2:0 เนื่องจากให้สมดุลที่ดีที่สุดระหว่างคุณภาพและประสิทธิภาพของแบนด์วิดท์
ในการตั้งค่านี้ ค่าสีเดียวแสดงถึงสี่พิกเซล และดวงตาของมนุษย์ไม่ตรวจพบความแตกต่าง แม้จะซูมเข้าก็ตาม เนื่องจากความสว่าง (Y) ยังคงไม่เปลี่ยนแปลง
1920×1080×1.5 = 3110400 bytes ≈ 3.1 MB
บนเฟรมเดียว ส่งผลให้ขนาดข้อมูลลดลงมากกว่าสองเท่าเมื่อเทียบกับ RGBA โดยไม่สูญเสียคุณภาพที่เห็นได้ชัด!
รูปภาพด้านล่างแสดงให้เห็นว่าเฟรม/ภาพสุดท้ายมีลักษณะอย่างไรเมื่อใช้การสุ่มตัวอย่าง แบบ 4:2:0 ของโครมา โปรดสังเกตว่า U หนึ่งตัวอธิบาย Y สี่ตัวได้ ซึ่งหมายความว่าหน่วยความจำจะชนะ 4 เท่า!
ในโลกปัจจุบัน แอปพลิเคชัน AI สำหรับการประมวลผลวิดีโอแบบเรียลไทม์กำลังขยายตัวอย่างรวดเร็ว เครือข่ายประสาทเทียมไม่เพียงแต่ใช้สำหรับการวิเคราะห์กล้องวงจรปิดและการปรับปรุงคุณภาพสตรีมเท่านั้น แต่ยังใช้สำหรับงานที่ซับซ้อนกว่า เช่น เอฟเฟกต์เชิงสร้างสรรค์ การปรับเปลี่ยนรูปลักษณ์แบบเรียลไทม์ การจดจำวัตถุ และการติดตามการเคลื่อนไหว
ตัวอย่างเช่น เราได้พัฒนาระบบแต่งหน้าเสมือนจริงที่ทาลิปสติกและอายแชโดว์บนใบหน้าของบุคคลในวิดีโอแชท โดยทำได้อย่างสมจริงมากที่สุด ในงานดังกล่าว ความแม่นยำในรูปทรงและการเคลื่อนไหวมีความสำคัญอย่างยิ่ง ในขณะที่ข้อมูลสีมีความสำคัญรองลงมา นอกจากนี้ คุณยังสามารถฝึกโมเดลของคุณให้เข้าใจภาพโทนสีเทาเพื่อเพิ่มประสิทธิภาพได้ ในขณะเดียวกัน การได้รับภาพโทนสีเทาบน GPU จะมีประสิทธิภาพมากกว่ามากหากคุณใช้ YUV 4:2:0 เป็นอินพุต เนื่องจากคุณต้องตัดเฉพาะส่วนแรกของภาพเท่านั้นเพื่อให้ได้ช่องโทนสีเทาที่ได้
รูปร่างสำคัญมากกว่าสี
โมเดล AI เช่นเดียวกับระบบวิชันคอมพิวเตอร์อื่นๆ มุ่งเน้นที่โครงสร้าง รูปร่าง และขอบของวัตถุเป็นหลัก มากกว่าการสร้างสีที่แม่นยำ สิ่งนี้ใช้ได้กับการจดจำใบหน้า การติดตามท่าทาง การตรวจจับความผิดปกติ และเอฟเฟกต์ AR ตัวอย่างเช่น ในระบบการจดจำการเคลื่อนไหว โครงร่างพิกเซลของร่างกายมีความสำคัญมากกว่าโทนสีผิวมาก
ประสิทธิภาพเป็นสิ่งสำคัญ
สำหรับ AI แบบเรียลไทม์ เฟรมแต่ละเฟรมจะต้องได้รับการประมวลผลภายใน 20 ms
เพื่อรักษาอัตราเฟรมที่ราบรื่น ( 50–60 FPS
) ยิ่งเครือข่ายประสาทรับและประมวลผลเฟรมได้เร็วเท่าไร แอปพลิเคชันก็จะทำงานได้เป็นธรรมชาติและลื่นไหลมากขึ้นเท่านั้น
1920×1080
มีน้ำหนัก 8.2 MB
ซึ่งทำให้หน่วยความจำและพลังการประมวลผลทำงานหนักมากO(1)
ด้วยการส่งสีที่ความละเอียดต่ำกว่า ช่วยประหยัดทรัพยากรการคำนวณโดยไม่สูญเสียคุณภาพที่มองเห็นได้
การประมวลผล GPU ที่ได้รับการเพิ่มประสิทธิภาพ
GPU สมัยใหม่ได้รับการปรับให้เหมาะสมสำหรับการประมวลผล YUV เป็นอย่างดี ซึ่งหมายความว่าเราสามารถทำงานกับรูปภาพได้โดยไม่ต้องแปลงเป็น RGB ซึ่งจะช่วยลดการคำนวณที่ไม่จำเป็นและเพิ่มความเร็วในการประมวลผล
การประหยัดแบนด์วิธและหน่วยความจำ
การลดขนาดข้อมูลเป็นสิ่งสำคัญสำหรับการส่งและประมวลผลวิดีโอแบบเรียลไทม์:
พูดตรงๆ ว่า RGB ดูเหมือนจะเป็นตัวเลือกที่ชัดเจน เพราะเป็นมาตรฐานในกล้อง หน้าจอ และกราฟิกคอมพิวเตอร์ แต่เมื่อต้องใช้งานวิดีโอสตรีมมิ่งในโลกแห่งความเป็นจริงและการผสานรวม AI แล้ว RGB กลับกลายเป็น ไดโนเสาร์ที่เชื่องช้า จากนั้น YUV ก็เข้ามาแทนที่ โดยให้ความสมดุลที่สมบูรณ์แบบระหว่างคุณภาพ ความเร็ว และประสิทธิภาพของข้อมูล ระบบจัดเก็บข้อมูลอันชาญฉลาด (แยกความสว่างออกจากสีที่บีบอัด) ช่วยให้สามารถทำสิ่งต่างๆ ที่อาจเป็นฝันร้ายในการประมวลผลใน RGB ได้
RGB นั้นยอดเยี่ยมมาก แต่ไม่ได้เป็นเช่นนั้นเมื่อต้องเกี่ยวข้องกับประสิทธิภาพแบบเรียลไทม์และ AI สำหรับการสตรีมวิดีโอ YUV ถือเป็นเครื่องมือสำคัญและช่วยขับเคลื่อนโซลูชันหลักๆ มาหลายปีแล้ว
ดังนั้น หากคุณยังคิดว่า RGB คือราชา ถึงเวลาต้องคิดใหม่เสียที เพราะรูปแบบวิดีโอต่างๆ ต่างก็เล่นตามกฎเกณฑ์ของตนเองมานานแล้ว