2017-08-26 15 views
0

私は何千もの動画を持っており、それぞれに35という一定のフレーム数が含まれています。LSTMモデルをトレーニングして動画を分類しようとしています。しかし、私は人々がビデオの連続的な構造を維持し、LSTMモデルを鍛える方法を正確には知らない。動画を使ったLSTMモデルのトレーニングの構造

したがって、私がしたいのは、 CNNを経由して各フレームの

  1. データセット
  2. からビデオを読んで、ビデオや抽出機能の35個のフレームを取得
  3. LSTM層にそれらの35のフレームの機能をフィード - どのように私は35のフレーム(各ビデオを養うことができ)を一括してLSTMバッチに変換する?

Kerasの機能が使用されます。しかし、私はフィット関数のメモリにすべてのデータを読み込んでいる間、私はどのようにビデオのシーケンシャルな構造を保つことができるのか分かりません。

rm.model.fit(X,y,batch_size=batch_size, validation_data=(X_test, y_test),verbose=1, epochs=100) 

誰かが、私ははっきりと自分自身を説明することを願って、人々がビデオ(フレームのN数)でLSTMモデルを訓練する方法

を私に説明してくださいでした。

Keras形状で
(None, TimeSteps, DataDimension) 

Noneは、使用している例の数は次のとおりです。documentationから事前

答えて

1

おかげで、我々はすべてのKeras再発層によって予想される入力形状があることがわかります。 (第一層はLSTMがある場合)を使用する必要があります

(NumberOfVideos, NumberOfFrames, height * width * channels) 

そして、あなたの第一層:

LSTM(AnyNumberOfCells, input_shape=(NumberOfFrames, height * width * channels)) 

だから、最初のシンプルなアプローチで、あなたのトレーニングデータとして形持っている必要があります

モデルを作成するときにバッチサイズ(例の数)は考慮されません。練習データにのみ表示されます。そのためKerasはメッセージのそのディメンションに対してNoneを表示します。


は今、これが起動するための非常にシンプルかつ直感的な方法ですが、実際には、このようなあなたのトレーニングデータを整形する義務はありません、あなたはLSTMのために保つ限り、方法のすべての種類を試すことができますあなたのデータは、(BatchSize,TimeSteps,DataDimension)の形をしています。 LSTMでデータサイズを減らすために、最初にいくつかの畳み込みを行うのが良い方法です(私にはそう思われます)。次元 "高さ*幅*チャネル"はおそらくLSTM層で一度にすべてを処理するにはあまりにも多く、メモリの問題につながる可能性があります。

メモリに問題がある場合。 「発電機」またはKeras Sequencesを勉強することができます。これらはメソッドfit_generator()と共に使用されます。 Kerasはまず、ジェネレータを使用して限られた量のデータを読み込み、そのデータだけでトレーニングします。それでも、これらのジェネレータは同じ形式のものを出力させる必要があります(ASmallerNumberOfVideos, NumberOfFrames, height * width * channels)

これでもまだメモリに問題がある場合は、stateful=Trueのレイヤーを使用する必要があります。

この場合、「タイムステップ」は異なる配列で区切ることができます。あなたのLSTMレイヤーは、あなたが訓練するときに "ok、this example done"とは思えません。あなたがフィードする次のバッチは、「前のシーケンスを続ける」のように見なされます。

データは(NumberOfVideos,ReducedNumberOfFrames, h*w)のようになります。

この場合、十分な "ReducedNumberOfFrames"をトレーニングした後にシーケンスを完了するたびに、.reset_states()でネットワークの状態を手動でリセットする必要があります。

(ReducedNumberOfVideos,ReducedNumberOfFrames,h*w)のようにトレーニングを行い、トレーニングの適切なコントロールを維持し、正しいポイントに.reset_states()の2つのアイデアを共役させることができます。

関連する問題