| syntax = "proto2"; | |
| package lstm_object_detection.protos; | |
| import "object_detection/protos/pipeline.proto"; | |
| import "lstm_object_detection/protos/quant_overrides.proto"; | |
| extend object_detection.protos.TrainEvalPipelineConfig { | |
| optional LstmModel lstm_model = 205743444; | |
| optional QuantOverrides quant_overrides = 246059837; | |
| } | |
| // Message for extra fields needed for configuring LSTM model. | |
| message LstmModel { | |
| // Unroll length for training LSTMs. | |
| optional int32 train_unroll_length = 1; | |
| // Unroll length for evaluating LSTMs. | |
| optional int32 eval_unroll_length = 2; | |
| // Depth of the lstm feature map. | |
| optional int32 lstm_state_depth = 3 [default = 256]; | |
| // Depth multipliers for multiple feature extractors. Used for interleaved | |
| // or ensemble model. | |
| repeated float depth_multipliers = 4; | |
| // Specifies how models are interleaved when multiple feature extractors are | |
| // used during training. Must be in ['RANDOM', 'RANDOM_SKIP_SMALL']. | |
| optional string train_interleave_method = 5 [default = 'RANDOM']; | |
| // Specifies how models are interleaved when multiple feature extractors are | |
| // used during training. Must be in ['RANDOM', 'RANDOM_SKIP', 'SKIPK']. | |
| optional string eval_interleave_method = 6 [default = 'SKIP9']; | |
| // The stride of the lstm state. | |
| optional int32 lstm_state_stride = 7 [default = 32]; | |
| // Whether to flattern LSTM state and output. Note that this is typically | |
| // intended only to be modified internally by export_tfmini_lstd_graph_lib | |
| // to support flatten state for tfmini/tflite. Do not set this field in | |
| // the pipeline config file unless necessary. | |
| optional bool flatten_state = 8 [default = false]; | |
| // Whether to apply bottleneck layer before going into LSTM gates. This | |
| // allows multiple feature extractors to use separate bottleneck layers | |
| // instead of sharing the same one so that different base model output | |
| // feature dimensions are not forced to be the same. | |
| // For example: | |
| // Model 1 outputs feature map f_1 of depth d_1. | |
| // Model 2 outputs feature map f_2 of depth d_2. | |
| // Pre-bottlenecking allows lstm input to be either: | |
| // conv(concat([f_1, h])) or conv(concat([f_2, h])). | |
| optional bool pre_bottleneck = 9 [default = false]; | |
| // Normalize LSTM state, default false. | |
| optional bool scale_state = 10 [default = false]; | |
| // Clip LSTM state at [0, 6], default true. | |
| optional bool clip_state = 11 [default = true]; | |
| // If the model is in quantized training. This field does NOT need to be set | |
| // manually. Instead, it will be overridden by configs in graph_rewriter. | |
| optional bool is_quantized = 12 [default = false]; | |
| // Downsample input image when using the smaller network in interleaved | |
| // models, default false. | |
| optional bool low_res = 13 [default = false]; | |
| } | |