近年來王滤,深度學(xué)習(xí)在計(jì)算機(jī)視覺領(lǐng)域已經(jīng)占據(jù)主導(dǎo)地位,不論是在圖像識別還是超分辨重現(xiàn)上滓鸠,深度學(xué)習(xí)已成為圖片研究的重要技術(shù)雁乡;現(xiàn)在深度學(xué)習(xí)技術(shù)已進(jìn)入圖片壓縮領(lǐng)域。以圖鴨最新研發(fā)的圖片壓縮——Tiny Network Graphics(TNG)為例糜俗,其通過深度學(xué)習(xí)卷積網(wǎng)絡(luò)(CNN)的編碼方式踱稍,可以在保持圖片的質(zhì)量下,盡可能降低圖片的大小悠抹,使用戶在帶寬受限的網(wǎng)絡(luò)情況下珠月,仍然可以看到高清的圖像;同時(shí)幫助圖片類企業(yè)節(jié)約大量的帶寬成本楔敌,具有較強(qiáng)的商業(yè)應(yīng)用前景啤挎。
本文將和大家分享如何使用深度學(xué)習(xí)技術(shù)設(shè)計(jì)圖像壓縮算法。
說到圖像壓縮算法卵凑,目前市面上影響力比較大的圖片壓縮技術(shù)是WebP和BPG庆聘。
WebP:谷歌在2010年推出的一款可以同時(shí)提供有損壓縮和無損壓縮的圖片文件格式,其以VP8編碼為內(nèi)核勺卢,在2011年11月開始可以支持無損和透明色功能伙判。目前facebook、Ebay等網(wǎng)站都已采用此圖片格式黑忱。
BPG:是知名程序員宴抚、ffmpeg 和QEMU等項(xiàng)目作者Fabrice Bellard推出的圖像格式,它以HEVC編碼為內(nèi)核甫煞,在相同體積下菇曲,BPG文件大小只有JPEG的一半。另外BPG還支持8位和16位通道等等抚吠。盡管BPG有很好的壓縮效果羊娃,但是HEVC的專利費(fèi)很高,所以目前的市場使用比較少埃跷。
就壓縮效果來說蕊玷,BPG更高于WebP,但是BPG采用的HEVC內(nèi)核所帶來的專利費(fèi)弥雹,導(dǎo)致其無法在市場進(jìn)行大范圍使用垃帅。采用了深度學(xué)習(xí)算法的TNG與 JPEG 相比,壓縮率提升了 122%剪勿;與 WebP 相比贸诚,壓縮率提高了 30%。而且相比 BPG/HEIF 等圖片格式厕吉,TNG 采用了 CNN 技術(shù)可以避免高昂的專利費(fèi)用酱固,更利于商業(yè)化應(yīng)用。
如何用深度學(xué)習(xí)技術(shù)設(shè)計(jì)圖片壓縮算法
通過深度學(xué)習(xí)技術(shù)設(shè)計(jì)壓縮算法的目的之一是設(shè)計(jì)一個(gè)比目前商用圖片壓縮更優(yōu)的壓縮算法头朱,同時(shí)借助于深度學(xué)習(xí)技術(shù)還可以設(shè)計(jì)更簡潔的端到端算法运悲。
在圖片、視頻壓縮領(lǐng)域项钮,主要用到的深度學(xué)習(xí)技術(shù)就是卷積神經(jīng)網(wǎng)絡(luò)(CNN)班眯。如圖1所顯示,像搭積木一樣烁巫,一個(gè)卷積神經(jīng)網(wǎng)絡(luò)由卷積署隘、池化、非線性函數(shù)亚隙、歸一化層等模塊組成磁餐。最終的輸出根據(jù)應(yīng)用而定,如在人臉識別領(lǐng)域阿弃,我們可以用它來提取一串?dāng)?shù)字(專業(yè)術(shù)語稱為特征)來表示一幅人臉圖片诊霹,然后通過比較特征的異同進(jìn)行人臉識別。
用深度學(xué)習(xí)設(shè)計(jì)的圖片壓縮完整框架包括CNN編碼器恤浪、量化畅哑、反量化、CNN解碼器水由、熵編碼荠呐、碼字估計(jì)、碼率-失真優(yōu)化等幾個(gè)模塊砂客。編碼器的作用是將圖片轉(zhuǎn)換為壓縮特征泥张,解碼器就是從壓縮特征恢復(fù)出原始圖片。其中編碼器和解碼器鞠值,可以用卷積媚创、池化、非線性等模塊進(jìn)行設(shè)計(jì)和搭建彤恶。
如何評判壓縮算法
在深入技術(shù)細(xì)節(jié)前钞钙,我們先來了解一下如何評判壓縮算法鳄橘。評判一個(gè)壓縮算法好壞的重要指標(biāo)有三個(gè):PSNR(Peak Signal to Noise Ratio)、BPP(bit per pixel)和MS-SSIM(multi-scaleSSIM index)芒炼。我們知道瘫怜,任何數(shù)據(jù)在計(jì)算機(jī)內(nèi)都是以比特形式存儲,所需比特?cái)?shù)越多則占據(jù)的存儲空間越大本刽。PSNR用來評估解碼后圖像恢復(fù)質(zhì)量鲸湃,BPP用于表示圖像中每個(gè)像素所占據(jù)的比特?cái)?shù),MS-SSIM值用來衡量圖片的主觀質(zhì)量子寓,簡單來說在同等的Rate/BPP下PSNR更高暗挑,恢復(fù)質(zhì)量越好,MSSIM更高斜友,主觀感受越好炸裆。
舉個(gè)例子,假設(shè)長寬為768*512的圖片大小為1M蝙寨,利用深度學(xué)習(xí)技術(shù)對它編碼晒衩,通過編碼網(wǎng)絡(luò)后產(chǎn)生包括96*64*192個(gè)數(shù)據(jù)單元的壓縮特征數(shù)據(jù),如果表示每個(gè)數(shù)據(jù)單元平均需要消耗1個(gè)比特墙歪,則編碼整張圖需要96*64*192個(gè)比特听系。經(jīng)過壓縮后,編碼每個(gè)像素需要的比特?cái)?shù)為(96*64*192)/(768*512)=3虹菲,所以BPP值為3bit/pixel靠胜,壓縮比為24:3=8:1。這意味著一張1M的圖毕源,通過壓縮后只需要消耗0.125M的空間浪漠,換句話說,之前只能放1張照片的空間霎褐,現(xiàn)在可以放8張址愿。
如何用深度學(xué)習(xí)做壓縮
談到如何用深度學(xué)習(xí)做壓縮,還是用剛才那個(gè)例子冻璃。將一張大小768*512的三通道圖片送入編碼網(wǎng)絡(luò)响谓,進(jìn)行前向處理后,會得到占據(jù)96*64*192個(gè)數(shù)據(jù)單元的壓縮特征省艳。有計(jì)算機(jī)基礎(chǔ)的讀者可能會想到娘纷,這個(gè)數(shù)據(jù)單元中可放一個(gè)浮點(diǎn)數(shù)、整形數(shù)跋炕、或者是二進(jìn)制數(shù)赖晶。那到底應(yīng)該放入什么類型的數(shù)據(jù)?從圖像恢復(fù)角度和神經(jīng)網(wǎng)絡(luò)原理來講辐烂,如果壓縮特征數(shù)據(jù)都是浮點(diǎn)數(shù)遏插,恢復(fù)圖像質(zhì)量是最高的捂贿。但一個(gè)浮點(diǎn)數(shù)占據(jù)32個(gè)比特位,按之前講的比特?cái)?shù)計(jì)算公式為(96*64*192*32)/(768*512)=96涩堤,壓縮后反而每個(gè)像素占據(jù)比特從24變到96眷蜓,非但沒有壓縮,反而增加了胎围,這是一個(gè)糟糕的結(jié)果,很顯然浮點(diǎn)數(shù)不是好的選擇德召。
所以為了設(shè)計(jì)靠譜的算法白魂,我們使用一種稱為量化的技術(shù),它的目的是將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù)或二進(jìn)制數(shù)上岗,最簡單的操作是去掉浮點(diǎn)數(shù)后面的小數(shù)福荸,浮點(diǎn)數(shù)變成整數(shù)后只占據(jù)8比特,則表示每個(gè)像素要占據(jù)24個(gè)比特位肴掷。與之對應(yīng)敬锐,在解碼端,可以使用反量化技術(shù)將變換后的特征數(shù)據(jù)恢復(fù)成浮點(diǎn)數(shù)呆瞻,如給整數(shù)加上一個(gè)隨機(jī)小數(shù)台夺,這樣可以一定程度上降低量化對神經(jīng)網(wǎng)絡(luò)精度的影響,從而提高恢復(fù)圖像的質(zhì)量痴脾。
即使壓縮特征中每個(gè)數(shù)據(jù)占據(jù)1個(gè)比特位颤介,可是 8:1的壓縮比在我們看來并不是一個(gè)很理想的結(jié)果。那如何進(jìn)一步優(yōu)化算法赞赖?再看下BPP的計(jì)算公式滚朵。假設(shè)每個(gè)壓縮特征數(shù)據(jù)單元占據(jù)1個(gè)比特,則公式可寫成:(96*64*192*1)/(768*512)=3前域,計(jì)算結(jié)果是3 bit/pixel辕近,從壓縮的目的來看,BPP越小越好匿垄。在這個(gè)公式中移宅,分母由圖像決定,可以調(diào)整的部分在分子年堆,分子中96吞杭、64、192這三個(gè)數(shù)字與網(wǎng)絡(luò)結(jié)構(gòu)相關(guān)变丧。很顯然芽狗,當(dāng)我們設(shè)計(jì)出更優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu),這三個(gè)數(shù)字就會變小痒蓬。
那1與哪些模塊相關(guān)童擎?1表示每個(gè)壓縮特征數(shù)據(jù)單元平均占據(jù)1個(gè)比特位滴劲,量化會影響這個(gè)數(shù)字,但它不是唯一的影響因素顾复,它還與碼率控制和熵編碼有關(guān)班挖。碼率控制的目的是在保證圖像恢復(fù)質(zhì)量的前提下,讓壓縮特征數(shù)據(jù)單元中的數(shù)據(jù)分布盡可能集中芯砸、出現(xiàn)數(shù)值范圍盡可能小萧芙,這樣我們就可以通過熵編碼技術(shù)來進(jìn)一步降低1這個(gè)數(shù)值,圖像壓縮率會進(jìn)一步提升假丧。
用深度學(xué)習(xí)做視頻壓縮双揪,可以看作是在深度學(xué)習(xí)圖片壓縮基礎(chǔ)上的擴(kuò)展,可結(jié)合視頻序列幀間的光流等時(shí)空信息包帚,在單張壓縮的基礎(chǔ)上渔期,進(jìn)一步降低碼率。
深度學(xué)習(xí)圖片壓縮的優(yōu)勢
圖鴨科技通過深度學(xué)習(xí)技術(shù)研發(fā)的圖片壓縮TNG在內(nèi)部的測試上已經(jīng)超過webp與BPG渴邦,下圖是在kodak24標(biāo)準(zhǔn)數(shù)據(jù)集上測評結(jié)果,分別是PSNR值與MS-SSIM值疯趟。
熟悉圖像壓縮的朋友可以直接通過PSNR和MS-SSIM值看出:TNG的PSNR值與MS-SSIM值明顯高于WebP信峻、jpeg2000和jpeg;且TNG在高碼字的情況下PSNR值高于BPG章蚣,且其MS-SSIM值基本一致高于BPG站欺。
在低碼字情況下TNG與WebP壓縮效果對比
相比TNG,WebP盡管保留了更多的細(xì)節(jié)纤垂,但是其失真更多矾策,不利于后期恢復(fù)。而TNG采用了保邊濾波的方法峭沦,讓其失真更少贾虽,整體圖像效果優(yōu)于WebP。
在高碼字情況下TNG與BPG對比
上面兩幅圖是高碼字的情況蓬豁,在實(shí)際的測試中,BPG會出現(xiàn)上圖所示的顏色失真情況菇肃;而反觀TNG其基本不會出現(xiàn)這類的失真狀況地粪。
這是因?yàn)?b>BPG在編碼壓縮時(shí)盡管圖片時(shí),其YUV通道是分開進(jìn)行編解碼琐谤,產(chǎn)生了一些色差蟆技。
而TNG在編碼時(shí)考慮到了整體圖片的情況,采用了同一編碼,也就避免了上述的情況质礼。
在低碼字的情況下TNG與BPG的對比
在低碼字的情況下,BPG壓縮圖片中出現(xiàn)了偽輪廓和塊效應(yīng)等問題眶蕉,整個(gè)圖片的連續(xù)性比較差砰粹;而TNG的圖片連續(xù)性和物體的輪廓保持的更好。
總結(jié)
總體而言造挽,借助于深度學(xué)習(xí)設(shè)計(jì)圖像壓縮算法是一項(xiàng)非常具有前景但也非常具有挑戰(zhàn)性的技術(shù)碱璃。目前,其已經(jīng)在人臉識別等領(lǐng)域證明了它的強(qiáng)大能力饭入,未來圖像壓縮領(lǐng)域的深度學(xué)習(xí)技術(shù)介入可以使大家在全面高清屏的時(shí)代有更優(yōu)質(zhì)的視覺體驗(yàn)厘贼,同時(shí)在游戲、空間圖像傳感等領(lǐng)域圣拄,深度學(xué)習(xí)圖像壓縮算法的應(yīng)用也將帶來更高分辨率,更小存儲空間毁欣,更少帶寬成本庇谆。
附上TNG的測試鏈接TNG測試