在 RTC 2019實時互聯網大會上,聲網Agora AI 算法工程師周世付,分享了超分辨率應用於移動端實時音視頻場景下,遇到的難點、通用解決方法,以及解決思路。算法
近年來,超分辨率(簡稱超分)在圖像加強、去噪、細節恢復、圖像放大方面展示出廣闊的應用前景,成爲計算機視覺領域的研究熱點,受到學術界和工業界的關注和重視,業界也紛紛舉辦超分競賽,好比優酷的視頻超分競賽、聲網的圖像超分競賽和深圳市政府舉辦的AI+4K HDR競賽,旨在吸引更多的人蔘與超分算法的研究和促進超分算法的落地。由於超分算法的大規模應用落地還存在一些亟需解決的問題。markdown
目前,移動端實時音視頻應用目前存在的一個痛點問題是傳輸的視頻分辨偏低,而終端顯示屏的分辨率高,存在分辨率不匹配的問題。實時傳輸的視頻分辨率廣泛偏低,是因爲受到傳輸帶寬的限制和實時性的要求。低分辨率視頻不能有效的展示圖像細節,於是帶來的用戶體驗有限。爲了解決傳輸視頻與終端顯示屏分辨率不匹配的問題,一般的作法是將低分辨率視頻進行放大。iphone
傳統最經常使用的放大方法是插值法,如bicubic、nearest、bilinear等,優勢是速度快,但缺點也很明顯,即圖像放大後,圖像存在模糊、細節丟失的現象。oop
而隨着深度學習的出現,基於深度學習的超分已經成爲了新的解決方案,也是學術界與工業界都在研究的方法。它能有效地恢復圖像的細節,並保持圖像清晰度。但基於深度學習的超分算法在落地應用的過程當中,也面臨着挑戰,主要表包括:(1)超分模型過大;(2)超分算法運算複雜。性能
超分與Bicubic對比目前學術界有兩個經典超分模型SRGAN和ESRGAN,以下表 1 所示,咱們列出了兩個模型的參數量和算法複雜度。SRGAN和ESRGAN的參數量分別達到150萬和1600萬,所須要的存儲空間分別是6MB和63MB。對於移動設備來講,模型太大,會佔用過多存儲。學習
再看運算複雜度方面。以360x480大小的圖像做爲輸入,進行4倍的放大,SRGAN和ESRGAN的運算複雜度分別能夠達到446GFLOPs和3100GFLOPs。而目前主流的手機iphone XR的gpu的運算能力大約爲500GFLOPs。因而可知,目前的移動設備的運算能力,還沒法實時運行現有的超分模型,須要下降模型的算法複雜度和減少模型的體積,才能可能讓實時超分模型在移動設備實時運行。優化
下降模型的算法複雜度和減少模型的體積的方法,一般是模型壓縮和模型加速。模型壓縮的目的,是經過減少模型中冗餘的權重,去掉對模型性能貢獻小的分支,從而達到減少模型的參數量,下降模型的運算量。而模型加速,則是側重下降卷積運算的開銷,提升卷積運算的效率,從而提升模型的運行速度。模型壓縮和模型加速,是相輔相成的,經過合理的模型壓縮算法和模型加速算法的結合,可以有效地減少模型體積和提升模型的運算速度。編碼
模型壓縮方法,能夠分爲權重優化和模型結構設計。權重優化也可分爲剪枝和量化。 剪枝,是將模型中冗餘的權重去掉,以達到模型瘦身的目的。好比,Deep compression[1],經過權值剪枝、權值量化和權值編碼,可以將模型的體積減少49倍。 權重量化,則將權值以低碼率進行存儲,從而減少模型的體積,好比,XNornet[2]模型,對輸入的featuremaps和權值均進行二進制量化,實現58x的模型壓縮和32倍的加速。spa
經典的輕量級模型有suqeezenet[3]、mobilenet[4]和shufflenet[5]。他們從模型結構設計角度來說,一般會採用小卷積核替代大卷積核,如用3x3替代5x五、7x7, 或者1x1替代3x3。在同等條件下,3x3的運算是5x五、7x7的9/2五、9/49,並且1x1是3x3的1/9。設計
模型加速方法,在convolution的基礎上,衍生出了depth-wise convolution、group convolution,point-wise convolution。在mobilenett模型中,大量使用了depth-wise convolution和point-wise convolution。而在shufflenet模型中,則採用了group convolution和point-wise convolution。
在以上的研究基礎之上,聲網也自研了超分算法。聲網的超分模型的體積,比mobilenet v2還要小。對360p的圖像進行2倍的放大時,其運算複雜度小於2GFLOPs,可實如今移動設備上的實時運行。在運算速度和超分效果實現較好的前提下,有效地提升移動實時音視頻的用戶體驗。
參考文獻
Han S, Mao H, Dally W J, et al.Deep Compression: Compressing Deep Neural Networks with Pruning, TrainedQuantization and Huffman Coding[J]. arXiv: Computer Vision and PatternRecognition, 2015.
Rastegari M, Ordonez V, RedmonJ, et al. XNOR-Net: ImageNet Classification Using Binary Convolutional NeuralNetworks[C]. european conference on computer vision, 2016: 525-542.
Iandola F, Han S, Moskewicz MW, et al. SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and<0.5MB model size[J]. arXiv: Computer Vision and Pattern Recognition, 2017.
Howard A G, Zhu M, Chen B, etal. MobileNets: Efficient Convolutional Neural Networks for Mobile VisionApplications[J]. arXiv: Computer Vision and Pattern Recognition, 2017.
Zhang X, Zhou X, Lin M, et al.ShuffleNet: An Extremely Efficient Convolutional Neural Network for MobileDevices[J]. arXiv: Computer Vision and Pattern Recognition, 2017.