AV1@Scale: Film Grain Synthesis का जागरण
(netflixtechblog.com)- Netflix ने AV1 की Film Grain Synthesis(FGS) स्ट्रीम को वैश्विक स्तर पर विस्तारित किया है, ताकि फिल्म grain की टेक्सचर बनी रहे और स्ट्रीमिंग डेटा उपयोग कम हो
- FGS grain को ज्यों-का-त्यों compress नहीं करता, बल्कि हटाए गए वीडियो और grain model parameters भेजता है, जिन्हें playback के समय ब्लॉक स्तर पर फिर से synthesize किया जाता है
- They Cloned Tyrone उदाहरण में सामान्य AV1 के 8274 kbps की तुलना में AV1 FGS 2804 kbps पर चला, यानी भारी film grain वाले दृश्यों में लगभग 66% bitrate कमी
- लगभग 300 टाइटलों के मूल्यांकन में 1080p या उससे ऊपर पर औसत bitrate 36% कम हुआ, लेकिन 1080p से नीचे downscaling के कारण noise घटने से प्रभाव लगभग 10% तक सीमित रहा
- rollout से पहले A/B टेस्ट में शुरुआती bitrate 24%, औसत bitrate 31.6%, rebuffering 10% और startup delay 10% कम देखे गए; समर्थित डिवाइसों पर मार्च 2025 से इसका बड़े पैमाने पर विस्तार जारी है
Netflix का AV1 Film Grain Synthesis विस्तार
- Netflix ने हाल ही में AV1 Film Grain Synthesis(FGS) स्ट्रीम को दुनिया भर के सदस्यों तक विस्तारित किया है
- FGS AV1 मानक की शुरुआत से शामिल था, लेकिन Netflix के 2021 AV1 codec शुरुआती लॉन्च के समय यह केवल सीमित संख्या के टाइटलों में सक्षम था
- इस विस्तार का उद्देश्य film grain की कलात्मक अखंडता को बनाए रखते हुए डेटा दक्षता बढ़ाना है
- फिल्म grain क्लासिक फिल्मों की टेक्सचर, यथार्थ और nostalgia का हिस्सा है, लेकिन इसकी randomness बहुत अधिक होने के कारण पारंपरिक compression में file size घटाने और grain बचाए रखने के बीच समझौता करना पड़ता था
- डिजिटल वीडियो में भी camera sensor noise या post-production में जानबूझकर जोड़ा गया grain हो सकता है, जिससे compression और कठिन हो जाता है
AV1 FGS grain को कैसे संभालता है
- AV1 FGS grain को सीधे compress करने के बजाय, मूल वीडियो से grain हटाकर पहले denoised video encode करता है
- grain के आकार और तीव्रता को model करने वाले parameters को compressed video data के साथ भेजा जाता है, और playback के दौरान उन्हें फिर से synthesize किया जाता है
- AV1 मानक grain हटाने की विधि को निर्धारित नहीं करता, इसलिए उपयोगकर्ता अपनी पसंद का denoiser चुन सकता है
- playback चरण में उपभोक्ता डिवाइसों पर सुचारु रूप से चलने के लिए optimize किए गए block-based method से film grain को पुनर्स्थापित किया जाता है
- अधिक जानकारी मूल शोधपत्र में देखी जा सकती है
grain pattern और intensity model
-
Film Grain Pattern
- auto-regressive model फिल्म grain pattern की प्रतिकृति बनाता है
- मुख्य parameters AR coefficients हैं, जिन्हें source video और denoised video के बीच residual से अनुमानित किया जा सकता है
- यह model grain samples के बीच spatial correlation को पकड़कर मूल noise characteristics बनाए रखता है
- AR coefficients
{ai}को समायोजित करके grain का आकार अधिक खुरदुरा या अधिक महीन बनाया जा सकता है - इन्हीं coefficients से 64x64 noise template बनाया जाता है, और playback के दौरान उससे यादृच्छिक 32x32 patches निकालकर decoded video में जोड़े जाते हैं
-
Film Grain Intensity
- scaling function brightness की स्थितियों के अनुसार grain की appearance को नियंत्रित करता है
- यह function encoding के दौरान अनुमानित होता है और pixel values तथा noise intensity के संबंध को piecewise linear function के रूप में model करता है
- वीडियो की brightness और color के अनुसार grain intensity समायोजित करके मूल वीडियो के अधिक निकट appearance पुनर्निर्मित की जाती है
image quality सुधार और bitrate बचत
- Netflix ने They Cloned Tyrone के एक frame के उदाहरण से सामान्य AV1 और AV1 FGS की तुलना की
- सामान्य AV1 8274 kbps पर था, जबकि AV1 FGS 2804 kbps पर, यानी लगभग 66% bitrate कमी
- भारी film grain वाले इस उदाहरण में सामान्य AV1 में DCT-जैसे pattern वाला विकृत noise दिख सकता है, जबकि FGS संस्करण कम bitrate पर भी film grain की अखंडता बनाए रखता है
- synthesized noise compression artifacts को mask कर सकता है, जिससे दृश्य अनुभव बेहतर हो सकता है
- सामान्य AV1 stream और synthesized noise के बिना AV1 FGS stream में compression artifacts दिखाई देते हैं
- grain synthesis लागू AV1 FGS stream मानव दृश्य प्रणाली के contrast masking के जरिए कुछ compression artifacts छिपा देता है
quality measurement की सीमाएँ और catalog evaluation
- Netflix के पास अभी film grain synthesis के लिए समर्पित quality model नहीं है
- क्योंकि source video और decoded video का noise अलग-अलग pixel positions पर दिखता है, PSNR या VMAF जैसे pixel-level comparison तरीके गुणवत्ता स्कोर को कम दिखा सकते हैं
- आंतरिक मूल्यांकन में दृश्य गुणवत्ता सुधार और तकनीकी मूल्य की पुष्टि हुई
- अलग-अलग grain स्तर वाले लगभग 300 titles चुनकर AV1 FGS के प्रभाव का मूल्यांकन किया गया
- 1080p या उससे अधिक resolution पर औसत bitrate 36% कम हुआ
- 1080p से कम resolution पर bitrate कमी लगभग 10% रही
- कम resolution पर प्रभाव सीमित रहने का संभावित कारण यह है कि downscaling के दौरान noise filter हो जाता है
- FGS coding tool चालू होने पर bitstream में syntax overhead लगातार जुड़ता रहता है
A/B टेस्ट में दिखा streaming प्रभाव
- rollout से पहले Netflix ने A/B टेस्ट के जरिए AV1 FGS सक्षम करने के streaming पर समग्र प्रभाव का आकलन किया
- टेस्ट परिणाम अधिक smooth और stable QoE की ओर इशारा करते हैं
- देखे गए सुधार इस प्रकार थे
- playback शुरू होने पर bitrate 24% कम हुई और औसत bitrate 31.6% कम हुई, जिससे network bandwidth की मांग और download stream storage की आवश्यकता घटी
- playback failure rate लगभग 3% कम हुआ
- rebuffering की संख्या 10% कम हुई और rebuffering duration 5% कम हुआ
- startup delay 10% कम हुआ, संभव है कि कम bitrate के कारण डिवाइस target buffer level तक अधिक तेजी से पहुँचे
- स्पष्ट bitrate drops 10% कम हुए और उपयोगकर्ताओं द्वारा playback position समायोजित करने में बिताया गया समय भी 10% कम हुआ
- 4K-सक्षम डिवाइसों पर viewing time का लगभग 0.7% हिस्सा 1080p या उससे नीचे से 2160p में शिफ्ट हुआ
- resolution में यह बदलाव switching points पर bitrate घटने के कारण हुआ, जिससे session के दौरान highest resolution तक पहुँचना आसान हो गया
rollout की स्थिति और आगे की योजना
- Netflix मार्च 2025 से FGS का बड़े पैमाने पर rollout कर रहा है, और अभी कई उपयोगकर्ता समर्थित डिवाइसों पर FGS-enabled stream देख सकते हैं
- FGS stream अनुभव के उदाहरण के तौर पर The Hot Spot, Kung Fu Cult Master, Initial D, God of Gamblers II, Baahubali 2: The Conclusion, Dept. Q दिए गए हैं
- कुछ titles में नए FGS stream का सीधा अनुभव लेने के लिए settings menu में HDR बंद करना होगा
- अगली पोस्ट में Netflix के video encoding pipeline में इस काम को कैसे लागू किया गया और उससे क्या insights मिले, इस पर चर्चा की जाएगी
1 टिप्पणियां
Hacker News की टिप्पणियाँ
यह बात छूट रही है कि synthesized noise शायद original noise में मौजूद detail और information को समेट न पाए
असली noise वाली high-quality encoding देखें तो static image से video में जाने पर resolution हैरान कर देने वाली हद तक बढ़ जाता है। noise ऐसा दिखता है जैसे signal के ऊपर नाच रहा हो, और 24fps पर उसके पीछे का signal फिर भी साफ़ दिखता है
इसके उलट, अगर static frame के स्तर पर noise हटाकर फिर “aesthetically” मिलता-जुलता artificial noise वापस चढ़ा दिया जाए, तो original detail recover नहीं हो सकती और 24fps पर देखने पर यह मूल रूप से ज्यादा धुंधला हो जाता है। पुरानी, बहुत noise वाली फिल्मों में detail का फर्क 2x तक हो सकता है
अगर H.265 या AV1 motion को ध्यान में रखते हुए आगे-पीछे के कई frames को साथ देखकर “denoised” frame बनाते हैं, तो सिद्धांततः वे time axis पर फैले पूरे detail के signal को खोजकर encode कर सकते हैं, लेकिन असल में वे ऐसा करते हैं या नहीं, पता नहीं। अगर मैं गलत हूँ तो जानना चाहूँगा
मुख्य बात यह है कि denoising और synthesis की तुलना static images से नहीं करनी चाहिए। detail फेंकी जा रही है या बचाई जा रही है, यह असली videos को side-by-side compare करके देखना चाहिए। noise सिर्फ noise नहीं, detail भी है
aesthetic angle से देखें तो AV1 का synthesized grain original video के grain particle size को ध्यान में नहीं रखता लगता। इसलिए पुरानी film के बड़े silver halide crystals से आने वाला मोटा grain synthesis में fine grain जैसा दिख सकता है और अटपटा लग सकता है। अच्छा film denoiser इसे कम कर सकता है
साथ ही यह film के अलग-अलग color components को ठीक से model नहीं करता, लेकिन कहा जाता है कि Netflix के video sources अक्सर शुरू से ही chroma-subsampled होते हैं, इसलिए यह बड़ी समस्या नहीं है: https://norkin.org/pdf/DCC_2018_AV1_film_grain.pdf
इस field के बारे में बस हल्का-फुल्का पढ़ा है, इसलिए गलत भी हो सकता हूँ
temporal aspect समझाने के लिए traditional film projector को याद करें। हर frame के बीच बहुत थोड़े समय के लिए आप पूरी तरह अंधेरा देखते हैं। उस अंधेरे को “noise” भी कहा जा सकता है, और अगर आप उसी क्षण पर टिक जाएँ तो original signal बिल्कुल नहीं दिखेगा
लेकिन हमारा visual system कुछ हद तक temporal averaging करता है, इसलिए वह flicker हमें लगभग महसूस नहीं होता (https://en.wikipedia.org/wiki/Flicker_fusion_threshold). noise और grain भी शायद इसी तरह perceive होते हैं, और stable signal/image हिस्सों की तुलना में कम prominent लगते हैं
जैसे astrophotographers noise वाली images को stack करके बेहतर signal-to-noise ratio वाली image पाते हैं, मुझे लगता है brain भी कुछ हद तक ऐसा ही करता है। इसका मतलब यह नहीं कि वह nonexistent detail hallucinate कर रहा है, बल्कि recorded noise समय के साथ average की तरफ लौटता है और वह average actual signal को ज्यादा स्पष्ट दिखाता है। बेशक systematic/non-random noise की वजह से यह perfect नहीं होता, लेकिन आम तौर पर कम अहम होता है
जो denoising algorithms केवल individual frames process करते हैं, उनके पास यह context नहीं होता, इसलिए वे detail खो देते हैं या guess करके compensate करने की कोशिश करते हैं। AV1 कोई specific algorithm force नहीं करता, इसलिए सिद्धांततः smart algorithm temporal context का इस्तेमाल करके extra detail preserve कर सकता है
कुछ static frames का average निकालें तो जो signal बदलता नहीं वह बना रहता है और random noise cancel हो जाता है, जिससे signal-to-noise ratio बेहतर होता है। noise itself को preserve करना useful नहीं है
जो effect दिख रहा है वह original grain behavior के लिए aesthetic preference हो सकता है, या फिर smoothing/low-pass filtering जैसे strong compression artifacts वाले low-bandwidth content की तुलना पूरी detail बचाए हुए high-bandwidth version से करने पर पैदा हुआ हो सकता है। यह ऊपर चढ़े grain से अलग बात है
शोर जोड़ने की अहमियत पर दार्शनिक तौर पर बहस हो सकती है, लेकिन यहां दिए उदाहरण की समस्या यह है कि noise removal की प्रक्रिया सब कुछ जरूरत से ज्यादा धुंधला कर देती है, इसलिए noise-removed वर्जन और synthesized grain वाली image, दोनों ही original से साफ तौर पर कम sharp दिखते हैं
grain खुद भी बहुत basic noise जैसा दिखता है, असली film grain जैसा नहीं
नतीजतन original grain बड़े क्षेत्र में “फैलकर” मटमैला दिखता है, और sharp grain को encode करने की कोशिश में असली scene की sharpness भी खो जाती है
bandwidth-limited streaming में film grain synthesis समझ में आता है। हालांकि मैं इस बात से सहमत हूं कि उदाहरण में synthesized grain ज्यादा grain जैसा नहीं दिखता। और noise removal की मात्रा और तरीके के आधार पर scene details धुंधली हो सकती हैं
अच्छा होगा अगर film simulation को on/off करने का विकल्प दिया जाए
मेरी पसंदीदा फिल्मों में से एक The Holdovers ने film simulation बहुत अच्छे से किया था। उसकी कहानी 70s में set है, इसलिए वह उस दौर की फिल्मों जैसी दिखने की कोशिश करती है
मेरी नजर में यह शानदार था, लेकिन असली film enthusiasts शायद कई ऐसी चीजें पकड़ लेंगे जो accurate नहीं हैं
निकट भविष्य में Netflix client पर ही कुछ post-production effects process कर सकता है। जैसे color vision deficiency हो तो उसके हिसाब का mode इस्तेमाल करें, और fake grain पसंद न हो तो उसे बंद कर दें
कुछ बातों का ध्यान रखना चाहिए
still frames, video quality का आकलन करने का बहुत अच्छा तरीका नहीं हैं
सैद्धांतिक रूप से perfect[1] noise removal filter भी हमेशा original source से कम detailed लगेगा। क्योंकि brain/eye system धुंधली image की तुलना में noisy image में ज्यादा details बना देता है
[1] यहां perfect का मतलब है कि non-grain details को 100% preserve करना, यह नहीं कि noise की वजह से खो चुकी details को जादुई तरीके से वापस ला देना
bonus के तौर पर, कई viewers इसे बंद करने का option मिलने का स्वागत करेंगे
यहां असली बात “large-scale deployment” वाला हिस्सा है। film grain synthesis सामान्य AV1 encoders में पहले से कुछ समय से मौजूद रहा है, लेकिन समस्याओं से बचने के लिए कुछ हद तक manual tuning की जरूरत पड़ती थी
इसलिए production environments में इसे केवल बहुत सीमित catalog या खास तौर पर महत्वपूर्ण titles के लिए इस्तेमाल किया जाता था। यहां यह विस्तार से नहीं बताया गया कि उन्होंने उस समस्या को कैसे पार किया, लेकिन इसका ज्यादा व्यापक deployment स्वागतयोग्य है
grain से नफरत करने वालों की बात करें तो, हर चीज में स्वाभाविक रूप से कुछ न कुछ noise या grain होता है। सबसे अच्छे digital sensors में भी, और यहां तक कि आंखों में भी
इसका उपयोग सिर्फ aesthetic effect से ज्यादा है। यह perceived sharpness बढ़ाता है, और color banding या compression artifacts जैसी खामियों को छिपाने की प्रवृत्ति रखता है
इसका मतलब यह नहीं कि हर तरह का noise और grain अच्छा है। वह तकनीकी सीमाओं की वजह से unavoidable हो सकता है, खराब creative choice का नतीजा हो सकता है, और distracting भी हो सकता है
लेकिन विकल्प के तौर पर हर चीज पर noise removal लगा देना मुझे कहीं ज्यादा खराब लगता है। आजकल कई cameras default तौर पर ऐसा करते हैं, और मेरी नजर में noise removal से पैदा होने वाली smoothing अक्सर अवास्तविक लगती है और कहीं ज्यादा खटकती है
“ग्रेन = यथार्थवाद” वाली बात समझ नहीं आती। मेरी असली आँखों में कोई ग्रेन नहीं है
हालांकि मैं मानता हूँ कि ग्रेन एक कलात्मक टूल के रूप में भूमिका निभाता है, इसलिए यह तकनीक अपने-आप में अब भी दिलचस्प है
आसपास देखें तो लगभग हर सतह पर किसी-न-किसी रूप में महीन texture होता है और वह visually uniform नहीं होती। जब यह वीडियो में रिकॉर्ड होता है, तो camera optics, limited resolution और compression smoothing की वजह से महीन texture कम हो जाता है। Film grain खोए हुए high-frequency visual stimuli का कुछ हिस्सा देता है
हमारी आँखें और दिमाग ऐसे high-frequency stimuli पसंद करते हैं, और इस बात को लेकर बहुत सख्त नहीं होते कि मूल दृश्य का ठीक वही noise pattern दोहराया गया है या नहीं। इसलिए H.265 वीडियो बनाने वाले x265 encoder में grain synthesis नहीं है, लेकिन psy-rd parameter है। यह कुछ ऐसा है कि “compressed video को original जितना ‘energy’ वाला दिखाओ, भले ही वह energy ठीक उसी जगह न हो”, और psy-rdoq कुछ ऐसा है कि “कुल मिलाकर higher energy को preference दो”
ऐसे parameters को adjust करके, ज्यादा data store किए बिना भी compressed video को बेहतर दिखाया जा सकता है
अच्छी बात है कि हमारी आँखें camera से कहीं ज्यादा sensitive होती हैं। लेकिन यहाँ “realism” उस दौर की technology से capture किए गए तरीके से आता है। यह gramophone noise या CRT signal के धुंधला होने के तरीके से अलग नहीं है। यह उस technology के बारे में “real” है जिसे filmmaker ने इस्तेमाल किया, और उस तरीके के बारे में जिसमें वे जानते थे कि audience फिल्म देखेगी
जैसे Van Gogh के brush strokes उनकी painting के लिए real थे। कोई oil painting को sandpaper से घिसकर सपाट नहीं करना चाहेगा। क्योंकि वही original medium की reality है। इसलिए film के digital print में भी original की reality को जितना हो सके बचाए रखना चाहेंगे
किसी topic के बारे में बहुत जानने पर आप उस चीज का काफी history पढ़ पाते हैं, और इससे emotion भी बदलता है
Buster Keaton की slapstick देखते हुए साँस रोककर खिलखिलाने वाला बच्चा, और यह जानने वाला film critic कि कौन-सी film और camera इस्तेमाल हुए, scene की abstraction क्या मतलब रखती है, Keaton के costume का fabric कैसा है—दोनों एक ही medium को लेकर अलग-अलग subjective aesthetic experience करेंगे
Subjective aesthetic taste cognition के दायरे में है। मानव brain पर mapped एक formal theory of intelligence की जरूरत है, और ऐसे subjective phenomena आखिर में personalized data processing और initial conditions पर आकर टिकते हैं
साफ cel animation के contrast में film grain लोगों के लिए suspension of disbelief आसान बना सकता है। क्योंकि उन्होंने सीखा है कि grain न होना unreal animation, किसी खास medium, CGI से जुड़ा है। Home video और news वगैरह में grain और low quality थी, इसलिए grain का “real” से correlation बन गया
मेरी नजर में इससे ज्यादा गहरी बात नहीं है। हम अपने दौर की उपज हैं। 40 साल बाद medium बदल जाएगा और film grain surrealism से जुड़ सकता है, या वह मूल रूप से noise है इसलिए पूरी तरह हटाया भी जा सकता है
इसके पीछे की visual psychology मुझे ठीक से नहीं पता। शायद यह compression से धुल जाने वाली high frequencies जोड़ता है, या किसी तरह के dithering जैसा काम करता है
आँखों की बात करें तो quantum physics के हिसाब से आँखों में भी grain है मानना सही होगा। बस brain उसे filter कर देता है, इसलिए हम उसे perceive नहीं करते। यह film grain के साथ कैसे interact करता है, यह मुझे ठीक से नहीं पता
पुराने glass makers शायद इस बात से जबरदस्त मोहित होते कि अब इतने uniform और बड़े glass panes बनाए जा सकते हैं, लेकिन हम उनकी मजबूरी में अपनाई गई compromise को familiarity के कारण imitate कर रहे हैं
“classic movies देखते समय film grain की subtle movement हर scene में authenticity और nostalgia जोड़ती है” वाली बात मेरे हिसाब से सिर्फ visual noise जोड़ती है, जो असली scene detail को ढकता है
nostalgia पुराने actors या पहली बार देखने की पुरानी याद जैसे ज्यादा prominent visual cues से भी जुड़ सकता है
“यह film के realism में योगदान देता है” वाली बात भी उलटी है, क्योंकि reality में grain नहीं होता
फिर भी खुशी है कि AV1 लगातार बेहतर हो रहा है और visual garbage encode करने में bitrate बर्बाद करने के बजाय algorithmic replacement mechanism रखता है। इससे इसे बंद करना भी आसान होगा
अगर film grain director के vision का हिस्सा है, तो यह scene के पीछे dramatic non-diegetic music डालने के choice जितना ही valid है। वह बहुत inauthentic है, लेकिन emotions जगाने में बहुत effective है, और art का उद्देश्य यही है
cinematographer Steve Yedlin इसे audience की आँखों को “पकड़ने” के लिए कुछ देने जैसा बताते हैं
Mobile phone calls में AMR-WB codec nominally 50Hz~7000Hz capture करता है। लेकिन यह केवल selectable highest bitrate, 23.85Kbps, पर ही होता है
सबसे common 12.65Kbps में यह सिर्फ 6400Hz तक रखता है, और 6400~7000Hz को lower frequencies और noise से synthesize करता है। क्योंकि बिना noise के बजाय noise होना सुनने में बेहतर लगता है
Film grain खत्म हो जाना चाहिए। उसका दौर बीत चुका है। Sepia photos और 16fps silent films को 24fps पर चलाना भी पहले ही मर चुका है, अगली बारी film grain की है
Rochester का Eastman Business Park भी गिरा दिया गया
और YouTube videos में dust और scratches डालना भी कृपया बंद करें
यह बात थोड़ी खीझ दिलाती है कि वीडियो पहले शूट किया जाता है, फिर post-production में noise हटाया जाता है, फिर दोबारा noise डाला जाता है, encoding में फिर noise हटाया जाता है, और decoding में फिर से noise डाला जाता है
नकली lighting, नकली shadows, नकली sky वगैरह
अब सब कुछ नकली है। ऐसी तकनीक चाहिए जो original film scans पर काम करे। अच्छा होगा अगर यह detail loss के पहले चरण, यानी JPEG compression तक न करे
motion detection, key frames, delta frames ठीक हैं, लेकिन lossless video होना चाहिए। जाहिर है, इसे Blu-ray पर रखना है; streaming की मुझे खास परवाह नहीं