新一代图片编解码技术在淘宝的应用及落地
本文回顧淘寶圖片發(fā)展的歷史,闡述了新一代圖像編解碼格式AVIF在淘寶業(yè)務場景中的應用及落地方案,節(jié)省流量,為用戶提供更好的看圖體驗。
背景
淘寶圖片空間下行鏈路承載著集團圖片的訪問請求,包括手淘、飛豬、閑魚等業(yè)務場景,核心工作在于提升用戶訪問體驗,在圖片質(zhì)量不降低的情況下降低訪問帶寬。常態(tài)下CDN側(cè)千萬級別?QPS(每秒請求數(shù))圖片訪問,未命中時的回源量也在百萬級別,通過引入新的編碼技術(shù),可大幅降低訪問帶寬,節(jié)省流量成本,同時體積的減小也能帶來訪問提速,提升用戶看圖體驗。
淘寶圖片空間下行鏈路架構(gòu)
淘寶圖片訪問模型如圖1所示,用戶發(fā)起請求,在CDN(content delivery network,用于圖片緩存)緩存未命中的情況下,請求回源到源站,源站從OSS(object storage service)存儲上拉取商品原圖,按照用于請求格式進行實時處理(包含解碼、縮放、編碼等過程,RT < 100ms)后返回,常態(tài)下CDN命中率約為95%,此時用戶訪問的RT小于20ms。
由于訪問端(PC、手機)及場景(首頁、詳情頁)的多樣性,相同的圖片存在多種尺寸、格式,如淘寶首頁訪問的圖片尺寸相對較小,而詳情頁尺寸較大,通過在圖片源站側(cè)進行實時計算(本質(zhì)上是計算換存儲的方式),支撐相同圖片內(nèi)容的多種格式訪問。
圖1:圖片空間下行鏈路架構(gòu)
回顧過去的工作,我們對淘寶圖片下行處理做了大量的優(yōu)化:
2018年,通過引入FPGA異構(gòu)計算,HEVC關(guān)鍵幀圖片編碼格式開始在淘系大規(guī)模商用,相比WEBP編碼格式,降低帶寬約30%,相比JPEG降低超50%,采用高密度存儲、異構(gòu)計算技術(shù)的新集群規(guī)模只有老集群的十分之一,高密度存儲、異構(gòu)計算分別使單位存儲、計算成本降低超80%;
2019-2020年,圖片空間FPGA集群極致優(yōu)化,通過將JPEG解碼、PNG解碼、高質(zhì)量SCALER、WEBP編碼 Offload至FPGA,同時利用Nginx多worker負載調(diào)配實現(xiàn)FPGA板卡IP的負載均衡,單機性能由2000提升至5500 QPS,在保證圖片質(zhì)量的情況下,計算成本降低超60%,同時處理耗時大幅降低;
2020年,FPGA集群容器虛擬化,通過設備虛擬化技術(shù),采用設備直通方式實現(xiàn)PCIe設備(FPGA板卡)的虛擬化。接入集團云原生應用統(tǒng)一基礎設施ASI(Alibaba Serverless infrastructure),可根據(jù)業(yè)務流量快速調(diào)整不同服務集群的比例,實現(xiàn)FPGA服務間的快速擴縮容。最終業(yè)務部署至ASI pouch集群,為業(yè)務的靈活部署及調(diào)度提供了可能。
基于上述工作的積累,我們開始尋求在壓縮率及用戶體驗上更進一步的方案,新一代視頻圖像編碼技術(shù)進入項目組視野。
新一代圖片編解碼技術(shù)
???技術(shù)選型
以Google為首的多家公司成立的AOM(Alliance for Open Media,開放媒體聯(lián)盟)組織,制訂了一套替代HEVC技術(shù)的免費開放視頻編碼標準AV1(AOMedia Video 1)。隨著18年AV1格式的定稿,其圖片格式AVIF在18年12月份由Netflix推出,2020年8月chrome及隨后的Firefox 86版本已支持AVIF,即將推出的Android 12也將原生支持其解碼顯示。鑒于其以下特點,我們選擇AVIF作為下一代圖片格式,進一步降低帶寬,提升用戶體驗。
高壓縮:壓縮率相比heif能提升25%-30%(通過測試,相同質(zhì)量下,AV1相比線上HEIF壓縮收益超30%);
互聯(lián)網(wǎng)生態(tài)較好:netflix內(nèi)容、chrome平臺均已開始支持,android也開始支持AV1/AVIF解碼,mac M1開始支持AV1視頻解碼,不僅端側(cè)可支持,web端也可將圖片格式由webp升級至AVIF;
專利free。
進行圖片壓縮率測試,結(jié)果如圖2所示,原圖為無損編碼格式,分別對比不同PSNR下VVC、AV1不同工具以及手淘目前在用的HEIF格式,考慮到PSNR高于40dB時編碼后的圖像質(zhì)量非常接近原始圖像,我們選取39dB和41dB(線上平均為41-42dB)計算壓縮率指標,相比HEIC格式,AV1的壓縮率提升約26%-32%。
圖2:不同格式壓縮率測試
圖3:壓縮率對比
圖4:瀏覽器對AVIF的支持情況(綠色表示已支持)
除上述特性外,AVIF能支持動圖、PQ/HLG等高動態(tài)EOTF場景(兼容高亮度高動態(tài)顯示器)、BT.2020廣色域、10bit/12bit顯示、alpha/depth圖,為后續(xù)的場景效果擴展提供便捷。
???技術(shù)特點
高壓縮收益帶來的是計算復雜度的提升,AVIF使用AV1關(guān)鍵幀編碼技術(shù),通過幀內(nèi)預測去除圖像的空間冗余以提升壓縮率。包括方向預測的粒度進一步升級,而非僅僅是方向性的預測,同時納入了梯度和相關(guān)性,亮度的一致性和色度也得到充分利用,主要包括以下技術(shù)特點:
幀內(nèi)預測方向的增強
為了在方向紋理中實現(xiàn)更多種類的空間冗余,在AV1中,將方向幀內(nèi)模式擴展到更具精細粒度的角度集。將最初的VP9幀內(nèi)編碼的8個角度設為名義角度,基于這些角度引入步長為3度的精細角度微調(diào),即預測角度由名義內(nèi)角度加上角度增量表示,該角度以-3?3的倍數(shù)為步長。為了以通用方式在AV1中實現(xiàn)定向預測模式,這48個擴展模式由統(tǒng)一的定向預測器實現(xiàn),預測器將每個像素鏈接到像素邊緣的一個參考像素位置,并通過2 tap的雙線性插值對參考像素進行插值,最終AV1幀內(nèi)編碼共啟用了56個定向內(nèi)部模式(HEVC幀內(nèi)包含33個角度+DC+Planar)。
無方向平滑的幀內(nèi)預測器
AV1通過添加3個新的平滑預測器SMOOTHV,SMOOTHH和SMOOTH擴展了無方向幀內(nèi)模式,它們在垂直或水平方向,使用二次插值或其平均值預測了像素塊。
基于遞歸濾波的幀內(nèi)預測器
為了捕獲邊緣參考塊的衰減空間相關(guān)性,FILTER INTRA模式通過將亮度塊使用二維不可分離的馬爾可夫過程。AV1預設計的五個濾波器幀內(nèi)模式中,每個模式用一組八個7-tap濾波器表示,反映4×2色塊中的像素與相鄰的7個像素之間的相關(guān)性。一個內(nèi)部塊可以選擇一種幀內(nèi)濾波模式,并以一批4×2補丁進行預測。
從亮度預測色度
Chroma from Luma(CfL)是僅用于色度的幀內(nèi)預測器,通過以重建后亮度像素的線性函數(shù)建模得到色度像素。重建的亮度像素被二次采樣為色度分辨率,然后去除直流分量以得到交流分量。為了從交流分量中估計色度的交流分量,AV1 CfL根據(jù)原始色度像素確定參數(shù)并在比特流中用信號發(fā)送。這降低了解碼器的復雜性并得到了更精確的預測。對于DC預測,它是使用內(nèi)部DC模式計算的,該模式對于大多數(shù)色度內(nèi)容來說已經(jīng)足夠,并且具有成熟并能快速實現(xiàn)的方法。
調(diào)色板作為預測指標
對于屏幕截圖和游戲之類的人造視頻,可以用少量顏色的近似塊來替代,AV1幀內(nèi)編碼引入調(diào)色板模式進一步提升壓縮率。
幀內(nèi)塊拷貝
AV1允許其幀內(nèi)編碼器參考同一幀中先前重建的塊,類似于幀間編碼器引用前一幀中塊的方式,對于包含重復紋理的屏幕內(nèi)容視頻非常有用。IntraBC新預測模式的引入,在當前幀中拷貝一個重建的塊作為預測。參考塊的位置由位移矢量指定,類似于運動補償中的運動矢量壓縮。
圖5:HEVC與AV1幀內(nèi)預測
落地計劃及服務端方案設計
復雜的幀內(nèi)編碼需要耗費大量的計算,軟件方案編碼一幀圖像耗時達到了秒級,顯然無法滿足實時處理的需要,大規(guī)模落地必須借助專用硬件方案,其開發(fā)工作是項目的重點和難點。另一方面,新格式的落地也需要客戶端解碼的支持,前期計劃先基于自研高性能解碼器進行解碼,后期考慮切到系統(tǒng)原生解碼(Android 12支持AVIF解碼)。
???落地計劃
項目落地上按4個版本迭代,核心的開發(fā)包括服務端軟硬件編碼以及客戶端的解碼,服務端采用先軟件后硬件的思路,通過基礎版本、全功能版本、穩(wěn)定版本、優(yōu)化版本的迭代實現(xiàn)新格式的平滑升級。
圖6:項目落地計劃
???服務端方案設計
服務端沿用圖片空間服務端圖片轉(zhuǎn)碼架構(gòu),使用阿里云AIS自研的AV1硬件編碼器進行服務端編碼,集成AV1/HEVC/WEBP等多種硬件編碼IP,業(yè)務部署至ASI Pouch集群,同時進行新格式的線上全量PSNR校驗,如有異常可一鍵降級為HEVC編碼方案。
系統(tǒng)架構(gòu)
服務端完成圖像的轉(zhuǎn)碼(如JPEG轉(zhuǎn)碼為AVIF),系統(tǒng)分為Nginx統(tǒng)一接入、資源解析、圖像處理、FPGA硬件加速等模塊,AVIF編碼Offload至FPGA,為防止硬件圖像處理出現(xiàn)異常,在圖像處理層對硬件編碼的數(shù)據(jù)進行decoder,PSNR對比編碼前和解碼后的YUV數(shù)據(jù),確保硬件處理的正確性。
圖7:服務端架構(gòu)
在不同Pouch上部署不同的FPGA邏輯版本,做到新老版本的隔離,不影響老業(yè)務穩(wěn)定性的情況下,做到新業(yè)務的快速迭代。
圖8:容器化FPGA部署
穩(wěn)定性保障
圖像質(zhì)量和穩(wěn)定性是追求極致圖像體驗的前提,圖片基礎設施面向全集團提供圖片服務。線上是否有花圖,圖片是否清晰,用戶請求是否有超時,新版本效果是否達標等問題出現(xiàn)在我們面前,必須確保高并發(fā)下圖片質(zhì)量的穩(wěn)定。
通過梳理圖像主客觀質(zhì)量測試、線上預警及自動化分析流程,從質(zhì)量回歸、在線PSNR抽樣檢測、回放壓測三個方面來監(jiān)管系統(tǒng)穩(wěn)定性:
質(zhì)量回歸:通過定時腳本每日篩選大量線上日志,分別請求預發(fā)與線上,查看PSNR/SSIM、圖片格式、圖像體積、是否有圖等指標報告,定位處理圖片質(zhì)量問題;
在線PSNR校驗:線上FPGA機器有一定的異常概率(如板卡損壞、FPGA掉電),通過各處理模塊的在線抽樣校驗,可及早知曉定位問題,降低風險;
回放壓測:圖片下行系統(tǒng)為多核C + FPGA處理系統(tǒng),通過長時間的回放壓測,規(guī)避host/chip端內(nèi)存泄漏及硬件概率性風險;
圖9:圖片質(zhì)量保障方案
???落地結(jié)果
在服務端進行轉(zhuǎn)碼后輸出AV1編解碼圖像格式,手淘上對其進行解碼,結(jié)果如下:
展望與致謝
圖像格式的發(fā)展與編解碼技術(shù)發(fā)展息息相關(guān),基本處理十年出一代的節(jié)奏,回顧過去的JPEG->WEBP->HEVC格式的發(fā)展歷程,高的壓縮率格式的落地無一不是算法與硬件結(jié)合的結(jié)果。
得益于團隊在算法硬件加速與工程落地的經(jīng)驗,項目組開始將AVIF圖像格式進行工程落地,同時由于AVIF格式的良好生態(tài)以及擴展特性(目前各大主流瀏覽器均已支持),我們計劃在PC及手機端全線使用AVIF圖片格式,同時覆蓋動圖場景,并做到不同設備平臺的高保真支持,希望通過技術(shù)升級,進一步降本提效。
目前軟硬件加速方案初始版本已經(jīng)開始使用,高性能版本(算法及時序優(yōu)化)開發(fā)完成后,再來更新相關(guān)信息,敬請期待。
感謝阿里云AIS、淘系圖片空間、手淘圖片庫、阿里云CDN團隊相關(guān)同學的大力支持。
參考
https://en.wikipedia.org/wiki/AV1
https://ieeexplore.ieee.org/document/8456249/authors#authors
???拓展閱讀
作者|岳溪
編輯|橙子君
出品|阿里巴巴新零售淘系技術(shù)
總結(jié)
以上是生活随笔為你收集整理的新一代图片编解码技术在淘宝的应用及落地的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 淘宝视频的跨模态检索
- 下一篇: OSPF基础理解