微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将数据加载到 Conv3d 以进行视频分类?

如何解决如何将数据加载到 Conv3d 以进行视频分类?

我有 2 个文件夹,其中包含 2 个类的视频。一个包含打篮球的人,另一个包含骑自行车的人。如何加载这些数据来训练我的网络?许多教程建议先转换 .h5,还有其他方法吗?这是我的代码

import numpy as np
import tensorflow as tf
import pathlib

class Conv3D_Block(tf.keras.layers.Layer):
    def __init__(self,filters,kernel_size,padding='same',**kwargs):
        super(Conv3D_Block,self).__init__(**kwargs)
        self.filters = filters
        self.kernel_size = kernel_size
        self.padding = padding

    def __call__(self,inputs,*args,**kwargs):
        x = tf.keras.layers.Conv3D(self.filters,kernel_size=self.kernel_size,padding=self.padding,kernel_initializer='he_normal',kernel_regularizer=tf.keras.regularizersl1(1e-6))(inputs)
        x = tf.keras.layers.Batchnormalization()(x)
        x = tf.keras.layers.Activation('relu')(x)
        return x


def conv3d_l(input_shape,classes=2):
    img_input = tf.keras.layers.Input(shape=input_shape)

    conv3d_1 = Conv3D_Block(64,kernel_size=(3,3,3))(img_input)
    conv3d_1 = tf.keras.layers.concatenate([img_input,conv3d_1],axis=-1)

    conv3d_2 = Conv3D_Block(128,3))(conv3d_1)
    conv3d_2 = tf.keras.layers.concatenate([conv3d_b1,conv3d_2],axis=-1)

    td_flatten = tf.keras.layers.Timedistributed(tf.keras.layers.Flatten())(conv3d_2)

    bd_rnn = tf.keras.layers.LSTM(128,return_sequences=False)(td_flatten)

    x = tf.keras.layers.Dense(64,activation='relu')(bd_rnn)
    x = tf.keras.layers.Dense(classes,activation='softmax')(x)

    return tf.keras.models.Model(inputs=img_input,outputs=x)

data_file = pathlib.Path("data/videos")

model = conv3d_l(input_shape=(None,32,5),classes=2)
model.compile(optimizer="adam",loss=tf.keras.losses.CategoricalCrossentropy(),metrics=['accuracy'])

model.fit(x_train,y_train,epochs=2,validation_data=(x_test,y_test))

我如何获得 x_trainy_trainx_testy_test

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。