0

我想用 keras 从 x 射线图像构建一个 covid-19 cnn 检测器,我的输入形状是(224,244,3) ,但我不知道如何将我的数据集图像更改为那个大小找不到特定的资源,我也观看了许多 youtube 视频他们都为 X 射线照片(用于输入形状)放置了 3 个通道,而它是黑白的,任何人都可以解释

我正在使用谷歌 colab

4

2 回答 2

0

尝试这个,

我假设您有不同形状的图像,现在为了达到 (224,224,3) 的大小,您需要按照以下步骤操作。

步骤1

在变量中定义形状大小

IMG_SHAPE  = 224

第2步

如果您使用的是flow_from_directory方法,则通过target_size如下方式。

image_gen_train = ImageDataGenerator(rescale = 1./255,rotation_range = 40,width_shift_range=0.2,height_shift_range=0.2,shear_range = 0.2,
                                     zoom_range = 0.2,horizontal_flip = True,fill_mode = 'nearest')
train_data_gen = image_gen_train.flow_from_directory(batch_size = batch_size,
                                                     directory = train_dir,
                                                     shuffle= True,
                                                     target_size = (IMG_SHAPE,IMG_SHAPE),
                                                    class_mode  = "categorical")

第三步

现在在模型架构的卷积层中传递input_shape如下。

classifier = tf.keras.Sequential([
        tf.keras.layers.Conv2D(16,(3,3),activation='relu',input_shape=(IMG_SHAPE, IMG_SHAPE, 3)),
        tf.keras.layers.MaxPooling2D(2,2),

        tf.keras.layers.Conv2D(32,(3,3),activation='relu'),
        tf.keras.layers.MaxPooling2D(2,2),

        tf.keras.layers.Conv2D(64,(3,3),activation='relu'),
        tf.keras.layers.MaxPooling2D(2,2),
        
        tf.keras.layers.Conv2D(128,(3,3),activation='relu'),
        tf.keras.layers.MaxPooling2D(2,2),

        tf.keras.layers.Dropout(0.32),
        tf.keras.layers.Flatten(),
        tf.keras.layers.Dense(1024,activation= 'relu'),
        tf.keras.layers.Dense(3, activation = "softmax")  
])
于 2021-02-01T06:22:57.540 回答
0

尝试这个:

我假设您的数据集图像在文件夹内images

import pandas as pd
import numpy as np
import os, cv2
for image in os.listdir(os.path.join("images")):
  img = cv2.imread(os.path.join("images",image))
  img = cv2.resize(img, (224,224,3))
  cv2.imwrite(os.path.join("images", image), img)
于 2021-01-31T12:36:51.167 回答