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
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.
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
ringraziarvi , è grandioso! – Jon
Penso di meritare un upvote :-) – naaviii