R/createVggModel.R
createVggModel2D.Rd
Creates a keras model of the Vgg deep learning architecture for image recognition based on the paper
createVggModel2D( inputImageSize, numberOfClassificationLabels = 1000, layers = c(1, 2, 3, 4, 4), lowestResolution = 64, convolutionKernelSize = c(3, 3), poolSize = c(2, 2), strides = c(2, 2), numberOfDenseUnits = 4096, dropoutRate = 0, style = 19, mode = c("classification", "regression") )
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. |
layers | a vector determining the number of filters defined at for each layer. |
lowestResolution | number of filters at the beginning. |
convolutionKernelSize | 2-d vector definining the kernel size during the encoding path |
poolSize | 2-d vector defining the region for each pooling layer. |
strides | 2-d vector describing the stride length in each direction. |
numberOfDenseUnits | integer for the number of units in the last layers. |
dropoutRate | float between 0 and 1 to use between dense layers. |
style |
|
mode | 'classification' or 'regression'. |
a VGG keras model
K. Simonyan and A. Zisserman, Very Deep Convolutional Networks for Large-Scale Image Recognition
available here:
\url{https://arxiv.org/abs/1409.1556}
This particular implementation was influenced by the following python implementation:
\url{https://gist.github.com/baraldilorenzo/8d096f48a1be4a2d660d}
Tustison NJ
#> Error in py_discover_config(required_module, use_environment): Python specified in RETICULATE_PYTHON (/Users/ntustison/anaconda3/envs/antsx/bin/python3) does not existnumberOfLabels <- 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#> Error in array(data = X_trainSmall, dim = c(dim(X_trainSmall), 1)): object 'X_trainSmall' not found#> Error in to_categorical(mnistData$train$y[1:numberOfTrainingData], numberOfLabels): object 'mnistData' not foundX_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#> Error in array(data = X_testSmall, dim = c(dim(X_testSmall), 1)): object 'X_testSmall' not found#> 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 foundmodel <- createVggModel2D( 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 existmodel %>% 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 )