1. 程式人生 > >CNN(卷積神經網路)在視訊動作分類中的應用

CNN(卷積神經網路)在視訊動作分類中的應用

簡介

最近接觸了一些卷積神經網路的只是以及其在視訊動作分類中的應用,本文對其進行一下小結。CNN在影象任務,比如ImageNet上取得很好的效果,但是在視訊相關的任務中還沒有太大的進展。取得比較好效果的有兩篇文章,一篇是Stanford發表在CVPR2014上的《Large-scale Video Classification with Convolutional Neural Networks》,另外一篇是NIPS2014上的《Two-Stream Convolutional Networks for Action Recognition in Videos》,下面分別介紹一下兩篇文章的大致內容:

Large-scale Video Classification with Convolutional Neural Networks

在這篇文章中我認為其主要的貢獻有兩點:一個是實驗了不同的卷積神經網路的結果,從而在CNN中表示出視訊的時間資訊,二是介紹了一種multi-resolution的CNN結構,從而減少了網路的引數,加速了訓練的時間。

Fusion Method

這部分內容比較瞭如圖所示的四種不同的CNN結構:

這裡寫圖片描述

  1. single frame:就是把一幀幀的影象分別輸入到CNN中去,和普通的處理影象的CNN沒有區別。
  2. late fution:把相聚L的兩幀影象分別輸入到兩個CNN中去,然後在最後一層連線到同一個full connect的softmax層上去。
  3. early fution:把連續L幀的影象疊在一起輸入到一個CNN中去。
  4. slow fution:和上邊的CNN的區別在於一個卷積核的輸出不是一個二維的影象,而是一個三維的影象。下面一張圖很好的解釋了這種區別:

這個圖解釋了幾種不同的卷積的區別,來自《C3D Generic Features for Video Analysis》一文。
這裡寫圖片描述

Multi-resolution CNN

文章的這部分介紹了一種簡化神經網路結構和加速訓練的CNN結構,如圖所示:

這裡寫圖片描述

簡單來說,對於一張大的輸入影象,比如為178 * 178大小,我們分別擷取其中間的89 * 89部分和將其縮小成89 * 89大小從而分別作為兩個卷積層的輸入。

Two-Stream Convolutional Networks for Action Recognition in Videos

這篇文章的內容相對比較簡單,其設計的CNN的結構如下所示:

這裡寫圖片描述

這個其實就是兩個獨立的神經網路了,最後再把兩個模型的結果平均一下。上邊一個就是普通的single frame的CNN,而且文章當中提到了,這個CNN是在ImageNet的資料上pre-train,然後在視訊資料上調整最後一層(直接把其他人訓練好的CNN如vgg拿來微調一下最後一層我想也是可以的罷?)。下面的一個CNN網路,就是把連續幾幀的光流疊起來作為CNN的輸入,這個倒是沒有在其他地方看到過似乎。
另外,這個文章中提到的有意思的一點就是multi-task learning來克服資料量不足的問題。其實就是CNN的最後一層連到多個softmax的層上,對應不同的資料集,這樣就可以在多個數據集上進行multi-task learning。