forked from mindspore-Ecosystem/mindspore
!31141 [MD][Offload] Offload RandomSharpness Op Pure Sharpness Support & UT
Merge pull request !31141 from alashkari/fix-random-sharpness
This commit is contained in:
commit
8b7d7a1e1a
|
@ -277,17 +277,20 @@ class RandomSharpness(nn.Cell):
|
|||
|
||||
self.cast = P.Cast()
|
||||
self.shape = P.Shape()
|
||||
self.ones = P.Ones()
|
||||
self.reshape = P.Reshape()
|
||||
self.expand_dims = P.ExpandDims()
|
||||
self.mul = P.Mul()
|
||||
self.transpose = P.Transpose()
|
||||
|
||||
self.check_rand = Tensor(self.degree_min == self.degree_max)
|
||||
|
||||
self.weight = np.array([[1, 1, 1], [1, 5, 1], [1, 1, 1]])/13.0
|
||||
self.weight = np.repeat(self.weight[np.newaxis, :, :], 3, axis=0)
|
||||
self.weight = np.repeat(self.weight[np.newaxis, :, :], 3, axis=0)
|
||||
self.weight = Tensor(self.weight, mstype.float32)
|
||||
|
||||
self.filter = P.Conv2D(out_channel=3, kernel_size=(3, 3), pad_mode='same')
|
||||
self.filter = P.Conv2D(out_channel=3, kernel_size=(3, 3), pad_mode='pad', pad=1)
|
||||
|
||||
def construct(self, x):
|
||||
|
||||
|
@ -298,6 +301,8 @@ class RandomSharpness(nn.Cell):
|
|||
|
||||
degree_rand_factor = Tensor(np.random.uniform(size=(bs, 1)), dtype=mstype.float32)
|
||||
degree_rand_factor = self.degree_min + (self.degree_max - self.degree_min)*degree_rand_factor
|
||||
degree_factor = self.degree_min * self.ones((bs, 1), mstype.float32)
|
||||
degree_rand_factor = (self.check_rand * degree_factor) + (~self.check_rand * degree_rand_factor)
|
||||
degree_rand_factor = self.reshape(C.repeat_elements(degree_rand_factor, rep=(h*w*c)), (bs, h, w, c))
|
||||
|
||||
x_sharp = self.filter(self.transpose(x, (0, 3, 1, 2)), self.weight)
|
||||
|
|
|
@ -339,6 +339,32 @@ def test_offload_dim_check():
|
|||
continue
|
||||
|
||||
|
||||
def test_offload_random_sharpness_op():
|
||||
"""
|
||||
Feature: test map offload RandomSharpness op.
|
||||
Description: Input is image dataset.
|
||||
Expectation: Output should be same with activated or deactivated offload for RandomSharpness op.
|
||||
"""
|
||||
|
||||
# Dataset with offload activated.
|
||||
dataset_0 = ds.ImageFolderDataset(DATA_DIR)
|
||||
dataset_0 = dataset_0.map(operations=[C.Decode()], input_columns="image")
|
||||
dataset_0 = dataset_0.map(operations=[C.RandomSharpness(degrees=[1.0, 1.0])], input_columns="image", offload=True)
|
||||
dataset_0 = dataset_0.map(operations=[C.HWC2CHW()], input_columns="image", offload=True)
|
||||
dataset_0 = dataset_0.batch(8, drop_remainder=True)
|
||||
|
||||
# Dataset with offload not activated.
|
||||
dataset_1 = ds.ImageFolderDataset(DATA_DIR)
|
||||
dataset_1 = dataset_1.map(operations=[C.Decode()], input_columns="image")
|
||||
dataset_1 = dataset_1.map(operations=[C.RandomSharpness(degrees=[1.0, 1.0])], input_columns="image")
|
||||
dataset_1 = dataset_1.map(operations=[C.HWC2CHW()], input_columns="image")
|
||||
dataset_1 = dataset_1.batch(8, drop_remainder=True)
|
||||
|
||||
for (img_0, _), (img_1, _) in zip(dataset_0.create_tuple_iterator(num_epochs=1, output_numpy=True),
|
||||
dataset_1.create_tuple_iterator(num_epochs=1, output_numpy=True)):
|
||||
np.testing.assert_almost_equal(img_0, img_1, decimal=6)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_offload()
|
||||
test_auto_offload()
|
||||
|
@ -353,3 +379,4 @@ if __name__ == "__main__":
|
|||
test_offload_different_column_end_of_pipeline()
|
||||
test_offload_not_end_of_pipeline()
|
||||
test_offload_dim_check()
|
||||
test_offload_random_sharpness_op()
|
||||
|
|
Loading…
Reference in New Issue