xref: /aosp_15_r20/external/googleapis/google/cloud/datalabeling/v1beta1/annotation.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1*d5c09012SAndroid Build Coastguard Worker// Copyright 2019 Google LLC.
2*d5c09012SAndroid Build Coastguard Worker//
3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*d5c09012SAndroid Build Coastguard Worker//
7*d5c09012SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*d5c09012SAndroid Build Coastguard Worker//
9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*d5c09012SAndroid Build Coastguard Worker// limitations under the License.
14*d5c09012SAndroid Build Coastguard Worker//
15*d5c09012SAndroid Build Coastguard Worker
16*d5c09012SAndroid Build Coastguard Workersyntax = "proto3";
17*d5c09012SAndroid Build Coastguard Worker
18*d5c09012SAndroid Build Coastguard Workerpackage google.cloud.datalabeling.v1beta1;
19*d5c09012SAndroid Build Coastguard Worker
20*d5c09012SAndroid Build Coastguard Workerimport "google/cloud/datalabeling/v1beta1/annotation_spec_set.proto";
21*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/duration.proto";
22*d5c09012SAndroid Build Coastguard Worker
23*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.DataLabeling.V1Beta1";
24*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/datalabeling/apiv1beta1/datalabelingpb;datalabelingpb";
25*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true;
26*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.datalabeling.v1beta1";
27*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\DataLabeling\\V1beta1";
28*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::DataLabeling::V1beta1";
29*d5c09012SAndroid Build Coastguard Worker
30*d5c09012SAndroid Build Coastguard Worker// Specifies where the annotation comes from (whether it was provided by a
31*d5c09012SAndroid Build Coastguard Worker// human labeler or a different source).
32*d5c09012SAndroid Build Coastguard Workerenum AnnotationSource {
33*d5c09012SAndroid Build Coastguard Worker  ANNOTATION_SOURCE_UNSPECIFIED = 0;
34*d5c09012SAndroid Build Coastguard Worker
35*d5c09012SAndroid Build Coastguard Worker  // Answer is provided by a human contributor.
36*d5c09012SAndroid Build Coastguard Worker  OPERATOR = 3;
37*d5c09012SAndroid Build Coastguard Worker}
38*d5c09012SAndroid Build Coastguard Worker
39*d5c09012SAndroid Build Coastguard Worker// Annotation for Example. Each example may have one or more annotations. For
40*d5c09012SAndroid Build Coastguard Worker// example in image classification problem, each image might have one or more
41*d5c09012SAndroid Build Coastguard Worker// labels. We call labels binded with this image an Annotation.
42*d5c09012SAndroid Build Coastguard Workermessage Annotation {
43*d5c09012SAndroid Build Coastguard Worker  // Output only. Unique name of this annotation, format is:
44*d5c09012SAndroid Build Coastguard Worker  //
45*d5c09012SAndroid Build Coastguard Worker  // projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/{annotated_dataset}/examples/{example_id}/annotations/{annotation_id}
46*d5c09012SAndroid Build Coastguard Worker  string name = 1;
47*d5c09012SAndroid Build Coastguard Worker
48*d5c09012SAndroid Build Coastguard Worker  // Output only. The source of the annotation.
49*d5c09012SAndroid Build Coastguard Worker  AnnotationSource annotation_source = 2;
50*d5c09012SAndroid Build Coastguard Worker
51*d5c09012SAndroid Build Coastguard Worker  // Output only. This is the actual annotation value, e.g classification,
52*d5c09012SAndroid Build Coastguard Worker  // bounding box values are stored here.
53*d5c09012SAndroid Build Coastguard Worker  AnnotationValue annotation_value = 3;
54*d5c09012SAndroid Build Coastguard Worker
55*d5c09012SAndroid Build Coastguard Worker  // Output only. Annotation metadata, including information like votes
56*d5c09012SAndroid Build Coastguard Worker  // for labels.
57*d5c09012SAndroid Build Coastguard Worker  AnnotationMetadata annotation_metadata = 4;
58*d5c09012SAndroid Build Coastguard Worker
59*d5c09012SAndroid Build Coastguard Worker  // Output only. Sentiment for this annotation.
60*d5c09012SAndroid Build Coastguard Worker  AnnotationSentiment annotation_sentiment = 6;
61*d5c09012SAndroid Build Coastguard Worker}
62*d5c09012SAndroid Build Coastguard Worker
63*d5c09012SAndroid Build Coastguard Workerenum AnnotationSentiment {
64*d5c09012SAndroid Build Coastguard Worker  ANNOTATION_SENTIMENT_UNSPECIFIED = 0;
65*d5c09012SAndroid Build Coastguard Worker
66*d5c09012SAndroid Build Coastguard Worker  // This annotation describes negatively about the data.
67*d5c09012SAndroid Build Coastguard Worker  NEGATIVE = 1;
68*d5c09012SAndroid Build Coastguard Worker
69*d5c09012SAndroid Build Coastguard Worker  // This label describes positively about the data.
70*d5c09012SAndroid Build Coastguard Worker  POSITIVE = 2;
71*d5c09012SAndroid Build Coastguard Worker}
72*d5c09012SAndroid Build Coastguard Worker
73*d5c09012SAndroid Build Coastguard Workerenum AnnotationType {
74*d5c09012SAndroid Build Coastguard Worker  ANNOTATION_TYPE_UNSPECIFIED = 0;
75*d5c09012SAndroid Build Coastguard Worker
76*d5c09012SAndroid Build Coastguard Worker  // Classification annotations in an image. Allowed for continuous evaluation.
77*d5c09012SAndroid Build Coastguard Worker  IMAGE_CLASSIFICATION_ANNOTATION = 1;
78*d5c09012SAndroid Build Coastguard Worker
79*d5c09012SAndroid Build Coastguard Worker  // Bounding box annotations in an image. A form of image object detection.
80*d5c09012SAndroid Build Coastguard Worker  // Allowed for continuous evaluation.
81*d5c09012SAndroid Build Coastguard Worker  IMAGE_BOUNDING_BOX_ANNOTATION = 2;
82*d5c09012SAndroid Build Coastguard Worker
83*d5c09012SAndroid Build Coastguard Worker  // Oriented bounding box. The box does not have to be parallel to horizontal
84*d5c09012SAndroid Build Coastguard Worker  // line.
85*d5c09012SAndroid Build Coastguard Worker  IMAGE_ORIENTED_BOUNDING_BOX_ANNOTATION = 13;
86*d5c09012SAndroid Build Coastguard Worker
87*d5c09012SAndroid Build Coastguard Worker  // Bounding poly annotations in an image.
88*d5c09012SAndroid Build Coastguard Worker  IMAGE_BOUNDING_POLY_ANNOTATION = 10;
89*d5c09012SAndroid Build Coastguard Worker
90*d5c09012SAndroid Build Coastguard Worker  // Polyline annotations in an image.
91*d5c09012SAndroid Build Coastguard Worker  IMAGE_POLYLINE_ANNOTATION = 11;
92*d5c09012SAndroid Build Coastguard Worker
93*d5c09012SAndroid Build Coastguard Worker  // Segmentation annotations in an image.
94*d5c09012SAndroid Build Coastguard Worker  IMAGE_SEGMENTATION_ANNOTATION = 12;
95*d5c09012SAndroid Build Coastguard Worker
96*d5c09012SAndroid Build Coastguard Worker  // Classification annotations in video shots.
97*d5c09012SAndroid Build Coastguard Worker  VIDEO_SHOTS_CLASSIFICATION_ANNOTATION = 3;
98*d5c09012SAndroid Build Coastguard Worker
99*d5c09012SAndroid Build Coastguard Worker  // Video object tracking annotation.
100*d5c09012SAndroid Build Coastguard Worker  VIDEO_OBJECT_TRACKING_ANNOTATION = 4;
101*d5c09012SAndroid Build Coastguard Worker
102*d5c09012SAndroid Build Coastguard Worker  // Video object detection annotation.
103*d5c09012SAndroid Build Coastguard Worker  VIDEO_OBJECT_DETECTION_ANNOTATION = 5;
104*d5c09012SAndroid Build Coastguard Worker
105*d5c09012SAndroid Build Coastguard Worker  // Video event annotation.
106*d5c09012SAndroid Build Coastguard Worker  VIDEO_EVENT_ANNOTATION = 6;
107*d5c09012SAndroid Build Coastguard Worker
108*d5c09012SAndroid Build Coastguard Worker  // Classification for text. Allowed for continuous evaluation.
109*d5c09012SAndroid Build Coastguard Worker  TEXT_CLASSIFICATION_ANNOTATION = 8;
110*d5c09012SAndroid Build Coastguard Worker
111*d5c09012SAndroid Build Coastguard Worker  // Entity extraction for text.
112*d5c09012SAndroid Build Coastguard Worker  TEXT_ENTITY_EXTRACTION_ANNOTATION = 9;
113*d5c09012SAndroid Build Coastguard Worker
114*d5c09012SAndroid Build Coastguard Worker  // General classification. Allowed for continuous evaluation.
115*d5c09012SAndroid Build Coastguard Worker  GENERAL_CLASSIFICATION_ANNOTATION = 14;
116*d5c09012SAndroid Build Coastguard Worker}
117*d5c09012SAndroid Build Coastguard Worker
118*d5c09012SAndroid Build Coastguard Worker// Annotation value for an example.
119*d5c09012SAndroid Build Coastguard Workermessage AnnotationValue {
120*d5c09012SAndroid Build Coastguard Worker  oneof value_type {
121*d5c09012SAndroid Build Coastguard Worker    // Annotation value for image classification case.
122*d5c09012SAndroid Build Coastguard Worker    ImageClassificationAnnotation image_classification_annotation = 1;
123*d5c09012SAndroid Build Coastguard Worker
124*d5c09012SAndroid Build Coastguard Worker    // Annotation value for image bounding box, oriented bounding box
125*d5c09012SAndroid Build Coastguard Worker    // and polygon cases.
126*d5c09012SAndroid Build Coastguard Worker    ImageBoundingPolyAnnotation image_bounding_poly_annotation = 2;
127*d5c09012SAndroid Build Coastguard Worker
128*d5c09012SAndroid Build Coastguard Worker    // Annotation value for image polyline cases.
129*d5c09012SAndroid Build Coastguard Worker    // Polyline here is different from BoundingPoly. It is formed by
130*d5c09012SAndroid Build Coastguard Worker    // line segments connected to each other but not closed form(Bounding Poly).
131*d5c09012SAndroid Build Coastguard Worker    // The line segments can cross each other.
132*d5c09012SAndroid Build Coastguard Worker    ImagePolylineAnnotation image_polyline_annotation = 8;
133*d5c09012SAndroid Build Coastguard Worker
134*d5c09012SAndroid Build Coastguard Worker    // Annotation value for image segmentation.
135*d5c09012SAndroid Build Coastguard Worker    ImageSegmentationAnnotation image_segmentation_annotation = 9;
136*d5c09012SAndroid Build Coastguard Worker
137*d5c09012SAndroid Build Coastguard Worker    // Annotation value for text classification case.
138*d5c09012SAndroid Build Coastguard Worker    TextClassificationAnnotation text_classification_annotation = 3;
139*d5c09012SAndroid Build Coastguard Worker
140*d5c09012SAndroid Build Coastguard Worker    // Annotation value for text entity extraction case.
141*d5c09012SAndroid Build Coastguard Worker    TextEntityExtractionAnnotation text_entity_extraction_annotation = 10;
142*d5c09012SAndroid Build Coastguard Worker
143*d5c09012SAndroid Build Coastguard Worker    // Annotation value for video classification case.
144*d5c09012SAndroid Build Coastguard Worker    VideoClassificationAnnotation video_classification_annotation = 4;
145*d5c09012SAndroid Build Coastguard Worker
146*d5c09012SAndroid Build Coastguard Worker    // Annotation value for video object detection and tracking case.
147*d5c09012SAndroid Build Coastguard Worker    VideoObjectTrackingAnnotation video_object_tracking_annotation = 5;
148*d5c09012SAndroid Build Coastguard Worker
149*d5c09012SAndroid Build Coastguard Worker    // Annotation value for video event case.
150*d5c09012SAndroid Build Coastguard Worker    VideoEventAnnotation video_event_annotation = 6;
151*d5c09012SAndroid Build Coastguard Worker  }
152*d5c09012SAndroid Build Coastguard Worker}
153*d5c09012SAndroid Build Coastguard Worker
154*d5c09012SAndroid Build Coastguard Worker// Image classification annotation definition.
155*d5c09012SAndroid Build Coastguard Workermessage ImageClassificationAnnotation {
156*d5c09012SAndroid Build Coastguard Worker  // Label of image.
157*d5c09012SAndroid Build Coastguard Worker  AnnotationSpec annotation_spec = 1;
158*d5c09012SAndroid Build Coastguard Worker}
159*d5c09012SAndroid Build Coastguard Worker
160*d5c09012SAndroid Build Coastguard Worker// A vertex represents a 2D point in the image.
161*d5c09012SAndroid Build Coastguard Worker// NOTE: the vertex coordinates are in the same scale as the original image.
162*d5c09012SAndroid Build Coastguard Workermessage Vertex {
163*d5c09012SAndroid Build Coastguard Worker  // X coordinate.
164*d5c09012SAndroid Build Coastguard Worker  int32 x = 1;
165*d5c09012SAndroid Build Coastguard Worker
166*d5c09012SAndroid Build Coastguard Worker  // Y coordinate.
167*d5c09012SAndroid Build Coastguard Worker  int32 y = 2;
168*d5c09012SAndroid Build Coastguard Worker}
169*d5c09012SAndroid Build Coastguard Worker
170*d5c09012SAndroid Build Coastguard Worker// A vertex represents a 2D point in the image.
171*d5c09012SAndroid Build Coastguard Worker// NOTE: the normalized vertex coordinates are relative to the original image
172*d5c09012SAndroid Build Coastguard Worker// and range from 0 to 1.
173*d5c09012SAndroid Build Coastguard Workermessage NormalizedVertex {
174*d5c09012SAndroid Build Coastguard Worker  // X coordinate.
175*d5c09012SAndroid Build Coastguard Worker  float x = 1;
176*d5c09012SAndroid Build Coastguard Worker
177*d5c09012SAndroid Build Coastguard Worker  // Y coordinate.
178*d5c09012SAndroid Build Coastguard Worker  float y = 2;
179*d5c09012SAndroid Build Coastguard Worker}
180*d5c09012SAndroid Build Coastguard Worker
181*d5c09012SAndroid Build Coastguard Worker// A bounding polygon in the image.
182*d5c09012SAndroid Build Coastguard Workermessage BoundingPoly {
183*d5c09012SAndroid Build Coastguard Worker  // The bounding polygon vertices.
184*d5c09012SAndroid Build Coastguard Worker  repeated Vertex vertices = 1;
185*d5c09012SAndroid Build Coastguard Worker}
186*d5c09012SAndroid Build Coastguard Worker
187*d5c09012SAndroid Build Coastguard Worker// Normalized bounding polygon.
188*d5c09012SAndroid Build Coastguard Workermessage NormalizedBoundingPoly {
189*d5c09012SAndroid Build Coastguard Worker  // The bounding polygon normalized vertices.
190*d5c09012SAndroid Build Coastguard Worker  repeated NormalizedVertex normalized_vertices = 1;
191*d5c09012SAndroid Build Coastguard Worker}
192*d5c09012SAndroid Build Coastguard Worker
193*d5c09012SAndroid Build Coastguard Worker// Image bounding poly annotation. It represents a polygon including
194*d5c09012SAndroid Build Coastguard Worker// bounding box in the image.
195*d5c09012SAndroid Build Coastguard Workermessage ImageBoundingPolyAnnotation {
196*d5c09012SAndroid Build Coastguard Worker  // The region of the polygon. If it is a bounding box, it is guaranteed to be
197*d5c09012SAndroid Build Coastguard Worker  // four points.
198*d5c09012SAndroid Build Coastguard Worker  oneof bounded_area {
199*d5c09012SAndroid Build Coastguard Worker    BoundingPoly bounding_poly = 2;
200*d5c09012SAndroid Build Coastguard Worker
201*d5c09012SAndroid Build Coastguard Worker    NormalizedBoundingPoly normalized_bounding_poly = 3;
202*d5c09012SAndroid Build Coastguard Worker  }
203*d5c09012SAndroid Build Coastguard Worker
204*d5c09012SAndroid Build Coastguard Worker  // Label of object in this bounding polygon.
205*d5c09012SAndroid Build Coastguard Worker  AnnotationSpec annotation_spec = 1;
206*d5c09012SAndroid Build Coastguard Worker}
207*d5c09012SAndroid Build Coastguard Worker
208*d5c09012SAndroid Build Coastguard Worker// A line with multiple line segments.
209*d5c09012SAndroid Build Coastguard Workermessage Polyline {
210*d5c09012SAndroid Build Coastguard Worker  // The polyline vertices.
211*d5c09012SAndroid Build Coastguard Worker  repeated Vertex vertices = 1;
212*d5c09012SAndroid Build Coastguard Worker}
213*d5c09012SAndroid Build Coastguard Worker
214*d5c09012SAndroid Build Coastguard Worker// Normalized polyline.
215*d5c09012SAndroid Build Coastguard Workermessage NormalizedPolyline {
216*d5c09012SAndroid Build Coastguard Worker  // The normalized polyline vertices.
217*d5c09012SAndroid Build Coastguard Worker  repeated NormalizedVertex normalized_vertices = 1;
218*d5c09012SAndroid Build Coastguard Worker}
219*d5c09012SAndroid Build Coastguard Worker
220*d5c09012SAndroid Build Coastguard Worker// A polyline for the image annotation.
221*d5c09012SAndroid Build Coastguard Workermessage ImagePolylineAnnotation {
222*d5c09012SAndroid Build Coastguard Worker  oneof poly {
223*d5c09012SAndroid Build Coastguard Worker    Polyline polyline = 2;
224*d5c09012SAndroid Build Coastguard Worker
225*d5c09012SAndroid Build Coastguard Worker    NormalizedPolyline normalized_polyline = 3;
226*d5c09012SAndroid Build Coastguard Worker  }
227*d5c09012SAndroid Build Coastguard Worker
228*d5c09012SAndroid Build Coastguard Worker  // Label of this polyline.
229*d5c09012SAndroid Build Coastguard Worker  AnnotationSpec annotation_spec = 1;
230*d5c09012SAndroid Build Coastguard Worker}
231*d5c09012SAndroid Build Coastguard Worker
232*d5c09012SAndroid Build Coastguard Worker// Image segmentation annotation.
233*d5c09012SAndroid Build Coastguard Workermessage ImageSegmentationAnnotation {
234*d5c09012SAndroid Build Coastguard Worker  // The mapping between rgb color and annotation spec. The key is the rgb
235*d5c09012SAndroid Build Coastguard Worker  // color represented in format of rgb(0, 0, 0). The value is the
236*d5c09012SAndroid Build Coastguard Worker  // AnnotationSpec.
237*d5c09012SAndroid Build Coastguard Worker  map<string, AnnotationSpec> annotation_colors = 1;
238*d5c09012SAndroid Build Coastguard Worker
239*d5c09012SAndroid Build Coastguard Worker  // Image format.
240*d5c09012SAndroid Build Coastguard Worker  string mime_type = 2;
241*d5c09012SAndroid Build Coastguard Worker
242*d5c09012SAndroid Build Coastguard Worker  // A byte string of a full image's color map.
243*d5c09012SAndroid Build Coastguard Worker  bytes image_bytes = 3;
244*d5c09012SAndroid Build Coastguard Worker}
245*d5c09012SAndroid Build Coastguard Worker
246*d5c09012SAndroid Build Coastguard Worker// Text classification annotation.
247*d5c09012SAndroid Build Coastguard Workermessage TextClassificationAnnotation {
248*d5c09012SAndroid Build Coastguard Worker  // Label of the text.
249*d5c09012SAndroid Build Coastguard Worker  AnnotationSpec annotation_spec = 1;
250*d5c09012SAndroid Build Coastguard Worker}
251*d5c09012SAndroid Build Coastguard Worker
252*d5c09012SAndroid Build Coastguard Worker// Text entity extraction annotation.
253*d5c09012SAndroid Build Coastguard Workermessage TextEntityExtractionAnnotation {
254*d5c09012SAndroid Build Coastguard Worker  // Label of the text entities.
255*d5c09012SAndroid Build Coastguard Worker  AnnotationSpec annotation_spec = 1;
256*d5c09012SAndroid Build Coastguard Worker
257*d5c09012SAndroid Build Coastguard Worker  // Position of the entity.
258*d5c09012SAndroid Build Coastguard Worker  SequentialSegment sequential_segment = 2;
259*d5c09012SAndroid Build Coastguard Worker}
260*d5c09012SAndroid Build Coastguard Worker
261*d5c09012SAndroid Build Coastguard Worker// Start and end position in a sequence (e.g. text segment).
262*d5c09012SAndroid Build Coastguard Workermessage SequentialSegment {
263*d5c09012SAndroid Build Coastguard Worker  // Start position (inclusive).
264*d5c09012SAndroid Build Coastguard Worker  int32 start = 1;
265*d5c09012SAndroid Build Coastguard Worker
266*d5c09012SAndroid Build Coastguard Worker  // End position (exclusive).
267*d5c09012SAndroid Build Coastguard Worker  int32 end = 2;
268*d5c09012SAndroid Build Coastguard Worker}
269*d5c09012SAndroid Build Coastguard Worker
270*d5c09012SAndroid Build Coastguard Worker// A time period inside of an example that has a time dimension (e.g. video).
271*d5c09012SAndroid Build Coastguard Workermessage TimeSegment {
272*d5c09012SAndroid Build Coastguard Worker  // Start of the time segment (inclusive), represented as the duration since
273*d5c09012SAndroid Build Coastguard Worker  // the example start.
274*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Duration start_time_offset = 1;
275*d5c09012SAndroid Build Coastguard Worker
276*d5c09012SAndroid Build Coastguard Worker  // End of the time segment (exclusive), represented as the duration since the
277*d5c09012SAndroid Build Coastguard Worker  // example start.
278*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Duration end_time_offset = 2;
279*d5c09012SAndroid Build Coastguard Worker}
280*d5c09012SAndroid Build Coastguard Worker
281*d5c09012SAndroid Build Coastguard Worker// Video classification annotation.
282*d5c09012SAndroid Build Coastguard Workermessage VideoClassificationAnnotation {
283*d5c09012SAndroid Build Coastguard Worker  // The time segment of the video to which the annotation applies.
284*d5c09012SAndroid Build Coastguard Worker  TimeSegment time_segment = 1;
285*d5c09012SAndroid Build Coastguard Worker
286*d5c09012SAndroid Build Coastguard Worker  // Label of the segment specified by time_segment.
287*d5c09012SAndroid Build Coastguard Worker  AnnotationSpec annotation_spec = 2;
288*d5c09012SAndroid Build Coastguard Worker}
289*d5c09012SAndroid Build Coastguard Worker
290*d5c09012SAndroid Build Coastguard Worker// Video frame level annotation for object detection and tracking.
291*d5c09012SAndroid Build Coastguard Workermessage ObjectTrackingFrame {
292*d5c09012SAndroid Build Coastguard Worker  // The bounding box location of this object track for the frame.
293*d5c09012SAndroid Build Coastguard Worker  oneof bounded_area {
294*d5c09012SAndroid Build Coastguard Worker    BoundingPoly bounding_poly = 1;
295*d5c09012SAndroid Build Coastguard Worker
296*d5c09012SAndroid Build Coastguard Worker    NormalizedBoundingPoly normalized_bounding_poly = 2;
297*d5c09012SAndroid Build Coastguard Worker  }
298*d5c09012SAndroid Build Coastguard Worker
299*d5c09012SAndroid Build Coastguard Worker  // The time offset of this frame relative to the beginning of the video.
300*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Duration time_offset = 3;
301*d5c09012SAndroid Build Coastguard Worker}
302*d5c09012SAndroid Build Coastguard Worker
303*d5c09012SAndroid Build Coastguard Worker// Video object tracking annotation.
304*d5c09012SAndroid Build Coastguard Workermessage VideoObjectTrackingAnnotation {
305*d5c09012SAndroid Build Coastguard Worker  // Label of the object tracked in this annotation.
306*d5c09012SAndroid Build Coastguard Worker  AnnotationSpec annotation_spec = 1;
307*d5c09012SAndroid Build Coastguard Worker
308*d5c09012SAndroid Build Coastguard Worker  // The time segment of the video to which object tracking applies.
309*d5c09012SAndroid Build Coastguard Worker  TimeSegment time_segment = 2;
310*d5c09012SAndroid Build Coastguard Worker
311*d5c09012SAndroid Build Coastguard Worker  // The list of frames where this object track appears.
312*d5c09012SAndroid Build Coastguard Worker  repeated ObjectTrackingFrame object_tracking_frames = 3;
313*d5c09012SAndroid Build Coastguard Worker}
314*d5c09012SAndroid Build Coastguard Worker
315*d5c09012SAndroid Build Coastguard Worker// Video event annotation.
316*d5c09012SAndroid Build Coastguard Workermessage VideoEventAnnotation {
317*d5c09012SAndroid Build Coastguard Worker  // Label of the event in this annotation.
318*d5c09012SAndroid Build Coastguard Worker  AnnotationSpec annotation_spec = 1;
319*d5c09012SAndroid Build Coastguard Worker
320*d5c09012SAndroid Build Coastguard Worker  // The time segment of the video to which the annotation applies.
321*d5c09012SAndroid Build Coastguard Worker  TimeSegment time_segment = 2;
322*d5c09012SAndroid Build Coastguard Worker}
323*d5c09012SAndroid Build Coastguard Worker
324*d5c09012SAndroid Build Coastguard Worker// Additional information associated with the annotation.
325*d5c09012SAndroid Build Coastguard Workermessage AnnotationMetadata {
326*d5c09012SAndroid Build Coastguard Worker  // Metadata related to human labeling.
327*d5c09012SAndroid Build Coastguard Worker  OperatorMetadata operator_metadata = 2;
328*d5c09012SAndroid Build Coastguard Worker}
329*d5c09012SAndroid Build Coastguard Worker
330*d5c09012SAndroid Build Coastguard Worker// General information useful for labels coming from contributors.
331*d5c09012SAndroid Build Coastguard Workermessage OperatorMetadata {
332*d5c09012SAndroid Build Coastguard Worker  // Confidence score corresponding to a label. For examle, if 3 contributors
333*d5c09012SAndroid Build Coastguard Worker  // have answered the question and 2 of them agree on the final label, the
334*d5c09012SAndroid Build Coastguard Worker  // confidence score will be 0.67 (2/3).
335*d5c09012SAndroid Build Coastguard Worker  float score = 1;
336*d5c09012SAndroid Build Coastguard Worker
337*d5c09012SAndroid Build Coastguard Worker  // The total number of contributors that answer this question.
338*d5c09012SAndroid Build Coastguard Worker  int32 total_votes = 2;
339*d5c09012SAndroid Build Coastguard Worker
340*d5c09012SAndroid Build Coastguard Worker  // The total number of contributors that choose this label.
341*d5c09012SAndroid Build Coastguard Worker  int32 label_votes = 3;
342*d5c09012SAndroid Build Coastguard Worker
343*d5c09012SAndroid Build Coastguard Worker  // Comments from contributors.
344*d5c09012SAndroid Build Coastguard Worker  repeated string comments = 4;
345*d5c09012SAndroid Build Coastguard Worker}
346