论文阅读 - TransNet and TransNet V2
文章目錄
- 1 概述
- 2 模型結構簡述
- 2.1 TransNet
- 2.2 TransNet V2
- 3 數據集的構建
- 4 模型效果
- 5 參考文獻
1 概述
有些時候,一段視頻是由多段短視頻拼接而成的。拼接可以是直接拼接(硬拼接,見圖2),也可以是由一個轉場過渡拼接(軟拼接,見圖2)。我們希望拿到其中的每個小片段作為素材,這個時候就要做視頻切割了。這樣的視頻切割有的做法的目標是找拼接的邊界,故稱之為shot boundary detection,也有做法的目標是找每個小片段,也稱之為scene detection。
基于傳統方法去做,就是找相鄰幀之間的差異,然后設定一個閾值去判斷,pyscenedetect這個庫就是做這個事的。這個庫可以把大部分的硬拼接切割的比較好,但是存在兩個問題:
- 對于高速運動的物體,且視頻幀率不高時,相鄰幀之間的差異就會很大,這就會被誤判為是一個硬拼接
- 對于軟拼接,效果是單純的不好,特別是那些比較長的轉場。
于是深度學習就出場了。TransNet以及TransNet V2都是為了解決以上這兩個問題而出現的,后者是前者的升級版。
2 模型結構簡述
2.1 TransNet
TransNet的結構由下圖所示,其官方實現可見這里,其結構可見圖3。這個模型的結構非常簡單,輸入為長度為NNN的序列幀,且被resize為48×2748 \times 2748×27,序列幀會經過4個Dilated 3D CNN,這四個Dilated 3D CNN的dilation rates在時間維度上是不同的。作者說這么做是因為相對于標準的3D CNN,要看到同樣的感受野,這樣的做法會減少訓練參數量。然后把這些特征concat起來,這整個block叫做一個DDCNN cell。如果再加上一個max pooling,那就是SDDCNN block,這樣的cell和block會堆疊多次,可以很深。最后經過兩層全連接和softmax,輸出N×2N \times 2N×2的一個向量,表示輸入的每幀是否是shot boundary。
2.2 TransNet V2
TransNet V2是TransNet的升級版,其官方實現可見這里,其結構可見圖4。它是在TransNet的基礎上進行改進的,主要的改進點有如下幾個:
- 加入了batch normalization和殘差網絡結構。
- 在訓練時加入了噪聲。
- 將3D的k×k×kconvolutionk \times k \times k \ convolutionk×k×k?convolution分解為了2D的k×kconvolutionk \times k \ convolutionk×k?convolution和一個kernel size為kkk的1D temporal convolution。這個做法可以強迫模型去分別學習圖像特征和時間維度的特征。
- 把連續幀的RGB color histogram和卷積輸出的特征相似性作為特征,也就是圖4中的兩個紅色方框。
- 增加了一個head,用于預測整個transition的frames,這個多加的head僅用于訓練,不用于預測,另一個head還是和TransNet中保持一致。也就是在遇到軟拼接的時候,原始的head只預測中間那一幀為shot boundary,新增加的head會預測整個transition的所有幀為shot boundary。
3 數據集的構建
模型的結構就算不去深究它也沒關系,因為說到底就是拿3D CNN去train一發,結構上的改進帶來的提升也沒有特別大。數據是我比較關心的一塊,一個好的數據集,往往比一個好的結構有更棒的提升作用。在這個shot boudary detection的任務當中,有一個非常令人興奮的事情就是,它的數據集幾乎是零成本的。
我們只需要找到一大堆短視頻,時長可以不要太長也不要太短,然后我們隨意去硬拼接或者軟拼接這些視頻就有了我們的數據集。因為拼接是我們自己做的,因此shot boundary在哪里我們也是比誰都清楚的。唯一需要成本的就是測試集。為了檢驗數據的真實效果,測試集還是需要人工去標注一批的。
這里要注意的就是,我們使用的短視頻需要是沒有轉場的鏡頭在里面的,不然就有臟數據了。
另一個值得一提的是,粗剪的時候,設計師希望把一些虛幀也給剪掉,這也有辦法,我們把這些虛幀也作為轉場標進去就可以了。不過這個可能得要人工去標注了。能不能合成,還真沒調研過,能合成自然是最好的。
4 模型效果
最終的結果就是對每一幀打一個分,可見下圖4。預測transition第一幀的head的概率值是圖中的綠色柱子,預測整個transition的是圖中的藍色柱子。可以看一下軟拼接部分這兩者概率的不同。可以根據實際場景去使用,但基本還是只用綠色柱子。
數據集的構成是對模型的效果有一定影響的,在TransNet V2中,作者測試了人工標注的數據集和合成的數據集用于訓練對模型最終效果的影響。real是人工標注的,cuts是合成的硬拼接,dissolves是合成的軟拼接。從在三個數據集下測試的效果可以看出人工標注的訓練集,并沒有帶來太多的提升,反而還是用合成的數據集更好。結果如下表1所示,其中的指標為f1-score。
表1 不同訓練集的效果比較
不同模型的效果如下表2所示,其中的指標為f1-score。可見TransNet V2相對而言更好。
5 參考文獻
[1] TransNet: A deep network for fast detection of common shot transitions
[2] TransNet V2: An e!ective deep network architecture for fast shot transition detection
[3] pyscenedetect
總結
以上是生活随笔為你收集整理的论文阅读 - TransNet and TransNet V2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python web开发 CSS基础
- 下一篇: LeetCode 2166. 设计位集(