我是一名初学者,正在使用该keras_flow_from_dataframe课程训练有关糖尿病视网膜病变的图像数据集。但是我的模型一直欠拟合。因此,我尝试使用 OpenCV 的自适应阈值实现,通过编写要在我的图像数据生成器类中传递的自定义预处理函数来进行预处理。当我在 Keras 之外使用它时,该函数运行良好,但是当我将它添加到我的图像数据生成器类并适合我的模型时,它会bad argument type for built-in operation在我的第一个纪元开始之前返回一个类型错误。
这是预处理代码:
def preprocess(im):
im = cv2.imread(im, 1)
im= cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
im=cv2.resize(im, (300,300))
im.resize(300, 300, 1)
block_size = 73
constant = 2
# ADAPTIVE GAUSSIAN THRESHOLDING
thr2 = cv2.adaptiveThreshold(im, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, block_size, constant)
return thr2
当我用数据帧中的图像测试它时,它在 Keras 之外运行良好,但是当我将它添加到我的图像数据生成器类时,它会引发错误。
train_datagen = ImageDataGenerator(
rotation_range=30,
width_shift_range=0.4,
height_shift_range=0.4,
shear_range=0.3,
zoom_range=0.3,
horizontal_flip = True,
fill_mode='nearest',
preprocessing_function = preprocess)
valid_datagen = ImageDataGenerator(preprocessing_function = preprocess)
然后我从数据帧加载我的数据集:
from keras.preprocessing.image import ImageDataGenerator
traingen = train_datagen.flow_from_dataframe(x_train, x_col='path', y_col='level',class_mode='other',
target_size=(300,300), color_mode='grayscale', batch_size=16)
validgen = valid_datagen.flow_from_dataframe(valid, x_col='path', y_col='level',class_mode='other',
target_size=(300,300), color_mode='grayscale', batch_size=16)
然后我使用 拟合模型model.fit_generator,然后抛出类型错误:bad argument type for built-in operation。
慕田峪9158850
POPMUISE
相关分类