在keras中使用Conv3d将多个图像输入到同一个CNN

2023-12-12

我想使用 conv3d 将 8 张图像同时输入到同一个 CNN 结构中。我的CNN模型如下:

def build(sample, frame, height, width, channels,  classes):
    model = Sequential()
    inputShape = (sample, frame, height, width, channels)
    chanDim = -1

    if K.image_data_format() == "channels_first":
        inputShape = (sample, frame, channels, height, width)
        chanDim = 1


    model.add(Conv3D(32, (3, 3, 3), padding="same", input_shape=inputShape))
    model.add(Activation("relu"))
    model.add(BatchNormalization(axis=chanDim))
    model.add(MaxPooling3D(pool_size=(2, 2, 2), padding="same", data_format="channels_last"))
    model.add(Dropout(0.25))

    model.add(Conv3D(64, (3, 3, 3), padding="same"))
    model.add(Activation("relu"))
    model.add(BatchNormalization(axis=chanDim))
    model.add(MaxPooling3D(pool_size=(2, 2, 2), padding="same", data_format="channels_last"))
    model.add(Dropout(0.25))
    model.add(Flatten())
    model.add(Dense(128))    #(Dense(1024))
    model.add(Activation("relu"))
    model.add(BatchNormalization())
    model.add(Dropout(0.5))

    # softmax classifier
    model.add(Dense(classes))
    model.add(Activation("softmax")

模型的训练过程如下:

IMAGE_DIMS = (57, 8, 60, 60, 3) # since I have 460 images so 57 sample with 8 image each
data = np.array(data, dtype="float") / 255.0
labels = np.array(labels)
# binarize the labels
lb = LabelBinarizer()
labels = lb.fit_transform(labels)
# note: data is a list of all dataset images
(trainX, testX, trainY, testY) train_test_split(data, labels, test_size=0.2, random_state=42)                                                                                                          
aug = ImageDataGenerator(rotation_range=25, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode="nearest")

# initialize the model
model = CNN_Network.build(sample= IMAGE_DIMS[0], frame=IMAGE_DIMS[1],
                      height = IMAGE_DIMS[2], width=IMAGE_DIMS[3],
                      channels=IMAGE_DIMS[4], classes=len(lb.classes_))

opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS)
model.compile(loss="categorical_crossentropy", optimizer= opt, metrics=["accuracy"])

# train the network
model.fit_generator(
aug.flow(trainX, trainY, batch_size=BS),
validation_data=(testX, testY),
steps_per_epoch=len(trainX) // BS,
epochs=EPOCHS, verbose=1)

我对 input_shape 感到困惑,我知道 Conv3D 需要 5D 输入,输入是 4D 并从 keras 添加批次,但出现以下错误:

ValueError: Error when checking input: expected conv3d_1_input to have 5 dimensions, but got array with shape (92, 60, 60, 3)

谁能帮我我该怎么办? 92 结果是什么,我用 (57, 8, 60, 60, 3) 确定 input_shape。我的 input_shape 应该变成什么,才能同时将 8 个彩色图像输入到同一模型。


** 编辑:更新了链接Here是一个自定义图像数据生成器,用于 Conv3D 网络的 5D 输入。希望能帮助到你。以下是有关如何使用它的示例:

from tweaked_ImageGenerator_v2 import ImageDataGenerator
datagen = ImageDataGenerator()
train_data=datagen.flow_from_directory('path/to/data', target_size=(x, y), batch_size=32, frames_per_step=4)

OR

您可以构建自己的 5D 张量:

frames_folder = 'path/to/folder'
X_data = []
y_data = []
list_of_sent = os.listdir(frames_folder)
print (list_of_sent)
class_num = 0
time_steps = 0  
frames = []
for i in list_of_sent:
    classes_folder = str(frames_folder + '/' + i) #path to each class
    print (classes_folder)
    list_of_frames = os.listdir(classes_folder)
    time_steps= 0
    frames = []
    for filename in  sorted(list_of_frames):   
        if ( time_steps == 8 ):
            X_data.append(frames) #appending each tensor of 8 frames resized to 110,110
            y_data.append(class_num) #appending a class label to the set of 8 frames
            j = 0  
            frames = []
        else:
            time_steps+=1
            filename = cv2.imread(vid + '/' + filename)
            filename = cv2.resize(filename,(110, 110),interpolation=cv2.INTER_AREA)
            frames.append(filename)


    class_num+=1
X_data = np.array(X_data)
y_data = np.array(y_data)

对于上面的代码片段,文件夹结构必须如下所示:

    data/
        class0/
            img001.jpg
            img002.jpg
            ...
        class1/
            img001.jpg
            img002.jpg
            ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在keras中使用Conv3d将多个图像输入到同一个CNN 的相关文章

  • Pygame读取MIDI输入

    我参考了Pygame MIDI 文档 https www pygame org docs ref midi html and 这段代码 https stackoverflow com questions 62983509 pygame mi
  • 在 Django 中定义视图和 url。为什么调用函数时不使用括号?

    我已经在经历 Python速成课程 目前正在进行 Django Web应用程序项目 学习日志 阶段 有些东西与我已经学到的相矛盾 views py file from django shortcuts import render def i
  • 如何在 Ubuntu 上安装 Python 模块

    我刚刚用Python写了一个函数 然后 我想将其做成模块并安装在我的 Ubuntu 11 04 上 这就是我所做的 创建 setup py 和 function py 文件 使用 Python2 7 setup py sdist 构建分发文
  • 如何用 python 和 sympy 解决多元不等式?

    我对使用 python 和 Sympy 还很陌生 并且遇到了使用 sympy 解决多元不等式的问题 假设我的文件中有很多函数 如下所示 cst sqrt x 2 cst exp sqrt cst x 1 4 log log sqrt cst
  • 获取单个方程的脚本

    在文本文件中输入 a 2 8 b 3 9 c 4 8 d 5 9 e a b f c d g 0 6 h 1 7 i e g j f h output i j 期望的输出 输出 2 8 3 9 0 6 4 8 5 9 1 7 如果输入文件名
  • 如何自动替换多个文件的文本内容中的字符?

    我有一个文件夹 myfolder包含许多乳胶表 我需要替换其中每个字符 即替换任何minus sign by an en dash 只是为了确定 我们正在替换连字符INSIDE该文件夹中的所有 tex 文件 我不关心 tex 文件名 手动执
  • 在 Python 中使用 sec 函数的反函数

    我正在创建一个程序 用于计算从一定高度范围和设定初始速度发射射弹的最佳角度 在我需要使用的最终方程中 存在一个反 sec 函数 它导致了一些麻烦 我已经导入了数学并尝试使用 asec 无论如何 但是数学似乎无法计算反秒函数 我也明白 sec
  • Python3 查找 2 个列表中有多少个差异才能相等

    假设我们有 2 个列表 always具有相同的长度和always包含字符串 list1 sot sot ts gg gg gg list2 gg gg gg gg gg sot 我们需要找到 其中有多少项list2应该改变 以便它等于lis
  • 如何使用 openpyxl 对工作簿中的 Excel 工作表/选项卡进行排序

    我需要按字母数字对工作簿中的选项卡 工作表进行排序 我在用openpyxl https openpyxl readthedocs io en default 操作工作表 您可以尝试排序workbook sheets list workboo
  • 如何在 Windows 上使用 Python 3.6 来安装 Python 2.7

    我想问一下如何使用pip install对于 Python 2 7 当我之前安装并使用 Python 3 6 时 我现在必须使用 Windows 上的 Python 版本 pip install 继续安装 Python 3 6 我需要使用以
  • Python unicode 字符代码?

    有没有办法将 Unicode 字符 插入 Python 3 中的字符串 例如 gt gt gt import unicode gt gt gt string This is a full block s unicode charcode U
  • 在wxpython中使用wx.TextCtrl并在按钮单击后显示数据的简单示例 - wx新手

    我正在学习 python 并尝试使用 wxpython 进行 UI 开发 也没有 UI exp 我已经能够创建一个带有面板 按钮和文本输入框的框架 我希望能够在文本框中输入文本 并让程序在单击按钮后对输入框中的文本执行操作 我可以获得一些关
  • 在 Mac 上安装 Pygame 到 Enthought 构建中

    关于在 Mac 上安装 Pygame 有许多未解答的问题 但我将在这里提出我的具体问题并希望得到答案 我在 Mac 上安装 Pygame 时遇到了难以置信的困难 我使用 Enthought 版本 EPD 7 3 2 32 位 它是我的默认框
  • 使用循环将对象添加到列表(python)

    我正在尝试使用 while 循环将对象添加到列表中 基本上这就是我想做的 class x pass choice raw input pick what you want to do while choice 0 if choice 1 E
  • 使用 python 将文本发送到带有逗号分隔符的列

    如何使用分隔符 在 Excel 中将一列分成两列 并使用 python 命名标题 这是我的代码 import openpyxl w openpyxl load workbook DDdata xlsx active w active a a
  • Python int 太大,无法放入 SQLite

    我收到错误 OverflowError Python int 太大 无法转换为 SQLite INTEGER 来自以下代码块 该文件约25GB 因此必须分部分读取 length 6128765 Works on partitions of
  • 如何逐像素绘制正方形(Python,PIL)

    在空白画布上 我想使用 Pillow 逐像素绘制一个正方形 我尝试使用 img putpixel 30 60 155 155 55 绘制一个像素 但它没有执行任何操作 from PIL import Image def newImg img
  • 是否可以写一个负的python类型注释

    这可能听起来不合理 但现在我需要否定类型注释 我的意思是这样的 an int Not Iterable a string Iterable 这是因为我为一个函数编写了一个重载 而 mypy 不理解我 我的功能看起来像这样 overload
  • Scrapy 蜘蛛无法工作

    由于到目前为止没有任何效果 我开始了一个新项目 python scrapy ctl py startproject Nu 我完全按照教程操作 创建了文件夹和一个新的蜘蛛 from scrapy contrib spiders import
  • 具有指定置信区间的 Seaborn 条形图

    我想在 Seaborn 条形图上绘制置信区间 但我已经计算出置信区间 如何让 Seaborn 绘制我的置信区间而不是尝试自行计算它们 例如 假设我有以下 pandas DataFrame x pd DataFrame Group 1 0 5

随机推荐

  • 根据javascript中的选择选项显示/隐藏div

    上网搜了一下 学会了如何做到这一点 实施了它 但这不起作用 我想在选择学生时显示 div 学生 在选择教师时显示 div 老师 这是 jsp 文件的一部分 HTML 代码 table tr td td tr table
  • strip_tags 足以从字符串中删除 HTML 吗?

    站点用户可以在站点上注册 并且在注册期间他可以提供名称 我希望这个名称是一个有效的名称 并且不含任何 HTML 和其他时髦字符 strip tags 足够吗 我发现没有单一的功能可以防止用户输入白痴 最好将几种混合在一起 val trim
  • 用 Python 读取 PowerPoint 表格?

    我正在使用 python pptx 模块自动更新 powerpoint 文件中的值 我可以使用以下代码提取文件中的所有文本 from pptx import Presentation prs Presentation path to pre
  • 如何很好地将qint64“转换”为QProgressBar的int

    我正在使用 QFtp 是的 我知道 并且一切正常 使用他们自己的示例中的代码作为指导 http doc qt io archives qt 4 7 network qftp ftpwindow cpp html 我遇到的唯一问题是发送 或接
  • 如何执行 SQL 表中列出的 SQL Server 代理作业

    我试图将所有 SQL Server 代理作业存储在表名称中 并希望根据它们的加载频率来执行它们 CREATE TABLE Maintainance SQLJobName varchar 100 SQL Job Name which need
  • 从 Firebase 函数将数据返回到 Android [重复]

    这个问题在这里已经有答案了 我正在尝试做的事情 只需从 Firebase Cloud Function 返回数据即可 该函数用于在支付网关的服务器中创建支付订单 我所需的有关订单详细信息的数据位于function err data 见下文
  • 像松弛评论框反应原生的动画

    我正在开发一个评论框 在向上滑动操作时将其扩展到设备的高度 并在向下滑动操作时返回到其原始高度 但我无法向其中添加动画 因为该功能无法按照我想要的方式工作 作为参考 我们可以讨论松弛评论框动画 我的代码如下 code 小吃链接 https
  • split(" +") 和 split(" ") 不同

    我想消除字符串中的真空 String input java example java aaa bbb String temp input trim split 结果是 java 示例 javaaaabbb 但我想要的结果是 java示例 j
  • Javascript非对称加密和认证

    这里的一些人正在开发一个应用程序 其中包含一些可通过登录访问的 安全区域 在过去 登录表单和后续的 安全 页面都是通过 http 传输的纯文本 因为它是一个用于访问的应用程序 在几乎不可能使用 SSL 的共享服务器上使用 例如 WordPr
  • setState() 位于 componentDidUpdate() 内部

    我正在编写一个脚本 该脚本根据下拉菜单的高度和屏幕上输入的位置将下拉菜单移动到输入下方或上方 我还想根据其方向将修饰符设置为下拉菜单 但使用setState里面的componentDidUpdate创建无限循环 这是显而易见的 我找到了使用
  • Java中如何转义引号

    我被这个问题困住了 我有一个ResultSet写入 html 报告 这ResultSetis writer write td a href rsevidencia getString Evidencia a a a td 但该链接不起作用
  • React Native 要求图像与变量中断

    为什么这条线工作时没有错误 var gicon species ii color 0 require assets gLight jpg require assets nLight png 而这一行会抛出错误 which light gLi
  • 如何设置PHP下载文件到特定目录?

    我正在寻找有关此问题的一些一般指导 我创建了一个使用 cURL 下载 csv 文件的 PHP 脚本 目前 当我运行脚本时 它会将文件下载到我的计算机 我想修改下载路径以将其路由到我的网络主机上的目录 有没有什么简单的方法可以用 PHP 来做
  • UIImage 的高质量缩放

    我需要缩放来自 iPhone 应用程序中视图层的图像的分辨率 显而易见的方法是在 UIGraphicsBeginImageContextWithOptions 中指定比例因子 但只要比例因子不是 1 0 图像质量就会受到影响 远远超出像素损
  • 将div变成链接

    我有一个 div 阻止一些我不想改变的奇特的视觉内容 我想让它成为一个可点击的链接 我正在寻找类似的东西 a href div div a 但这是有效的 XHTML 1 1 来到这里是希望找到一个更好的解决方案 但我不喜欢这里提供的任何解决
  • 使用存储在一个固定(流)文档中的 VisualBrush 进行及时控制的快照

    我需要及时拍摄 Control 的快照并将它们存储在一个固定文档中 问题是 VisualBrush 在某种程度上是 懒惰的 并且不会通过将其添加到文档来评估自身 当我最终创建文档时 所有页面都包含相同 最后 的控制状态 虽然 VisualB
  • Jasper iReport 自定义日期和自定义时间

    在 Excel 中 我有一个日期格式 yyyy MM dd hh mm 和一个时间格式 hh mm 我将其设置为 iReport 数据库的源 对于日期 我在 iReport 中设置了自定义日期格式 与 Excel 中相同 然后我设置类 ja
  • Keras 模型训练良好,但预测的值相同

    让我们尝试制作MobileNet V 2在嘈杂的图像上找到一条亮带 是的 使用深度卷积网络来实现这样的策略有点过分了 但最初它的目的就像烟雾测试一样 以确保模型有效 我们将使用合成数据对其进行训练 import numpy as np im
  • matplotlib 中的自动缩放,在同一图表中绘制不同的时间序列

    我有一个 主 熊猫数据框 其中包含多个术语的 极性 值的时间序列 我想使用其中的 4 个 因此我提取了 4 个单独的数据帧 其中包含时间序列 所有术语的时间序列相同 但极性值不同 我使用下面的代码将它们绘制在 4 个单独的 matplotl
  • 在keras中使用Conv3d将多个图像输入到同一个CNN

    我想使用 conv3d 将 8 张图像同时输入到同一个 CNN 结构中 我的CNN模型如下 def build sample frame height width channels classes model Sequential inpu