createGoogLeNetModel2D: 2-D implementation of the GoogLeNet deep learning...

View source: R/createGoogLeNetModel.R

createGoogLeNetModel2DR Documentation

2-D implementation of the GoogLeNet deep learning architecture.

Description

Creates a keras model of the GoogLeNet deep learning architecture for image recognition based on the paper

Usage

createGoogLeNetModel2D(
  inputImageSize,
  numberOfOutputs = 1000,
  mode = c("classification", "regression")
)

Arguments

inputImageSize

Used for specifying the input tensor shape. The shape (or dimension) of that tensor is the image dimensions followed by the number of channels (e.g., red, green, and blue). The batch size (i.e., number of training images) is not specified a priori.

numberOfOutputs

Specifies number of units in final layer

mode

'classification' or 'regression'.

Details

C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erhan, V. Vanhoucke, A. Rabinovich, Going Deeper with Convolutions C. Szegedy, V. Vanhoucke, S. Ioffe, J. Shlens, and Z. Wojna. Rethinking the Inception Architecture for Computer Vision

available here:

    https://arxiv.org/abs/1409.4842
    https://arxiv.org/abs/1512.00567

This particular implementation was influenced by the following python implementation:

    https://github.com/fchollet/deep-learning-models/blob/master/inception_v3.py

Value

a GoogLeNet keras model

Author(s)

Tustison NJ

Examples


library( ANTsRNet )
library( keras )
library( ANTsR )

mnistData <- dataset_mnist()
numberOfLabels <- 10

# Extract a small subset for something that can run quickly.
# We also need to resample since the native mnist data size does
# not fit with GoogLeNet parameters.

resampledImageSize <- c( 100, 100 )
numberOfTrainingData <- 10
numberOfTestingData <- 5

X_trainSmall <- as.array(
  resampleImage( as.antsImage( mnistData$train$x[1:numberOfTrainingData,,] ),
    c( numberOfTrainingData, resampledImageSize ), TRUE ) )
X_trainSmall <- array( data = X_trainSmall, dim = c( dim( X_trainSmall ), 1 ) )
Y_trainSmall <- to_categorical( mnistData$train$y[1:numberOfTrainingData], numberOfLabels )

X_testSmall <- as.array(
  resampleImage( as.antsImage( mnistData$test$x[1:numberOfTestingData,,] ),
    c( numberOfTestingData, resampledImageSize ), TRUE ) )
X_testSmall <- array( data = X_testSmall, dim = c( dim( X_testSmall ), 1 ) )
Y_testSmall <- to_categorical( mnistData$test$y[1:numberOfTestingData], numberOfLabels )

# We add a dimension of 1 to specify the channel size

inputImageSize <- c( dim( X_trainSmall )[2:3], 1 )

model <- createGoogLeNetModel2D( inputImageSize = c( resampledImageSize, 1 ),
  numberOfOutputs = numberOfLabels )


model %>% compile( loss = 'categorical_crossentropy',
  optimizer = optimizer_adam( lr = 0.0001 ),
  metrics = c( 'categorical_crossentropy', 'accuracy' ) )

# Comment out the rest due to travis build constraints

# track <- model %>% fit( X_trainSmall, Y_trainSmall, verbose = 1,
#   epochs = 1, batch_size = 2, shuffle = TRUE, validation_split = 0.5 )

# Now test the model

# testingMetrics <- model %>% evaluate( X_testSmall, Y_testSmall )
# predictedData <- model %>% predict( X_testSmall, verbose = 1 )
rm(model); gc()
model <- createGoogLeNetModel2D( inputImageSize = c( resampledImageSize, 1 ),
  numberOfOutputs = 2 )
rm(model); gc()

model <- createGoogLeNetModel2D( inputImageSize = c( resampledImageSize, 1 ),
  mode = "regression" )
rm(model); gc()

ANTsX/ANTsRNet documentation built on Sept. 16, 2024, 1:24 a.m.