Creates a ResNet model with Deeplabv3 modifications.

This backbone is suitable for semantic segmentation. This implements Liang-Chieh Chen, George Papandreou, Florian Schroff, Hartwig Adam. Rethinking Atrous Convolution for Semantic Image Segmentation. (

model_id An int specifies depth of ResNet backbone model.
output_stride An int of output stride, ratio of input to output resolution.
input_specs A tf.keras.layers.InputSpec of the input tensor.
stem_type A str of stem type. Can be v0 or v1. v1 replaces 7x7 conv by 3 3x3 convs.
resnetd_shortcut A bool of whether to use ResNet-D shortcut in downsampling blocks.
replace_stem_max_pool A bool of whether to replace the max pool in stem with a stride-2 conv,
se_ratio A float or None. Ratio of the Squeeze-and-Excitation layer.
init_stochastic_depth_rate A float of initial stochastic depth rate.
multigrid A tuple of the same length as the number of blocks in the last resnet stage.
last_stage_repeats An int that specifies how many times last stage is repeated.
activation A str name of the activation function.
use_sync_bn If True, use synchronized batch normalization.
norm_momentum A float of normalization momentum for the moving average.
norm_epsilon A float added to variance to avoid dividing by zero.
kernel_initializer A str for kernel initializer of convolutional layers.
kernel_regularizer A tf.keras.regularizers.Regularizer object for Conv2D. Default to None.
bias_regularizer A tf.keras.regularizers.Regularizer object for Conv2D. Default to None.
**kwargs Additional keyword arguments to be passed.

output_specs A dict of {level: TensorShape} pairs for the model output.



Calls the model on new inputs and returns the outputs as tensors.

In this case call() just reapplies all ops in the graph to the new inputs (e.g. build a new computational graph from the provided inputs).

inputs Input tensor, or dict/list/tuple of input tensors.
training Boolean or boolean scalar tensor, indicating whether to run the Network in training mode or inference mode.
mask A mask or list of masks. A mask can be either a boolean tensor or None (no mask). For more details, check the guide here.

A tensor if there is a single output, or a list of tensors if there are more than one outputs.