我下面的代码是为鸟类叫声的 bmp 文件创建分类工具。我看到的代码主要用于 rgb 图像,我想知道我需要做哪些更改才能为灰度图像自定义它。我是 keras 的新手,感谢任何帮助。
有 bird (n=250) 和 unknown (n=400) 两类。该模型的准确度约为 0.5,不会增加。
关于如何进行更改以适应灰度图像的任何建议?
代码:
train_data_gen <- image_data_generator(rescale = NULL, data_format = "channels_first",
validation_split = .2)
train_images <- flow_images_from_directory(path_train,
train_data_gen,
subset = 'training',
target_size = target_size,
class_mode = "categorical",
shuffle=F,
batch_size = 32,
classes = label_list,
seed = 2021)
validation_images <- flow_images_from_directory(path_train,
train_data_gen,
subset = 'validation',
target_size = target_size,
class_mode = "categorical",
batch_size = 32,
classes = label_list,
seed = 2021)
#train the model
mod_base <- application_xception(weights = 'imagenet',
include_top = FALSE, input_shape = c(width, height,3))
freeze_weights(mod_base)
model_function <- function(learning_rate = 0.0001,
dropoutrate=0.3, n_dense=1024){
k_clear_session()
model <- keras_model_sequential() %>%
mod_base %>%
layer_global_average_pooling_2d() %>%
layer_dense(units = n_dense) %>%
layer_activation("relu") %>%
layer_dropout(dropoutrate) %>%
layer_dense(units=output_n, activation="sigmoid")
model %>% compile(
loss = "categorical_crossentropy",
optimizer = optimizer_adam(learning_rate),
metrics = "accuracy"
)
return(model)
}
model <- model_function()
batch_size <- 32
epochs <- 6
hist <- model %>% fit_generator(
train_images,
steps_per_epoch = train_images$n %/% batch_size,
epochs = epochs,
validation_data = validation_images,
validation_steps = validation_images$n %/% batch_size,
verbose = 2
)
#testing the model with new set of test data
path_test <- "testDataFinalBmp/"
batch_size <- 32
epochs <- 6
test_data_gen <- image_data_generator(rescale = NULL)
test_images <- flow_images_from_directory(path_test,
test_data_gen,
target_size = target_size,
class_mode = "categorical",
#steps_per_epoch = test_images$n %/% batch_size,
classes = label_list,
shuffle = F,
seed = 2021)
model %>% evaluate(test_images,
steps = test_images$n%/%batch_size)
###predictor table
epochs = 6
batch_size = 32
predictions <- model%>%
predict_generator(
generator = test_images,
steps = test_images$n,
) %>% as.data.frame