2016-05-02 19 views
5

convnetでビデオフレームを渡して出力フィーチャマップを取得したら、そのデータをLSTMにどのように渡しますか?また、複数のフレームをCNN経由でLSTMに渡すにはどうしたらいいですか?
他の作品では、CNNでビデオフレームを処理して空間的な特徴を取得したいと考えています。次に、これらのフィーチャをLSTMに渡して、空間フィーチャを一時的に処理する必要があります。 LSTMをビデオ機能にどのように接続すればよいですか?たとえば、入力ビデオが56x56で、すべてのCNNレイヤーを通過すると、20:5x5のようになります。これらはフレーム単位でどのようにLSTMに接続されていますか?彼らは最初に完全につながった層を通過しますか? ありがとう、JonCNNのビデオ機能をLSTMにどのように渡しますか?

答えて

5

基本的には、各フレームの機能を平坦化して1つのLSTMセルに供給することができます。 CNNと同じです。 CNNの各出力を1つのLSTMセルに供給することができます。

FCについては、あなた次第です。

http://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-180.pdfからネットワーク構造を参照してください。

1

enter image description here

enter image description here CNN + LSTMモデルのアーキテクチャは は基本的にあなたがCNN層のための時間分散のラッパーを作成し、LSTM層にCNNの出力を渡す必要が以下の図のようになります

この後

cnn_input= Input(shape=(3,200,100,1)) #Frames,height,width,channel of imafe 
conv1 = TimeDistributed(Conv2D(32, kernel_size=(50,5), activation='relu'))(cnn_input) 
conv2 = TimeDistributed(Conv2D(32, kernel_size=(20,5), activation='relu'))(conv1) 
pool1=TimeDistributed(MaxPooling2D(pool_size=(4,4)))(conv2) 
flat=TimeDistributed(Flatten())(pool1) 
cnn_op= TimeDistributed(Dense(100))(flat) 

あなたはLSTM

にあなたのCNNの出力を渡すことができます
lstm = LSTM(128, return_sequences=True, activation='tanh')(merged) 
op =TimeDistributed(Dense(100))(lstm) 
fun_model = Model(inputs=[cnn_input], outputs=op) 

(フレーム、row_size、COLUMN_SIZE、チャンネル#)でなければなりません

CNNを分散し、この時に入力を覚えているし、最終的にあなたには、いくつかの予測

+0

を取得するために、最後の層でソフトマックスを適用することができますしてくださいありがとうございました、 すばらしい! – Jon

+0

私はupvoteに値すると思う:-) – naaviii

関連する問題