使用keras进行灰度图像和分类

问题描述 投票:0回答:0

我下面的代码是为鸟类叫声的 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
r keras conv-neural-network grayscale image-classification
© www.soinside.com 2019 - 2024. All rights reserved.