Image classification in R programming can be accomplished using various packages and techniques. One popular approach is to use convolutional neural networks (CNNs), which are deep learning models specifically designed for image analysis tasks. Here's an example of image classification in R using the `keras` package, which provides an interface to the Keras deep learning library:
1. Install the necessary packages:
```R
install.packages("keras")
library(keras)
```
2. Load and preprocess the image data:
```R
# Specify the path to your image dataset
train_dir <- "path_to_train_images_directory"
test_dir <- "path_to_test_images_directory"
# Set image dimensions and batch size
img_width <- 150
img_height <- 150
batch_size <- 32
# Prepare the image data generator
train_datagen <- image_data_generator(
rescale = 1/255, # Normalize pixel values
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = TRUE
)
test_datagen <- image_data_generator(rescale = 1/255)
# Generate training and testing data batches
train_data <- flow_from_directory(
train_dir,
target_size = c(img_width, img_height),
batch_size = batch_size,
class_mode = "categorical"
)
test_data <- flow_from_directory(
test_dir,
target_size = c(img_width, img_height),
batch_size = batch_size,
class_mode = "categorical"
)
```
3. Build the CNN model:
```R
# Create a sequential model
model <- keras_model_sequential()
# Add convolutional layers
model %>%
layer_conv_2d(filters = 32, kernel_size = c(3, 3), activation = "relu",
input_shape = c(img_width, img_height, 3)) %>%
layer_max_pooling_2d(pool_size = c(2, 2))
model %>%
layer_conv_2d(filters = 64, kernel_size = c(3, 3), activation = "relu") %>%
layer_max_pooling_2d(pool_size = c(2, 2))
model %>%
layer_conv_2d(filters = 128, kernel_size = c(3, 3), activation = "relu") %>%
layer_max_pooling_2d(pool_size = c(2, 2))
# Flatten the 3D output to 1D
model %>% layer_flatten()
# Add dense layers for classification
model %>% layer_dense(units = 64, activation = "relu")
model %>% layer_dropout(rate = 0.5)
model %>% layer_dense(units = 2, activation = "softmax")
# Compile the model
model %>% compile(
loss = "categorical_crossentropy",
optimizer = optimizer_rmsprop(lr = 0.001),
metrics = c("accuracy")
)
```
4. Train the model:
```R
# Set the number of training and validation steps per epoch
train_steps <- floor(train_data$n / batch_size)
valid_steps <- floor(test_data$n / batch_size)
# Train the model
history <- model %>% fit_generator(
train_data,
steps_per_epoch = train_steps,
epochs = 10,
validation_data = test_data,
validation_steps = valid_steps
)
```
5. Evaluate the model and make predictions:
```R
# Evaluate the model on the test data
loss_and_metrics <- model %>% evaluate_generator(
test_data,
steps = valid_steps
)
# Print the accuracy
accuracy <- loss_and_metrics[[2]]
print(paste("Accuracy:",
No comments:
Post a Comment