input_reader.proto 4.46 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
syntax = "proto2";

package object_detection.protos;

// Configuration proto for defining input readers that generate Object Detection
// Examples from input sources. Input readers are expected to generate a
// dictionary of tensors, with the following fields populated:
//
// 'image': an [image_height, image_width, channels] image tensor that detection
//    will be run on.
// 'groundtruth_classes': a [num_boxes] int32 tensor storing the class
//    labels of detected boxes in the image.
// 'groundtruth_boxes': a [num_boxes, 4] float tensor storing the coordinates of
//    detected boxes in the image.
// 'groundtruth_instance_masks': (Optional), a [num_boxes, image_height,
//    image_width] float tensor storing binary mask of the objects in boxes.

18
19
20
21
22
23
24
// Instance mask format. Note that PNG masks are much more space efficient.
enum InstanceMaskType {
  DEFAULT = 0;          // Default implementation, currently NUMERICAL_MASKS
  NUMERICAL_MASKS = 1;  // [num_masks, H, W] float32 binary masks.
  PNG_MASKS = 2;        // Encoded PNG masks.
}

25
26
27
28
29
30
31
32
33
message InputReader {
  // Path to StringIntLabelMap pbtxt file specifying the mapping from string
  // labels to integer ids.
  optional string label_map_path = 1 [default=""];

  // Whether data should be processed in the order they are read in, or
  // shuffled randomly.
  optional bool shuffle = 2 [default=true];

34
  // Buffer size to be used when shuffling.
35
  optional uint32 shuffle_buffer_size = 11 [default = 2048];
36
37
38
39

  // Buffer size to be used when shuffling file names.
  optional uint32 filenames_shuffle_buffer_size = 12 [default = 100];

40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  // The number of times a data source is read. If set to zero, the data source
  // will be reused indefinitely.
  optional uint32 num_epochs = 5 [default=0];

  // Number of file shards to read in parallel.
  optional uint32 num_readers = 6 [default=64];

  // Number of batches to produce in parallel. If this is run on a 2x2 TPU set
  // this to 8.
  optional uint32 num_parallel_batches = 19 [default=8];

  // Number of batches to prefetch. Prefetch decouples input pipeline and
  // model so they can be pipelined resulting in higher throughput. Set this
  // to a small constant and increment linearly until the improvements become
  // marginal or you exceed your cpu memory budget. Setting this to -1,
  // automatically tunes this value for you.
  optional int32 num_prefetch_batches = 20 [default=2];

58
  // Maximum number of records to keep in reader queue.
59
  optional uint32 queue_capacity = 3 [default=2000, deprecated=true];
60
61
62

  // Minimum number of records to keep in reader queue. A large value is needed
  // to generate a good random shuffle.
63
  optional uint32 min_after_dequeue = 4 [default=1000, deprecated=true];
64
65


66
67
68
  // Number of records to read from each reader at once.
  optional uint32 read_block_length = 15 [default=32];

69
  // Number of decoded records to prefetch before batching.
70
  optional uint32 prefetch_size = 13 [default = 512, deprecated=true];
71
72

  // Number of parallel decode ops to apply.
73
74
75
76
77
  optional uint32 num_parallel_map_calls = 14 [default = 64, deprecated=true];

  // If positive, TfExampleDecoder will try to decode rasters of additional
  // channels from tf.Examples.
  optional int32 num_additional_channels = 18 [default = 0];
78

79
80
81
  // Number of groundtruth keypoints per object.
  optional uint32 num_keypoints = 16 [default = 0];

82
83
84
85
86
87
  // Maximum number of boxes to pad to during training.
  // Set this to at least the maximum amount of boxes in the input data.
  // Otherwise, it may cause "Data loss: Attempted to pad to a smaller size
  // than the input element" errors.
  optional int32 max_number_of_boxes = 21 [default=100];

88
89
90
  // Whether to load groundtruth instance masks.
  optional bool load_instance_masks = 7 [default = false];

91
92
93
  // Type of instance mask.
  optional InstanceMaskType mask_type = 10 [default = NUMERICAL_MASKS];

94
95
96
97
  // Whether to use the display name when decoding examples. This is only used
  // when mapping class text strings to integers.
  optional bool use_display_name = 17 [default = false];

98
99
100
101
102
103
104
105
  oneof input_reader {
    TFRecordInputReader tf_record_input_reader = 8;
    ExternalInputReader external_input_reader = 9;
  }
}

// An input reader that reads TF Example protos from local TFRecord files.
message TFRecordInputReader {
Vivek Rathod's avatar
Vivek Rathod committed
106
107
  // Path(s) to `TFRecordFile`s.
  repeated string input_path = 1;
108
109
110
111
112
113
114
}

// An externally defined input reader. Users may define an extension to this
// proto to interface their own input readers.
message ExternalInputReader {
  extensions 1 to 999;
}