我正在尝试使用CNN + LSTM实现暴力识别器,但是当我训练模型时,它在各个时期产生的准确性与下图相同,在20个时期中达到了55%Right here 数据包含来自曲棍球数据集的100个视频暴力/非暴力视频,并通过裁剪黑帧,缩放的像素值[0至1]进行了预处理,并进行了归一化处理,其中均值为零,且标准差相同。输入形状为(100、20、160、160、3),分别是视频数,每个视频的帧数,帧高,帧宽和RGB通道。并将代表两个数组[0 1]或[1 0]的向量的形状(100,2)的标签张量作为浮点数提供给模型 模型代码
def CNN_LSTM():
input_shapes=(NUMBER_OF_FRAMES,IMAGE_SIZE,IMAGE_SIZE,3)
np.random.seed(1234)
vg19 = tensorflow.keras.applications.vgg19.VGG19
base_model=vg19(include_top=False,weights='imagenet',input_shape=(IMAGE_SIZE, IMAGE_SIZE,3))
for layer in base_model.layers:
layer.trainable = True
cnn = TimeDistributed(base_model, input_shape=(NUMBER_OF_FRAMES, IMAGE_SIZE, IMAGE_SIZE, 3))
model = Sequential()
model.add(Input(shape=(NUMBER_OF_FRAMES, IMAGE_SIZE, IMAGE_SIZE, IMAGE_CHANNELS)))
model.add(cnn)
model.add(TimeDistributed(Flatten()))
model.add(LSTM(NUMBER_OF_FRAMES , return_sequences= True))
model.add(BatchNormalization())
model.add(TimeDistributed(Dense(90)))
model.add(BatchNormalization())
model.add(GlobalAveragePooling1D())
model.add(BatchNormalization())
model.add(Dense(512, activation='relu'))
model.add(BatchNormalization())
model.add(Dense(2, activation="sigmoid"))
adam = Adam(lr=0.01)
model.compile(loss='binary_crossentropy', optimizer=adam, metrics=["accuracy"])
return model
x = CNN_LSTM()
x.summary()
history = x.fit(fvideo,flabels, batch_size=10, epochs=15)`
如何解决相同精度的问题?预先感谢