1

我正在尝试设计一个预训练的 cnn + lstm 网络以进行视频质量评估。我已经完成了这些步骤:

  1. 提取帧及其质量得分。
  2. 将它们调整为 224*224

我想使用此代码,它与视频分类有关,我渴望更改一些行以将其转换为回归问题。

我有一个问题,希望你能帮助我解决我的问题。我的网络的输入是帧数,例如 70 帧,我的网络输出将是输入帧分数的平均值。任何机构都可以根据我的愿望目标帮助我修改这些代码吗?

from keras.applications.vgg16 import VGG16
from keras.models import Model
from keras.layers import Dense, Input
from keras.layers.pooling import GlobalAveragePooling2D
from keras.layers.recurrent import LSTM
from keras.layers.wrappers import TimeDistributed
from keras.optimizers import Nadam

frames  = 70
channels= 3
rows    = 224
columns = 224

classes = 3

video = Input(shape=(frames,rows,columns,channels))
                     
cnn_base = VGG16(input_shape=(rows,columns,channels),weights="imagenet",include_top=False)
                 
cnn_out = GlobalAveragePooling2D()(cnn_base.output)

cnn = Model(input=cnn_base.input, output=cnn_out)

cnn.trainable = False

encoded_frames = TimeDistributed(cnn)(video)
encoded_sequence = LSTM(256)(encoded_frames)
hidden_layer = Dense(output_dim=1024, activation="relu")(encoded_sequence)
outputs = Dense(output_dim=classes, activation="softmax")(hidden_layer)
model = Model([video], outputs)

optimizer = Nadam(lr=0.002,
                  beta_1=0.9,
                  beta_2=0.999,
                  epsilon=1e-08,
                  schedule_decay=0.004)
                  
model.compile(loss="categorical_crossentropy",
              optimizer=optimizer,
              metrics=["categorical_accuracy"]) 
              
model.summary()
4

0 回答 0