丁冬冬,陳世平
(上海理工大學光電信息與計算機工程學院,上海 200093)
隨著數(shù)字化時代的到來,監(jiān)控視頻的存儲與傳輸數(shù)據(jù)量越來越大,無壓縮的視頻將會消耗巨大的帶寬和存儲資源,而高效的視頻編碼算法可以解決視頻壓縮問題,碼率控制是視頻編碼中非常重要的技術模塊?,F(xiàn)主流的編碼標準有VP9[1],AVC(H.264)[2],HEVC(H.265)[3]和AV1[4]等系列,均可以對視頻進行壓縮編碼,但是沒有考慮到監(jiān)控視頻的特殊性[5],大多數(shù)固定攝像頭安裝后場景基本不變,我們稱固定不變的背景為后景,移動的人或者物稱為前景,就監(jiān)控視頻而言,前景一般為感興趣區(qū)域(ROI)[6]。
近些年來深度學習在很多領域都取得了突破性成果,本文基于兩階段Mask R-CNN 實例分割算法,將監(jiān)控視頻中的前后景進行分離,計算出前后景占比,為后續(xù)碼率控制模型改進做準備。
對于監(jiān)控視頻的碼率控制,本文所提算法降低了視頻平均比特率且提高了前景比例高的幀數(shù)圖像的質量,視頻比特率平均降低7.59kbps,PSNR 平均提升0.1141dB。
HEVC采用R-λ碼率控制模型[7]:
其中,R 為編碼碼率,一般使用每像素比特數(shù)bpp 來表示,D 為失真,一般使用亮度分量的均方誤差MSE,c和k為常數(shù)。
R-λ碼率控制模型中的λ是RD曲線的斜率,所以對式⑴中R兩邊求導:
其中,α=ck,β=-k-1,α 和β 為編碼參數(shù),一般和視頻序列的內容有關。
HEVC碼率控制通常分為兩個步驟:
一般分為三個等級,分別為畫面組(GOP)級比特分配、幀(Frame)級比特分配、最大編碼單元(LCU)級比特分配。
一開始先定義視頻序列平均每幀的比特數(shù):
其中,為視頻序列平均每幀的比特數(shù),Rtg為目標比特,F(xiàn)rRate為幀率。
1.1.1 GOP級比特分配
視頻在編碼前被劃分為多個連續(xù)的GOP,其中分配給GOP的目標比特數(shù)TGOP為[8]:
其中,為分配給Frame 的平均比特數(shù),NGOP為一個GOP所包含的圖像數(shù).。
1.1.2 Frame級比特分配
對于每一個GOP 中,又由多幀圖像組成,分配給每幀圖像的目標比特數(shù)TPic為:
其中,TGOP為分配給GOP 的目標比特數(shù),RGOPCoded為當前GOP 已消耗比特數(shù),ωPic為當前GOP 中每一幀圖像比特分配權重,ωPicCurr為當前幀圖像的比特分配權重。
1.1.3 LCU級比特分配
對于每一幅圖像,HEVC會將其劃分為多個最大編碼單元為LCU,分配給每個LCU的目標比特數(shù)TLCU為:
其中,TPic為分配給Frame的目標比特數(shù),BitH為所有頭信息編碼所需比特數(shù),RPicCoded為當前Frame 已消耗比特數(shù)。
計算拉格朗日乘數(shù)λ和量化參數(shù)QP。
1.2.1 拉格朗日乘數(shù)λ的計算
根據(jù)式⑵,利用R 來計算拉格朗日乘數(shù)λ,式⑵中α 和β 為編碼參數(shù),一般和視頻序列的內容有關,所以這里每一個Frame和LCU對應的α和β都不相同:
其中,Rreal為編碼中實際使用的每像素比特數(shù),λreal為編碼中實際使用λ,δα和δβ為常數(shù),用于調節(jié)公式的收斂速度。
1.2.2 量化參數(shù)QP的確定
量化參數(shù)QP,體現(xiàn)圖像細節(jié)壓縮情況。其值越小,量化越精細,圖像質量越高。當拉格朗日乘數(shù)λ確定以后,就可以進一步計算QP:
其中,a和b為模型參數(shù),取值為4.2005和13.7122[9]。
對于感興趣區(qū)域(ROI)的圖像分割[10],傳統(tǒng)的圖像分割算法在一些特殊場景分割效果較差,如樹葉搖曳會被識別為前景,且無法指定識別特殊前景,深度學習Mask R-CNN[11]算法可以解決這些問題。Mask R-CNN 基于Faster R-CNN[12],是一個兩階段的實例分割算法,是在目標檢測基礎上再進行實例分割,第一階段先對輸入的圖像進行掃描,然后生成建議框,第二階段分類建議框,然后生成邊界框和掩碼。
圖1 為主干網(wǎng)絡簡化過程,Mask R-CNN 對輸入進來的圖像的有尺寸要求,首先對輸入的圖像進行預處理,將處理后的圖像輸入到一個預訓練完成的神經網(wǎng)絡中(ResNet50,ResNet101[13]等)獲得對應的特征圖,對這個特征圖中的每個位置都設置一定數(shù)目不同大小的先驗框(Anchor),從而獲得多個候選先驗框,將這些候選的先驗框送入?yún)^(qū)域建議網(wǎng)絡(RPN)進行二值分類(前景或后景)以及坐標回歸,選出有價值的先驗框。
圖1 主干網(wǎng)絡簡化圖
將上述選出的先驗框進行ROIAlign 操作,最終對這些先驗框進行N 類別分類,候選框回歸和引入全卷積網(wǎng)絡(FCN)[14]生成Mask,完成分割任務。
監(jiān)控視頻的前后景劃分較為明顯,前景一般為感興趣區(qū)域,針對這一情況,本文在R-λ 碼率控制模型上進行改進。
利用MaskR-CNN 深度學習算法將視頻每一幀的前后景進行分離,定義前景所占比例Rforground為:
其中,Sforground為視頻一幀圖像前景所占面積,Sbackground為視頻一幀圖像后景所占面積。
在Frame 級比特分配算法中,無法根據(jù)監(jiān)控視頻本身特點對每一幀圖像進行更合理地分配的目標比特,故將式⑸進行改進。因為監(jiān)控視頻感興趣區(qū)域一般為前景,人們希望前景占比高的圖像更加清晰,將式⑾的計算結果引入式⑸,根據(jù)當前幀圖像前景比例,調整分配給當前幀的比特數(shù),得到:
其中,TGOP為分配給GOP 的目標比特數(shù),RGOPCoded為當前GOP 已消耗比特數(shù),ωPic為當前GOP 中每一幀圖像比特分配權重,ωPicCurr為當前幀圖像的比特分配權重,Rforground為前GOP 中每一幀前景所占比例,RforgroundCurr為當前幀前景所占比例,ε為權重調節(jié)常數(shù),用于調整原公式參數(shù)與新引入?yún)?shù)權重。
本文實驗的硬件為Intel Core i7-8750H 處理器,NVIDIA GeForce GTX 1070 顯卡、16GB 內存。
軟件 環(huán)境為Anaconda-3,CUDA-10.0,Python-3.6,tensorflow-gpu-1.13.1,keras-2.1.5,本文使用在COCO數(shù)據(jù)集上預訓練權重mask_rcnn_coco.h5,對視頻圖像進行前后景分割,將前景用不同顏色標記,效果如圖2所示。
圖2 MaskR-CNN分割效果圖
再根據(jù)式⑽計算出每一幀圖像的前景所占比例,為后面計算做準備。
使用HEVC 參考軟件HM-16[15]進行實驗,測試圖像數(shù)據(jù)為hall_cif.yuv、container_cif.yuv 和bridgeclose_cif.yuv,分別編號1,2,3。將HM-16與本文的改進算法視頻編碼結果作對比。以hall_cif.yuv 為例,圖3 左側為HM16 算法編碼后的圖像,右側為本文算法編碼后的圖像。因原始視頻分辨率較低,對局部細節(jié)進行放大后觀察,得到圖4,圖4 左側為HM16 算法進行編碼后的局部放大細節(jié)圖像,右側為本文提出的改進算法編碼后局部放大細節(jié)圖像。
圖3 HM16算法與改進算法圖像對比
圖4 放大細節(jié)圖像對比
圖4 左側和右側圖像對比,可以看出監(jiān)控視頻中前景人物褲子細節(jié)圖像質量有一定的提升。
因原始視頻分辨率較低,人眼對結果圖像主觀感受有所差別。本文再根據(jù)客觀數(shù)據(jù)進一步進行驗證。分別選取量化參數(shù)QP 為22,27,32,37進行實驗,這里預設的QP值越大,編碼后質量越低。
實驗后得到不同QP 下HM16 算法與本文提出的改進算法編碼后視頻在比特率分配上和PSNR(Peak Signal to Noise Ratio)方面的對比。表1 為HM16 算法在不同QP 下編碼得到的比特率和PSNR 值,表2 為本文改進的算法在不同QP 下編碼得到的比特率和PSNR值,表3是表2數(shù)據(jù)與表1對應數(shù)據(jù)相減而得到,用于反映分配比特率的降低和編碼質量的提升。
表1 HM16算法編碼結果
表2 本文改進算法編碼結果
表3 兩種算法的差值
對于視頻來說,在同等QP 下,一般視頻分配的比特率越低,視頻的最終傳輸及存儲大小就會越低。從表3中可以看出本文提出的算法在比特率分配上有所降低,平均降低7.59kbps。
PSNR 為峰值信噪比,是一種廣泛運用于評價視頻畫質的客觀測量法。PSNR 值越大,代表著視頻圖像質量越好,人眼對Y 明亮度分量比U、V 分量要敏感,從表3中可以看出,本文提出的算法在Y-PSNR 和分量上和整體YUV-PSNR 都有一定的提升。整體YUV-PSNR平均提升0.1141dB。
本文針對監(jiān)控視頻特點,在HEVC 視頻編碼基礎上,利用Mask R-CNN 對碼率控制算法進行改進,從實驗結果可見改進算法不僅降低了視頻碼率,且在視頻質量上也有一定的提升,達到了目標效果。
實驗中發(fā)現(xiàn),因改進算法在原算法基礎上增加了更多參數(shù)和分配指標,導致改進算法的編碼時間高于HM16 算法編碼時間,對于視頻編碼技術而言,編碼時間也是算法非常重要的一部分,所以未來可以在此方面再做進一步優(yōu)化。