def test_sub(self): height = 4 width = 5 channels = 3 img = np.arange(height * width * channels).reshape( [height, width, channels]) # input size is an int value = 10.0 seq = Sequential( [pp.Image2Gpubuffer(), pp.Sub(value), pp.Gpubuffer2Image()]) result = seq(img).reshape(-1) for i in range(0, result.size): self.assertEqual(i - value, result[i]) # input size is a sequence values = (9, 4, 2) seq = Sequential( [pp.Image2Gpubuffer(), pp.Sub(values), pp.Gpubuffer2Image()]) result = seq(img) for i in range(0, result.shape[0]): for j in range(0, result.shape[1]): for k in range(0, result.shape[2]): self.assertEqual(result[i][j][k], img[i][j][k] - values[k])
def test_resize(self): height = 9 width = 5 channels = 3 img = np.arange(height * width).reshape([height, width, 1]) * np.ones( (1, channels)) # input size is an int for new_size in [3, 10]: seq_gpu = Sequential([ pp.Image2Gpubuffer(), pp.Resize(new_size), pp.Gpubuffer2Image() ]) seq_paddle = Sequential([Resize(new_size)]) result_gpu = seq_gpu(img) result_paddle = seq_paddle(img) self.assertEqual(result_gpu.shape, result_paddle.shape) for i in range(0, result_gpu.shape[0]): for j in range(0, result_gpu.shape[1]): for k in range(0, result_gpu.shape[2]): self.assertAlmostEqual(result_gpu[i][j][k], result_paddle[i][j][k], 5) # input size is a sequence for new_height, new_width in [(7, 3), (15, 10)]: seq_gpu = Sequential([ pp.Image2Gpubuffer(), pp.Resize((new_width, new_height)), pp.Gpubuffer2Image() ]) seq_paddle = Sequential([Resize((new_width, new_height))]) result_gpu = seq_gpu(img) result_paddle = seq_paddle(img) self.assertEqual(result_gpu.shape, result_paddle.shape) for i in range(0, result_gpu.shape[0]): for j in range(0, result_gpu.shape[1]): for k in range(0, result_gpu.shape[2]): self.assertAlmostEqual(result_gpu[i][j][k], result_paddle[i][j][k], 5)
def test_div(self): height = 4 width = 5 channels = 3 value = 255.0 img = np.arange(height * width * channels).reshape( [height, width, channels]) seq = Sequential( [pp.Image2Gpubuffer(), pp.Div(value), pp.Gpubuffer2Image()]) result = seq(img).reshape(-1) for i in range(0, result.size): self.assertAlmostEqual(i / value, result[i], 5)
def test_resize_fixed_point(self): new_height = 256 new_width = 256 * 4 / 3 seq = Sequential([ File2Image(), pp.Image2Gpubuffer(), pp.Resize((new_width, new_height), use_fixed_point=True), pp.Gpubuffer2Image() ]) img = seq("./capture_16.bmp") img = np.resize(img, (new_height, new_width * 3)) img_vis = np.loadtxt("./cap_resize_16.raw") img_resize_diff = img_vis - img self.assertEqual(np.all(img_resize_diff == 0), True)
def test_center_crop(self): height = 9 width = 7 channels = 3 img = np.arange(height * width * channels).reshape( [height, width, channels]) new_size = 5 seq = Sequential([ pp.Image2Gpubuffer(), pp.CenterCrop(new_size), pp.Gpubuffer2Image() ]) result = seq(img) self.assertEqual(result.shape[0], new_size) self.assertEqual(result.shape[1], new_size) self.assertEqual(result.shape[2], channels)
def test_normalize(self): height = 4 width = 5 channels = 3 img = np.random.rand(height, width, channels) mean = [5.0, 5.0, 5.0] std = [2.0, 2.0, 2.0] seq = Sequential([ pp.Image2Gpubuffer(), pp.Normalize(mean, std), pp.Gpubuffer2Image() ]) result = seq(img) for i in range(0, height): for j in range(0, width): for k in range(0, channels): self.assertAlmostEqual((img[i][j][k] - mean[k]) / std[k], result[i][j][k], 5)