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

createGoogLeNetModel2D(
  inputImageSize,
  numberOfClassificationLabels = 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.

numberOfClassificationLabels

Number of segmentation labels.

mode

'classification' or 'regression'.

Value

a GoogLeNet keras model

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

Author

Tustison NJ

Examples

library( ANTsRNet ) library( keras ) library( ANTsR ) mnistData <- dataset_mnist()
#> Error in py_discover_config(required_module, use_environment): Python specified in RETICULATE_PYTHON (/Users/ntustison/anaconda3/envs/antsx/bin/python3) does not exist
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 ) )
#> Error in h(simpleError(msg, call)): error in evaluating the argument 'x' in selecting a method for function 'check_ants': error in evaluating the argument 'object' in selecting a method for function 'as.antsImage': object 'mnistData' not found
X_trainSmall <- array( data = X_trainSmall, dim = c( dim( X_trainSmall ), 1 ) )
#> Error in array(data = X_trainSmall, dim = c(dim(X_trainSmall), 1)): object 'X_trainSmall' not found
Y_trainSmall <- to_categorical( mnistData$train$y[1:numberOfTrainingData], numberOfLabels )
#> Error in to_categorical(mnistData$train$y[1:numberOfTrainingData], numberOfLabels): object 'mnistData' not found
X_testSmall <- as.array( resampleImage( as.antsImage( mnistData$test$x[1:numberOfTestingData,,] ), c( numberOfTestingData, resampledImageSize ), TRUE ) )
#> Error in h(simpleError(msg, call)): error in evaluating the argument 'x' in selecting a method for function 'check_ants': error in evaluating the argument 'object' in selecting a method for function 'as.antsImage': object 'mnistData' not found
X_testSmall <- array( data = X_testSmall, dim = c( dim( X_testSmall ), 1 ) )
#> Error in array(data = X_testSmall, dim = c(dim(X_testSmall), 1)): object 'X_testSmall' not found
Y_testSmall <- to_categorical( mnistData$test$y[1:numberOfTestingData], numberOfLabels )
#> Error in to_categorical(mnistData$test$y[1:numberOfTestingData], numberOfLabels): object 'mnistData' not found
# We add a dimension of 1 to specify the channel size inputImageSize <- c( dim( X_trainSmall )[2:3], 1 )
#> Error in eval(expr, envir, enclos): object 'X_trainSmall' not found
model <- createGoogLeNetModel2D( inputImageSize = c( resampledImageSize, 1 ), numberOfClassificationLabels = numberOfLabels )
#> Error in py_discover_config(required_module, use_environment): Python specified in RETICULATE_PYTHON (/Users/ntustison/anaconda3/envs/antsx/bin/python3) does not exist
model %>% compile( loss = 'categorical_crossentropy', optimizer = optimizer_adam( lr = 0.0001 ), metrics = c( 'categorical_crossentropy', 'accuracy' ) )
#> Error in compile(., loss = "categorical_crossentropy", optimizer = optimizer_adam(lr = 1e-04), metrics = c("categorical_crossentropy", "accuracy")): object 'model' not found
# 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()
#> Warning: object 'model' not found
#> used (Mb) gc trigger (Mb) limit (Mb) max used (Mb) #> Ncells 2516911 134.5 4570014 244.1 NA 4570014 244.1 #> Vcells 4436437 33.9 12255594 93.6 65536 10006078 76.4
model <- createGoogLeNetModel2D( inputImageSize = c( resampledImageSize, 1 ), numberOfClassificationLabels = 2 )
#> Error in py_discover_config(required_module, use_environment): Python specified in RETICULATE_PYTHON (/Users/ntustison/anaconda3/envs/antsx/bin/python3) does not exist
rm(model); gc()
#> Warning: object 'model' not found
#> used (Mb) gc trigger (Mb) limit (Mb) max used (Mb) #> Ncells 2516797 134.5 4570014 244.1 NA 4570014 244.1 #> Vcells 4436255 33.9 12255594 93.6 65536 10006078 76.4
model <- createGoogLeNetModel2D( inputImageSize = c( resampledImageSize, 1 ), mode = "regression" )
#> Error in py_discover_config(required_module, use_environment): Python specified in RETICULATE_PYTHON (/Users/ntustison/anaconda3/envs/antsx/bin/python3) does not exist
rm(model); gc()
#> Warning: object 'model' not found
#> used (Mb) gc trigger (Mb) limit (Mb) max used (Mb) #> Ncells 2516827 134.5 4570014 244.1 NA 4570014 244.1 #> Vcells 4436307 33.9 12255594 93.6 65536 10006078 76.4