def test_resize(self): self.assertRaises(ValueError, imageIO.createResizeImageUDF, [1, 2, 3]) make_smaller = imageIO.createResizeImageUDF([4, 5]).func imgAsRow = imageIO.imageArrayToStruct(array) smallerImg = make_smaller(imgAsRow) self.assertEqual(smallerImg.height, 4) self.assertEqual(smallerImg.width, 5) # Compare to PIL resizing imgAsPIL = PIL.Image.fromarray(obj=imageIO._reverseChannels(array)).resize((5, 4)) smallerAry = imageIO._reverseChannels(np.asarray(imgAsPIL)) np.testing.assert_array_equal(smallerAry, imageIO.imageStructToArray(smallerImg)) # Test that resize with the same size is a no-op sameImage = imageIO.createResizeImageUDF((imgAsRow.height, imgAsRow.width)).func(imgAsRow) self.assertEqual(imgAsRow, sameImage) # Test that we have a valid image schema (all fields are in) for n in ImageSchema.imageSchema['image'].dataType.names: smallerImg[n]
def test_resize(self): self.assertRaises(ValueError, imageIO.createResizeImageUDF, [1, 2, 3]) make_smaller = imageIO.createResizeImageUDF([4, 5]).func imgAsRow = imageIO.imageArrayToStruct(array) smallerImg = make_smaller(imgAsRow) self.assertEqual(smallerImg.height, 4) self.assertEqual(smallerImg.width, 5) # Compare to PIL resizing imgAsPIL = PIL.Image.fromarray( obj=imageIO._reverseChannels(array)).resize((5, 4)) smallerAry = imageIO._reverseChannels(np.asarray(imgAsPIL)) np.testing.assert_array_equal(smallerAry, imageIO.imageStructToArray(smallerImg)) # Test that resize with the same size is a no-op sameImage = imageIO.createResizeImageUDF( (imgAsRow.height, imgAsRow.width)).func(imgAsRow) self.assertEqual(imgAsRow, sameImage) # Test that we have a valid image schema (all fields are in) for n in ImageSchema.imageSchema['image'].dataType.names: smallerImg[n]
def _transform(self, dataset): modelGraphSpec = _buildTFGraphForName(self.getModelName(), self.getFeaturize()) inputCol = self.getInputCol() resizedCol = "__sdl_imagesResized" tfTransformer = TFImageTransformer( channelOrder='BGR', inputCol=resizedCol, outputCol=self.getOutputCol(), graph=modelGraphSpec["graph"], inputTensor=modelGraphSpec["inputTensorName"], outputTensor=modelGraphSpec["outputTensorName"], outputMode=modelGraphSpec["outputMode"]) resizeUdf = createResizeImageUDF(modelGraphSpec["inputTensorSize"]) result = tfTransformer.transform(dataset.withColumn(resizedCol, resizeUdf(inputCol))) return result.drop(resizedCol)