createResNetWithSpatialTransformerNetworkModel2D: 2-D implementation of the ResNet deep learning architecture...

View source: R/createResNetWithSpatialTransformerNetworkModel.R

createResNetWithSpatialTransformerNetworkModel2DR Documentation

2-D implementation of the ResNet deep learning architecture with a preceding spatial transformer network layer.

Description

Creates a keras model of the ResNet deep learning architecture for image classification with a spatial transformer network (STN) layer. The paper is available here:

Usage

createResNetWithSpatialTransformerNetworkModel2D(
  inputImageSize,
  numberOfOutputs = 1000,
  layers = 1:4,
  residualBlockSchedule = c(3, 4, 6, 3),
  lowestResolution = 64,
  cardinality = 1,
  numberOfSpatialTransformerUnits = 50,
  resampledSize = c(64, 64),
  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

layers

a vector determining the number of 'filters' defined at for each layer.

residualBlockSchedule

vector defining the how many residual blocks repeats.

lowestResolution

number of filters at the initial layer.

cardinality

perform ResNet (cardinality = 1) or ResNeXt (cardinality != 1 but powers of 2—try '32' )

numberOfSpatialTransformerUnits

number of units in the dense layer.

resampledSize

output image size of the spatial transformer network.

mode

'classification' or 'regression'.

Details

    https://arxiv.org/abs/1512.03385

Value

an STN + ResNet keras model

Author(s)

Tustison NJ

Examples


## Not run: 
library( ANTsRNet )
library( keras )

mnistData <- dataset_mnist()
numberOfLabels <- 10

# Extract a small subset for something that can run quickly

X_trainSmall <- mnistData$train$x[1:10,,]
X_trainSmall <- array( data = X_trainSmall, dim = c( dim( X_trainSmall ), 1 ) )
Y_trainSmall <- to_categorical( mnistData$train$y[1:10], numberOfLabels )

X_testSmall <- mnistData$test$x[1:10,,]
X_testSmall <- array( data = X_testSmall, dim = c( dim( X_testSmall ), 1 ) )
Y_testSmall <- to_categorical( mnistData$test$y[1:10], numberOfLabels )

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

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

model <- createResNetWithSpatialTransformerNetworkModel2D(
  inputImageSize = inputImageSize,
  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()

## End(Not run)

ANTsX/ANTsRNet documentation built on April 23, 2024, 1:24 p.m.