docstr: For iOS17+ the `roi` input is replaced by `boxes` and `box_indices`.
docstr_tok: ["For","iOS17+","the","`","roi","`","input","is","replaced","by","`","boxes","`","and","`","box_indices","`","."]
code: def test_builder_to_backend_ios17(self, compute_unit, backend, N):
      """For iOS17+ the `roi` input is replaced by `boxes` and `box_indices`."""
      x = np.arange(1, 17, dtype=np.float32).reshape(1, 1, 4, 4)
      boxes = np.array([1, 1, 2, 2], dtype=np.float32).reshape(1, 4)
      box_indices = None
      normalized_coordinates = False
      if N == 3:
          boxes = np.array(
              [
                  [0.1, 0.3, 1.3, 1.0],
                  [0.5, 1.8, 1.0, 0.3],
                  [0.0, 0.4, 0.6, 0.7],
              ],
              dtype=np.float32,
          )
          box_indices = np.array([0] * 3, dtype=np.int32)
          normalized_coordinates = True
  
      def build(x):
          return mb.crop_resize(
              x=x,
              boxes=boxes,
              box_indices=box_indices,
              target_width=2,
              target_height=2,
              normalized_coordinates=normalized_coordinates,
              box_coordinate_mode="CORNERS_HEIGHT_FIRST",
              sampling_mode="ALIGN_CORNERS",
              pad_value=10.0,
          )
  
      expected_outputs = [
          np.array([6, 7, 10, 11], dtype=np.float32).reshape(1, 1, 2, 2)
      ]
      if N == 3:
          expected_outputs = [
              np.array(
                  [
                      3.1,
                      5.2,
                      10.0,
                      10.0,
                      10.0,
                      7.899,
                      10.0,
                      13.9,
                      2.2,
                      3.1,
                      9.4,
                      10.3,
                  ],
                  dtype=np.float32,
              ).reshape(3, 1, 2, 2)
          ]
  
      run_compare_builder(
          build,
          input_placeholders={"x": mb.placeholder(shape=(1, 1, 4, 4))},
          input_values={"x": x},
          expected_output_types=[(N, 1, 2, 2, types.fp32)],
          expected_outputs=expected_outputs,
          compute_unit=compute_unit,
          backend=backend,
      )
  
imports: import itertools
  import numpy
  import pytest
  from coremltools.converters.mil.mil import Builder
  from coremltools.converters.mil.mil import types
  from coremltools.converters.mil.mil.ops.tests.iOS15.test_image_resizing import TestResample
  from coremltools.converters.mil.mil.ops.tests.iOS17 import backends
  from coremltools.converters.mil.mil.ops.tests.testing_utils import UNK_SYM, run_compare_builder
  from coremltools.converters.mil.testing_reqs import compute_units
label_desc: Use image node_id 1 for calling the TestCropResize obj's underlying member method code with example usage: obj.test_builder_to_backend_ios17(compute_unit, backend, N) and returns: mb