2016-05-02 14 views
5

Po przejściu przez klatkę wideo i uzyskaniu mapy funkcji wyjściowych, w jaki sposób przekazujesz te dane do LSTM? Ponadto, w jaki sposób przekazać wiele ramek do LSTM przez CNN?
W innych pracach chcę przetwarzać klatki wideo z CNN, aby uzyskać funkcje przestrzenne. Następnie chcę przekazać te funkcje do LSTM, aby wykonać czasowe przetwarzanie na obiektach przestrzennych. Jak połączyć LSTM z funkcjami wideo? Na przykład, jeśli wideo wejściowe to 56x56, a następnie po przejściu przez wszystkie warstwy CNN, powiedzmy, że wychodzi ono jako 20: 5x5. W jaki sposób są one połączone z LSTM na podstawie klatka po klatce? I czy oni najpierw przechodzą przez całkowicie połączoną warstwę? Dzięki, JonW jaki sposób przekazujesz funkcje wideo z CNN do LSTM?

Odpowiedz

1

enter image description here

Architektura cnn modelu + LSTM będzie wyglądać jak na poniższym schemacie Zasadniczo trzeba stworzyć czasu rozproszoną otoki dla warstwy CNN, a następnie przekazać wyjście CNN do warstwy LSTM

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) 

Po tym można zdać wyjście CNN LSTM

lstm = LSTM(128, return_sequences=True, activation='tanh')(merged) 
op =TimeDistributed(Dense(100))(lstm) 
fun_model = Model(inputs=[cnn_input], outputs=op) 

należy pamiętać, że wejście do tego czasu rozproszonych CNN musi być (liczba klatek, row_size, column_size, kanałów)

i wreszcie można zastosować Softmax w ostatniej warstwy, aby uzyskać pewne przewidywania

+0

Dziękujemy , to wspaniale! – Jon

+0

Myślę, że zasługuję na przegłosowanie :-) – naaviii