2016-05-02 17 views
5

Dopo aver passato un frame video attraverso una convnet e aver ottenuto una mappa delle caratteristiche di output, come si trasferiscono i dati in un LSTM? Inoltre, come si passano più frame all'LSTM attraverso la CNN?
In altri lavori, desidero elaborare i frame video con una CNN per ottenere le caratteristiche spaziali. Quindi voglio passare queste funzioni a un LSTM per eseguire l'elaborazione temporale sulle caratteristiche spaziali. Come collegare l'LSTM alle funzioni video? Ad esempio se il video di input è 56x56 e poi quando viene passato attraverso tutti i livelli CNN, diciamo che esce come 20: 5x5. In che modo questi sono connessi all'LSTM su una base fotogramma per fotogramma? E come prima cosa passano attraverso uno strato completamente connesso? Grazie, JonCome si passano le funzioni video da una CNN a una LSTM?

risposta

5

Fondamentalmente, è possibile appiattire ciascuna caratteristica del frame e alimentarle in una cella LSTM. Con la CNN, è lo stesso. È possibile alimentare ciascuna uscita della CNN in una cella LSTM.

Per FC, tocca a voi.

Vedere una struttura di rete da http://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-180.pdf.

enter image description here

1

enter image description here

L'architettura di CNN modello + LSTM sarà simile schema seguente Fondamentalmente si devono creare tempo involucro distribuito per strato CNN e quindi passare l'uscita del CNN allo strato 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) 

Dopo questo è possibile passare l'output CNN per LSTM

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

si ricorda l'ingresso a questa volta distribuita la CNN deve essere (# di fotogrammi, row_size, COLUMN_SIZE, canali)

e, infine, è possibile applicare softmax presso l'ultimo strato di ottenere alcune previsioni

+0

ringraziarvi , è grandioso! – Jon

+0

Penso di meritare un upvote :-) – naaviii