1
雷鋒網(wǎng) AI 研習社按,2012 年,AlexNet 橫空出世,以 15.4% 的低失誤率奪得當年 ILSVRC(ImageNet 大規(guī)模視覺識別挑戰(zhàn)賽)冠軍,超出亞軍十多個百分點。AlexNet 開啟了深度學習黃金時代,隨之而來是深度學習在圖像識別上的蓬勃發(fā)展:
2013 年,ZF Net? 以 11.2% 的低失誤率奪得 ILSVRC 冠軍;
2014 年,VGG Net 在?ILSVRC「分類及定位」比賽單項賽上的失誤率為 7.3%,同年,GoogLeNet?以 6.7% 的失誤率取得 ILSVRC 冠軍;
2015 年,Microsoft ResNet 在 ILSVRC 達到 3.6% 的失誤率;
……
除了在圖像識別上的一系列突破,深度學習也為圖像壓縮帶來革命性改變。
近日,圖鴨科技發(fā)布圖像壓縮技術(shù) TNG(tiny network graphics),其采用深度學習卷積網(wǎng)絡作為壓縮核心編碼。他們的合作對象主要集中在娛樂(在線抓娃娃機)、視頻社交(多人通信)、游戲等領域,目前,該算法即將投入商用。與傳統(tǒng)算法相比較時,在壓縮效率上,TNG 相比 JPEG 提高了 120%,比 WEBP 提高了 30%。在同等壓縮率下進行壓縮視覺效果對比時,TNG 在紋理細節(jié)上比 JPEG2000 的效果要好得多。
圖 :在同等壓縮率下,對復雜圖像壓縮視覺效果對比。上圖為圖鴨所提出的算法,下圖為 JPEG2000 算法??梢钥吹缴蠄D的細節(jié)效果更好。
圖:在低碼字情況下 TNG(上圖) 與 WebP(下圖) 壓縮效果對比。相比TNG,WebP 盡管保留了更多細節(jié),但是其失真更多。TNG整體圖像效果優(yōu)于WebP。
JPEG 是目前比較常見的圖像壓縮方式,在獲得極高壓縮率的同時能展現(xiàn)十分豐富生動的圖像,但是它采用有損壓縮格式,會丟失圖像中的重復或不重要的信息,因此容易造成圖像數(shù)據(jù)的損失。其主要采用 DCT(Discrete Cosine Transform)技術(shù),將圖像信號在頻率域上進行變換,分離出高頻和低頻信息,然后再對圖像的高頻部分(即圖像細節(jié))進行壓縮,以達到壓縮圖像數(shù)據(jù)的目的。
JPEG2000 作為 JPEG 的升級版,同時支持有損壓縮和無損壓縮,壓縮率比 JPEG 高約 30% 左右。它放棄了 JPEG 所采用的以離散余弦轉(zhuǎn)換 DCT 為主的區(qū)塊編碼方式,而改采以小波轉(zhuǎn)換 (Wavelet transform) 為主的多解析編碼方式,來將影像的頻率成分抽取出來。
WEBP 是 Google 推出的新一代文件格式,期望代替 JPEG,在與 JPEG 相同圖片質(zhì)量的情況下,可以大大縮小文件大小。WEBP 采用一種基于 VP8 編碼(已于 2010 年 5 月開源)的圖片壓縮器,利用預測編碼技術(shù),達到減少數(shù)據(jù)量、加速網(wǎng)絡傳輸?shù)哪康摹?/p>
而 TNG 一改傳統(tǒng)的這些編碼技術(shù),轉(zhuǎn)而乘上深度學習這艘大船。
據(jù)圖鴨科技 CEO 武俊敏介紹,他們從 16 年 8 月開始對 TNG 技術(shù)進行研發(fā),歷經(jīng)傳統(tǒng)算法和深度學習算法兩個階段。最初,他們在 H.265(HEVC)基礎上進行研究,但 H.265 已經(jīng)是當時最優(yōu)秀的編碼方法之一,基于這項技術(shù)進行傳統(tǒng)研發(fā)的新思路并不多。此時,另一條路擺在他們眼前,那就是深度學習。
方向的轉(zhuǎn)變并非一帆風順?!肝覀儺敃r考慮把傳統(tǒng)方法里的思路與深度學習想結(jié)合。比如傳統(tǒng)方法有周圍像素預測,我們結(jié)合這種方法進行研究,但發(fā)現(xiàn)預測效果不好。之后我們還想到了傳統(tǒng)方法里的 DCT 變換,將其與深度學習融合之后,發(fā)現(xiàn)效果也不好。另外,雖然深度學習在當時很火,但彼時利用深度學習進行圖片壓縮,做出來的效果相比 H.265 的老版本 H.264 以及 JPEG 都差很多。」但他們認為,再往后,深度學習一定有機會超越 H.265。
他們開始由傳統(tǒng)算法徹底轉(zhuǎn)向深度學習算法。
隨后是一系列研發(fā)與創(chuàng)新。效果是顯著的,他們目前的深度學習圖像壓縮技術(shù) TNG 比起 H.265,在指標上取得前所未有的突破,而且 TNG 網(wǎng)絡壓縮過的圖片還具有濾波效果,對于一些在網(wǎng)絡上失真的圖像,用 TNG 壓縮之后的視覺效果比起原始圖還要好一些。
圖:高碼字情況下 TNG(上圖)與 BPG(下圖)對比。在實際測試中,BPG 會出現(xiàn)圖中所示的塊狀,這是高頻失真導致的振鈴效應。振鈴效應是因為 BPG 在編碼壓縮時盡管圖片的不同塊內(nèi)容不一樣,但采用了同一編碼參數(shù),而導致的圖像退化中信息量的流失,尤其是高頻信息的丟失。
武俊敏對雷鋒網(wǎng) AI 研習社說道,「TNG 壓縮不會因為多次壓縮導致主觀質(zhì)量越來越差,還能恢復 JPEG 等方法帶來的部分失真。」他舉了如下例子:一些利用 HEVC 或 JPEG 壓縮的圖像存在塊效應(塊效應:基于塊的變換編碼在圖像壓縮編碼中得到廣泛應用,隨著碼率的降低,量化變得粗糙,在塊的邊界會出現(xiàn)不連續(xù),形成重建圖像的明顯缺陷)。但用 TNG 網(wǎng)絡處理后,塊效應就會消失。
可以看到,將深度學習技術(shù)應用于 TNG 中,帶來了非常強大的視覺效果。目前在圖片、視頻壓縮領域,使用最多的深度學習技術(shù)就是卷積神經(jīng)網(wǎng)絡(CNN),下面是利用卷積神經(jīng)網(wǎng)絡做壓縮的典型方法。
如圖所示,主要包括 CNN 編碼網(wǎng)絡、量化、反量化、CNN 解碼、熵編碼等幾個模塊,其中編解碼網(wǎng)絡可以用卷積、池化、非線性等模塊進行設計和搭建。
編碼網(wǎng)絡的作用是將圖片轉(zhuǎn)換為壓縮特征,解碼網(wǎng)絡就是從壓縮特征恢復出原始圖片。
下面是利用深度學習做壓縮的一系列科普:
以圖片舉例,將一張大小為 768 * 512 的三通道圖片送入編碼網(wǎng)絡,進行前向處理后,會得到占據(jù) 96 * 64 * 192 個數(shù)據(jù)單元的壓縮特征。該數(shù)據(jù)單元中可放一個浮點數(shù)、整形數(shù)或者是二進制數(shù)。這之后就涉及到數(shù)據(jù)類型的選擇。
從圖像恢復角度和神經(jīng)網(wǎng)絡原理來講,如果壓縮特征數(shù)據(jù)都是浮點數(shù),恢復圖像質(zhì)量是最高的。但一個浮點數(shù)占據(jù) 32 個比特位,圖片的計算公式為(96 * 64 * 192 * 32)/(768 * 512)=96,壓縮后每個像素占據(jù)比特從 24 變到 96,圖片大小反而增加了,顯然浮點數(shù)不是好的選擇。
而這里,就涉及到其中的關(guān)鍵技術(shù)——量化。
量化的目的是將浮點數(shù)轉(zhuǎn)換為整數(shù)或二進制數(shù),最簡單的操作是去掉浮點數(shù)后面的小數(shù),浮點數(shù)變成整數(shù)后只占據(jù) 8 比特,則表示每個像素要占據(jù) 24 個比特位。同樣,在解碼端,可以使用反量化技術(shù)將變換后的特征數(shù)據(jù)恢復成浮點數(shù),如給整數(shù)加上一個隨機小數(shù),這樣可以一定程度上降低量化對神經(jīng)網(wǎng)絡精度的影響,從而提高恢復圖像的質(zhì)量。
即使壓縮特征中每個數(shù)據(jù)占據(jù) 1 個比特位,可是壓縮還是有可進步的空間。下面是 BPP 的計算公式。
假設每個壓縮特征數(shù)據(jù)單元占據(jù) 1 個比特,則公式可寫成:(96*64*192*1)/(768*512)=3,計算結(jié)果是 3 bit/pixel,從壓縮的目的來看,BPP 越小越好。在這個公式中,分母由圖像決定,這里進行調(diào)整的只有分子:96、64、192,這三個數(shù)字與網(wǎng)絡結(jié)構(gòu)相關(guān)。所以,如果設計出更優(yōu)的網(wǎng)絡結(jié)構(gòu),這三個數(shù)字也會變小。
那 1 與哪些模塊相關(guān)?1 表示每個壓縮特征數(shù)據(jù)單元平均占據(jù) 1 個比特位,量化會影響這個數(shù)字,但它不是唯一的影響因素,它還與碼率控制和熵編碼有關(guān)。碼率控制的目的是在保證圖像恢復質(zhì)量的前提下,讓壓縮特征數(shù)據(jù)單元中的數(shù)據(jù)分布盡可能集中、出現(xiàn)數(shù)值范圍盡可能小,這樣我們就可以通過熵編碼技術(shù)來進一步降低 1 這個數(shù)值,圖像壓縮率會進一步提升。
(詳情可參見雷鋒網(wǎng)此前報導:用深度學習設計圖像視頻壓縮算法:更簡潔、更強大)
具體到 TNG 網(wǎng)絡,武俊敏表示,這一技術(shù)看起來很簡單,就是利用卷積神經(jīng)網(wǎng)絡,主要有變換,量化,濾波,熵編碼等技術(shù)。而這些技術(shù)的最終目的只有一個,那就是估計圖像的概率分布,這也是最困難的。
「我們不知道概率分布到底是什么樣的,所以必須去設計網(wǎng)絡,來擬合圖像的概率分布,進行學習。學完之后,還要考慮該如何壓縮圖片,讓圖片在質(zhì)量和碼率上達到最優(yōu)分布。」
他表示,雖然技術(shù)看起來很簡單,將其串聯(lián)起來也沒有什么挑戰(zhàn),但訓練算法很復雜,而在這其中,他們踩的坑也有很多。
首先就是量化并不好建模,他們最初量化的時候想直接將數(shù)據(jù)進行截斷,再拿來建模,可是這樣存在一個問題——梯度傳不回去。通過不斷試驗,他們最后采用監(jiān)督學習的方式解決這一問題。
而同時也存在效率的問題。他們一開始采用比較深的網(wǎng)絡,但后來為了提升速度,降低網(wǎng)絡復雜度,慢慢嘗試使用更小的 channel 以及更淺的網(wǎng)絡。此外,在工程上,他們嘗試使用匯編優(yōu)化等手段。
對于TNG的技術(shù)優(yōu)勢,武俊敏總結(jié)為如下兩點:第一,TNG 圖片壓縮的 PSNR 值相比目前公開的 deep learning 壓縮在相同大小下高 2dB;第二,TNG 壓縮的圖片,在主觀質(zhì)量上沒有方塊效應、振鈴效果等。「我們采用的是全圖直接壓縮,而一般圖片壓縮使用的是分塊壓縮。」
至于速度,武俊敏對 AI 研習社說道,目前來說,和 JPEG 相比,TNG 在 CPU 上壓縮的比較慢,但是,在 GPU 上,1000*1000 的圖像只需幾十毫秒就可以完成壓縮。
其實,除了圖像壓縮,他們目前在視頻壓縮上也有進展。武俊敏表示,他們目前的視頻壓縮已經(jīng)和 x265(用于編碼符合高效率視頻編碼(HEVC/H.265)標準的視頻) 的 medium level 效果持平。下一階段,他們會繼續(xù)在圖像和視頻上取得突破,不斷改進。
對深度學習技術(shù)在圖像視頻壓縮領域的應用,武俊敏非常樂觀。他對 AI 研習社表示,兩三年之內(nèi),GPU 會大大普及,而 TNG 壓縮算法在 GPU 上跑得特別好。此外,他還提到,TNG 壓縮的是圖片的特征,這些特征具有很強的表征性能,未來可以利用這些特征做一些多任務的處理。
「深度學習對于圖像視頻壓縮,絕對是革命性的。下一代的壓縮,不是 H.266,而是深度學習的壓縮?!刮淇∶羧缡钦f道。
目前大家可以進入圖鴨官網(wǎng)體驗 TNG 算法,地址如下:http://www.tucodec.com/picture/index
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。