/// Greedily selects a subset of bounding boxes in descending order of score.
/// </summary>
/// <param name="boxes">
/// A 4-D float `Tensor` of shape `[batch_size, num_boxes, q, 4]`. If `q`
/// is 1 then same boxes are used for all classes otherwise, if `q` is equal
/// to number of classes, class-specific boxes are used.
/// </param>
/// <param name="scores">
/// A 3-D float `Tensor` of shape `[batch_size, num_boxes, num_classes]`
/// representing a single score corresponding to each box(each row of boxes).
/// </param>
/// <param name="max_output_size_per_class">
/// A scalar integer `Tensor` representing the
/// maximum number of boxes to be selected by non-max suppression per class
/// </param>
/// <param name="max_total_size">
/// A int32 scalar representing maximum number of boxes retained
/// over all classes.Note that setting this value to a large number may
/// result in OOM error depending on the system workload.
/// </param>
/// <param name="iou_threshold">
/// A float representing the threshold for deciding whether boxes
/// overlap too much with respect to IOU.
/// </param>
/// <param name="score_threshold">
/// A float representing the threshold for deciding when to
/// remove boxes based on score.
/// </param>
/// <param name="pad_per_class">
/// If false, the output nmsed boxes, scores and classes are
/// padded/clipped to `max_total_size`. If true, the output nmsed boxes, scores and classes are padded to be of length `max_size_per_class`*`num_classes`,
/// unless it exceeds `max_total_size` in which case it is clipped to `max_total_size`. Defaults to false.
/// </param>
/// <param name="clip_boxes">
/// If true, the coordinates of output nmsed boxes will be clipped
/// to[0, 1]. If false, output the box coordinates as it is. Defaults to true.
/// </param>
/// <returns>
/// 'nmsed_boxes': A [batch_size, max_detections, 4] float32 tensor containing the non-max suppressed boxes.
/// 'nmsed_scores': A [batch_size, max_detections] float32 tensor containing the scores for the boxes.
/// 'nmsed_classes': A [batch_size, max_detections] float32 tensor containing the class for boxes.
/// 'valid_detections': A [batch_size] int32 tensor indicating the number of
/// valid detections per batch item. Only the top valid_detections[i] entries
/// in nms_boxes[i], nms_scores[i] and nms_class[i] are valid. The rest of the
/// Extracts crops from the input image tensor and resizes them using bilinear sampling or nearest neighbor sampling (possibly with aspect ratio change) to a common output size specified by crop_size. This is more general than the crop_to_bounding_box op which extracts a fixed size slice from the input image and does not allow resizing or aspect ratio change.
/// Returns a tensor with crops from the input image at positions defined at the bounding box locations in boxes.The cropped boxes are all resized(with bilinear or nearest neighbor interpolation) to a fixed size = [crop_height, crop_width].The result is a 4 - D tensor[num_boxes, crop_height, crop_width, depth].The resizing is corner aligned. In particular, if boxes = [[0, 0, 1, 1]], the method will give identical results to using tf.image.resize_bilinear() or tf.image.resize_nearest_neighbor() (depends on the method argument) with align_corners = True.
/// </summary>
/// <param name="image">A Tensor. Must be one of the following types: uint8, uint16, int8, int16, int32, int64, half, float32, float64. A 4-D tensor of shape [batch, image_height, image_width, depth]. Both image_height and image_width need to be positive.</param>
/// <param name="boxes">A Tensor of type float32. A 2-D tensor of shape [num_boxes, 4]. The i-th row of the tensor specifies the coordinates of a box in the box_ind[i] image and is specified in normalized coordinates [y1, x1, y2, x2]. A normalized coordinate value of y is mapped to the image coordinate at y * (image_height - 1), so as the [0, 1] interval of normalized image height is mapped to [0, image_height - 1] in image height coordinates. We do allow y1 > y2, in which case the sampled crop is an up-down flipped version of the original image. The width dimension is treated similarly. Normalized coordinates outside the [0, 1] range are allowed, in which case we use extrapolation_value to extrapolate the input image values.</param>
/// <param name="box_ind">A Tensor of type int32. A 1-D tensor of shape [num_boxes] with int32 values in [0, batch). The value of box_ind[i] specifies the image that the i-th box refers to.</param>
/// <param name="crop_size">A Tensor of type int32. A 1-D tensor of 2 elements, size = [crop_height, crop_width]. All cropped image patches are resized to this size. The aspect ratio of the image content is not preserved. Both crop_height and crop_width need to be positive.</param>
/// <param name="method">An optional string from: "bilinear", "nearest". Defaults to "bilinear". A string specifying the sampling method for resizing. It can be either "bilinear" or "nearest" and default to "bilinear". Currently two sampling methods are supported: Bilinear and Nearest Neighbor.</param>
/// <param name="extrapolation_value">An optional float. Defaults to 0. Value used for extrapolation, when applicable.</param>
/// <param name="name">A name for the operation (optional).</param>
/// <returns>A 4-D tensor of shape [num_boxes, crop_height, crop_width, depth].</returns>