'Adds an annotation pipeline to the graph.
This will create the following additional named targets by default, for use
in C++ annotation code (as well as regular ComputeSession targets):
annotation/ComputeSession/session_id (placeholder for giving unique id)
annotation/EmitAnnotations (get annotated data)
annotation/GetComponentTrace (get trace data)
annotation/SetTracing (sets tracing based on annotation/tracing_on)
Args:
name_scope: Scope for the annotation pipeline.
enable_tracing: Enabling this will result in two things:
1. Tracing will be enabled during inference.
2. A \'traces\' node will be added to the outputs.
Returns:
A dictionary of input and output nodes.'

def add_annotation(self, name_scope='annotation', enable_tracing=False):

    with tf.name_scope(name_scope):
        (handle, input_batch) = self._get_session_with_reader(enable_tracing)
        handle = self.build_inference(handle, use_moving_average=True)
        annotations = dragnn_ops.emit_annotations(handle, component=self.spec.component[(-1)].name)
        outputs = {'annotations': annotations}
        if enable_tracing:
            outputs['traces'] = dragnn_ops.get_component_trace(handle, component=self.spec.component[(-1)].name)
        return self._outputs_with_release(handle, {'input_batch': input_batch}, outputs)
