|
|
- syntax = "proto2";
- package object_detection.protos;
-
- import "object_detection/protos/anchor_generator.proto";
- import "object_detection/protos/box_coder.proto";
- import "object_detection/protos/box_predictor.proto";
- import "object_detection/protos/hyperparams.proto";
- import "object_detection/protos/image_resizer.proto";
- import "object_detection/protos/matcher.proto";
- import "object_detection/protos/losses.proto";
- import "object_detection/protos/post_processing.proto";
- import "object_detection/protos/region_similarity_calculator.proto";
-
- // Configuration for Single Shot Detection (SSD) models.
- // Next id: 26
- message Ssd {
-
- // Number of classes to predict.
- optional int32 num_classes = 1;
-
- // Image resizer for preprocessing the input image.
- optional ImageResizer image_resizer = 2;
-
- // Feature extractor config.
- optional SsdFeatureExtractor feature_extractor = 3;
-
- // Box coder to encode the boxes.
- optional BoxCoder box_coder = 4;
-
- // Matcher to match groundtruth with anchors.
- optional Matcher matcher = 5;
-
- // Region similarity calculator to compute similarity of boxes.
- optional RegionSimilarityCalculator similarity_calculator = 6;
-
- // Whether background targets are to be encoded as an all
- // zeros vector or a one-hot vector (where background is the 0th class).
- optional bool encode_background_as_zeros = 12 [default = false];
-
- // classification weight to be associated to negative
- // anchors (default: 1.0). The weight must be in [0., 1.].
- optional float negative_class_weight = 13 [default = 1.0];
-
- // Box predictor to attach to the features.
- optional BoxPredictor box_predictor = 7;
-
- // Anchor generator to compute anchors.
- optional AnchorGenerator anchor_generator = 8;
-
- // Post processing to apply on the predictions.
- optional PostProcessing post_processing = 9;
-
- // Whether to normalize the loss by number of groundtruth boxes that match to
- // the anchors.
- optional bool normalize_loss_by_num_matches = 10 [default = true];
-
- // Whether to normalize the localization loss by the code size of the box
- // encodings. This is applied along with other normalization factors.
- optional bool normalize_loc_loss_by_codesize = 14 [default = false];
-
- // Loss configuration for training.
- optional Loss loss = 11;
-
- // Whether to update batch norm parameters during training or not.
- // When training with a relative small batch size (e.g. 1), it is
- // desirable to disable batch norm update and use pretrained batch norm
- // params.
- //
- // Note: Some feature extractors are used with canned arg_scopes
- // (e.g resnet arg scopes). In these cases training behavior of batch norm
- // variables may depend on both values of `batch_norm_trainable` and
- // `is_training`.
- //
- // When canned arg_scopes are used with feature extractors `conv_hyperparams`
- // will apply only to the additional layers that are added and are outside the
- // canned arg_scope.
- optional bool freeze_batchnorm = 16 [default = false];
-
- // Whether to update batch_norm inplace during training. This is required
- // for batch norm to work correctly on TPUs. When this is false, user must add
- // a control dependency on tf.GraphKeys.UPDATE_OPS for train/loss op in order
- // to update the batch norm moving average parameters.
- optional bool inplace_batchnorm_update = 15 [default = false];
-
- // Whether to add an implicit background class to one-hot encodings of
- // groundtruth labels. Set to false if training a single
- // class model or using an explicit background class.
- optional bool add_background_class = 21 [default = true];
-
- // Whether to use an explicit background class. Set to true if using
- // groundtruth labels with an explicit background class, as in multiclass
- // scores.
- optional bool explicit_background_class = 24 [default = false];
-
- optional bool use_confidences_as_targets = 22 [default = false];
-
- optional float implicit_example_weight = 23 [default = 1.0];
-
- // Configuration proto for MaskHead.
- // Next id: 11
- message MaskHead {
- // The height and the width of the predicted mask. Only used when
- // predict_instance_masks is true.
- optional int32 mask_height = 1 [default = 15];
- optional int32 mask_width = 2 [default = 15];
-
- // Whether to predict class agnostic masks. Only used when
- // predict_instance_masks is true.
- optional bool masks_are_class_agnostic = 3 [default = true];
-
- // The depth for the first conv2d_transpose op applied to the
- // image_features in the mask prediction branch. If set to 0, the value
- // will be set automatically based on the number of channels in the image
- // features and the number of classes.
- optional int32 mask_prediction_conv_depth = 4 [default = 256];
-
- // The number of convolutions applied to image_features in the mask prediction
- // branch.
- optional int32 mask_prediction_num_conv_layers = 5 [default = 2];
-
- // Whether to apply convolutions on mask features before upsampling using
- // nearest neighbor resizing.
- // By default, mask features are resized to [`mask_height`, `mask_width`]
- // before applying convolutions and predicting masks.
- optional bool convolve_then_upsample_masks = 6 [default = false];
-
- // Mask loss weight.
- optional float mask_loss_weight = 7 [default=5.0];
-
- // Number of boxes to be generated at training time for computing mask loss.
- optional int32 mask_loss_sample_size = 8 [default=16];
-
- // Hyperparameters for convolution ops used in the box predictor.
- optional Hyperparams conv_hyperparams = 9;
-
- // Output size (width and height are set to be the same) of the initial
- // bilinear interpolation based cropping during ROI pooling. Only used when
- // we have second stage prediction head enabled (e.g. mask head).
- optional int32 initial_crop_size = 10 [default = 15];
- }
-
- // Configs for mask head.
- optional MaskHead mask_head_config = 25;
- }
-
- message SsdFeatureExtractor {
- reserved 6;
-
- // Type of ssd feature extractor.
- optional string type = 1;
-
- // The factor to alter the depth of the channels in the feature extractor.
- optional float depth_multiplier = 2 [default = 1.0];
-
- // Minimum number of the channels in the feature extractor.
- optional int32 min_depth = 3 [default = 16];
-
- // Hyperparameters that affect the layers of feature extractor added on top
- // of the base feature extractor.
- optional Hyperparams conv_hyperparams = 4;
-
- // Normally, SSD feature extractors are constructed by reusing an existing
- // base feature extractor (that has its own hyperparams) and adding new layers
- // on top of it. `conv_hyperparams` above normally applies only to the new
- // layers while base feature extractor uses its own default hyperparams. If
- // this value is set to true, the base feature extractor's hyperparams will be
- // overridden with the `conv_hyperparams`.
- optional bool override_base_feature_extractor_hyperparams = 9
- [default = false];
-
- // The nearest multiple to zero-pad the input height and width dimensions to.
- // For example, if pad_to_multiple = 2, input dimensions are zero-padded
- // until the resulting dimensions are even.
- optional int32 pad_to_multiple = 5 [default = 1];
-
- // Whether to use explicit padding when extracting SSD multiresolution
- // features. This will also apply to the base feature extractor if a MobileNet
- // architecture is used.
- optional bool use_explicit_padding = 7 [default = false];
-
- // Whether to use depthwise separable convolutions for to extract additional
- // feature maps added by SSD.
- optional bool use_depthwise = 8 [default = false];
-
- // Feature Pyramid Networks config.
- optional FeaturePyramidNetworks fpn = 10;
-
- // If true, replace preprocess function of feature extractor with a
- // placeholder. This should only be used if all the image preprocessing steps
- // happen outside the graph.
- optional bool replace_preprocessor_with_placeholder = 11 [default = false];
- }
-
- // Configuration for Feature Pyramid Networks.
- message FeaturePyramidNetworks {
- // We recommend to use multi_resolution_feature_map_generator with FPN, and
- // the levels there must match the levels defined below for better
- // performance.
- // Correspondence from FPN levels to Resnet/Mobilenet V1 feature maps:
- // FPN Level Resnet Feature Map Mobilenet-V1 Feature Map
- // 2 Block 1 Conv2d_3_pointwise
- // 3 Block 2 Conv2d_5_pointwise
- // 4 Block 3 Conv2d_11_pointwise
- // 5 Block 4 Conv2d_13_pointwise
- // 6 Bottomup_5 bottom_up_Conv2d_14
- // 7 Bottomup_6 bottom_up_Conv2d_15
- // 8 Bottomup_7 bottom_up_Conv2d_16
- // 9 Bottomup_8 bottom_up_Conv2d_17
-
- // minimum level in feature pyramid
- optional int32 min_level = 1 [default = 3];
-
- // maximum level in feature pyramid
- optional int32 max_level = 2 [default = 7];
-
- // channel depth for additional coarse feature layers.
- optional int32 additional_layer_depth = 3 [default = 256];
-
- }
|