コード例 #1
0
    def test_read(self):
        input1 = mx.nd.random.uniform(0, 255, shape=(3, 256, 256))
        input_buf1 = self._write_image(input1)
        output1 = image.read(input_buf1)
        assert output1.shape == (256, 256, 3), "Read method failed. Got %s shape." % (str(output1.shape))

        input2 = mx.nd.random.uniform(0, 255, shape=(1, 128, 128))
        input_buf2 = self._write_image(input2, flag=0)
        output2 = image.read(input_buf2, flag=0)
        assert output2.shape == (128, 128, 1), "Read method failed. Got %s shape." % (str(output2.shape))
コード例 #2
0
 def _preprocess(self, data):
     img_list = []
     for idx, img in enumerate(data):
         input_shape = self.signature['inputs'][idx]['data_shape']
         # We are assuming input shape is NCHW
         [h, w] = input_shape[2:]
         if input_shape[1] == 1:
             img_arr = image.read(img, 0)
         else:
             img_arr = image.read(img)
         img_arr = image.resize(img_arr, w, h)
         img_arr = image.transform_shape(img_arr)
         img_list.append(img_arr)
     return img_list
コード例 #3
0
 def _preprocess(self, data):
     input_shape = self.signature['inputs'][0]['data_shape']
     height, width = input_shape[2:]
     img_arr = image.read(data[0])
     img_arr = image.resize(img_arr, width, height)
     img_arr = image.color_normalize(img_arr, nd.array([127.5]),
                                     nd.array([127.5]))
     img_arr = image.transform_shape(img_arr)
     return [img_arr]
コード例 #4
0
 def _preprocess(self, data):
     img_list = []
     for idx, img in enumerate(data):
         input_shape = self.signature['inputs'][idx]['data_shape']
         # We are assuming input shape is NCHW
         [h, w] = input_shape[2:]
         if input_shape[1] == 1:
             img_arr = image.read(img, 0)
         else:
             img_arr = image.read(img)
         img_arr = image.resize(img_arr, w, h)
         rgb_mean = mx.nd.array([123.68, 116.779, 103.939])
         rgb_std = mx.nd.array([58.395, 57.12, 57.375])
         img_arr = img_arr.astype('float32')
         img_arr = mx.image.color_normalize(img_arr,
                                            mean=rgb_mean,
                                            std=rgb_std)
         img_arr = mx.nd.reshape(img_arr, (w, h, input_shape[1]))
         img_arr = image.transform_shape(img_arr)
         img_list.append(img_arr)
     return img_list
コード例 #5
0
 def _preprocess(self, data):
     img_list = []
     for idx, img in enumerate(data):
         input_shape = self.signature['inputs'][idx][
             'data_shape']  # Input shape is NCHW
         [h, w] = input_shape[2:]
         img_arr = image.read(
             img, 0)  #Set flag to 0 for reading grayscale images
         img_arr = image.resize(img_arr, w, h)
         img_arr = image.transform_shape(img_arr)
         img_list.append(img_arr)
     return img_list
コード例 #6
0
    def preprocess(self, request):
        """
        Pre-process requests by attempting to extract face image, and transforming to fit the model's input

        Returns
        -------
        list of NDArray
            Processed images in the model's expected input shape
        """
        img_list = []
        input_shape = self.signature['inputs'][0]['data_shape']
        [height, width] = input_shape[2:]
        param_name = self.signature['inputs'][0]['data_name']

        # Iterate over all input images provided with the request, transform and append for inference
        for idx, data in enumerate(request):

            # Extract the input image
            img = data.get(param_name)
            if img is None:
                img = data.get("body")
            if img is None:
                img = data.get("data")
            if img is None or len(img) == 0:
                self.error = "Empty image input"
                return None

            try:
                img_arr = image.read(img).asnumpy()
            except Exception as e:
                logging.warning(e, exc_info=True)
                self.error = "Corrupted image input"
                return None

            # Try to identify face to crop
            face = crop_face(img_arr)
            if face is not None:
                face = transform.resize(face, (height, width))
            # If no face identified - use the entire input image
            else:
                face = cv.cvtColor(img_arr, cv.COLOR_BGR2GRAY)

            # Transform image into tensor of the required shape
            face = np.resize(face, input_shape)
            face = normalize(face, height, width)
            face = mx.nd.array(face)
            img_list.append(face)

        return img_list
コード例 #7
0
    def _preprocess(self, data):
        """
            Input image buffer from data is read into NDArray. Then, resized to
            expected shape. Swaps axes to convert image from BGR format to RGB.
            Returns the preprocessed NDArray as a list for next step, Inference.
        """

        # Read input
        input_image = image.read(data[0])

        # Save original input image shape.
        # This is required for preparing the bounding box of the detected object relative to
        # original input
        self.input_height = input_image.shape[0]
        self.input_width = input_image.shape[1]

        # Transform input image - resize, BGR to RGB.
        # Reuse MXNetVisionService _preprocess to achieve above transformations.
        return super(SSDService, self)._preprocess(data)
コード例 #8
0
    def _preprocess(self, data):
        """
            Input image buffer from data is read into NDArray. Then, resized to
            expected shape. Swaps axes to convert image from BGR format to RGB.
            Returns the preprocessed NDArray as a list for next step, Inference.
        """

        # Read input
        input_image = image.read(data[0])

        # Save original input image shape.
        # This is required for preparing the bounding box of the detected object relative to
        # original input
        self.input_height = input_image.shape[0]
        self.input_width = input_image.shape[1]

        # Transform input image - resize, BGR to RGB.
        # Reuse MXNetVisionService _preprocess to achieve above transformations.
        return super(SSDService, self)._preprocess(data)
コード例 #9
0
 def _preprocess(self, data):
     img_list = []
     for idx, img in enumerate(data):
         input_shape = self.signature['inputs'][idx]['data_shape']
         # We are assuming input shape is NCHW
         img_arr = image.read(img)
         img_arr, im_scale = rcnn_resize(img_arr,
                                         SHORTER_SIZE,
                                         MAX_SIZE,
                                         stride=IMAGE_STRIDE)
         rgb_mean = mx.nd.array([[[0, 0, 0]]])
         img_arr = img_arr.astype('float32')
         img_arr = img_arr - rgb_mean
         img_arr = image.transform_shape(img_arr)
         img_list.append(img_arr)
         im_info = [[img_arr.shape[2], img_arr.shape[3], im_scale]]
         self.scale = im_scale
         img_list.append(mx.nd.array(im_info))
     return img_list