机器视觉:图像与视频朝向检测
在圖片社交、短視頻等行業,用戶在導入圖片、視頻的時候,偶爾會導入一些橫屏拍攝的視頻,使得圖片、視頻在呈現給用戶觀看的時候,是旋轉了90度或者270度的圖片、視頻(180度一般極其少見),從而給用戶造成不好的體驗,特別是以瀑布流方式展示的app。這類視頻,由于導入的時候,拿不到原始的拍攝標識信息,從而無法直接取到圖像、視頻是否旋轉的信息,而必須依賴視覺識別的方式,去判斷圖像、視頻是否旋轉。
對圖像朝向判斷問題,學術上研究得比較少,已有的論文主要還是以深度學習分類的方式去檢測,比如:
- Automatic Photo Orientation Detection with Convolutional Neural Networks
- Why My Photos Look Sideways or Upside Down? Detecting Canonical Orientation of Images Using Convolutional Neural Networks
對圖像Orientation Detection的難點主要在于:
- 當圖片、視頻中的物體有傾斜,但是圖片、視頻本身是正常放置的,容易造成誤檢。比如拍攝是一張大臉,但大臉有傾斜,或者拍攝的是一個床上斜躺著的寶寶;
- 當拍攝角度是向下或者向上的時,這類視頻容易造成誤分;比如拍攝天空、拍攝天花板等;
所以圖像Orientation Detection,在保證召回較好的前提下,準確率要做得非常好(準確率99%+以上,便于機器自動處理)還是很不容易的,特別是針對單張圖片檢測更是難上加難。不過,如果是短視頻行業,由于短視頻行業自身的一些特性,使得這個問題還是可以比較好的解決的。在短視頻行業,做圖像Orientation Detection可以利用的優勢主要有三點:
- 數據優勢。訓練數據不用標注,直接使用app自帶的相機拍攝的視頻,這些視頻可以認為是0度放置的,通過此種方式,可以獲取到無窮無盡的標簽噪聲非常少的訓練數據;
- 多幀檢測優勢。利用多幀檢測的方式,可以極大地提升檢測的準確率;
- Orientation Detection類型比較固定。通常主要是0度、90度和270度,180度幾乎不會出現,也就是用戶導入視頻進來的時候,如果有旋轉,主要是橫屏,幾乎不會存在把視頻上下反轉一下的情況;
有了0度的訓練數據,其他角度的數據,比如90度、270度(180度可以丟棄不檢測,因為出現這種導入情況的極少)可以通過0度變換一下便可得到。有了0度、90度、270度的訓練數據,訓練可以采用CNN分類模型直接分類即可。
檢測準確率提升
分類模型訓練好了后,如果只檢測一幀,準確率往往是不夠的,比如上面列舉的兩種情況,就極易以非常高的概率導致誤分,為了提升檢測的準確率,并保持還不錯的召回率,可以通過聯合使用下面兩種方式使得最終的檢測準確率達到99%+,這兩種方式分別為:
- 檢測多幀。比如一個視頻檢測3幀;
- 設置的檢測概率相對高一點。比如檢測3幀,兩幀朝向一致,且兩幀最小概率大于0.9的,則判斷為旋轉,旋轉方向為兩幀朝向的方向;
通過這樣兩種方式,可以在保持召回還不錯的情況下,獲得較高的準確率,最終達到機器自動處理的目的。
總結
視頻朝向檢測有自身多幀的優勢,如果是圖片社交app,單張圖片要達到非常高的準確率是極其困難的(在保持一定召回情況下)。
from:?http://yongyuan.name/blog/image-orientation-detection.html?
總結
以上是生活随笔為你收集整理的机器视觉:图像与视频朝向检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中的goto实现
- 下一篇: 视觉检索:视频多帧排序