提交 1227719c 编写于 作者: M mindspore-ci-bot 提交者: Gitee

!2603 [Dataset Python UT] Cleanup mse and md5 validation

Merge pull request !2603 from TinaMengtingZhang/I1LTCA-mse-check-cleanup
...@@ -20,7 +20,7 @@ import numpy as np ...@@ -20,7 +20,7 @@ import numpy as np
import mindspore.dataset.engine as de import mindspore.dataset.engine as de
import mindspore.dataset.transforms.vision.py_transforms as F import mindspore.dataset.transforms.vision.py_transforms as F
from mindspore import log as logger from mindspore import log as logger
from util import visualize_list from util import visualize_list, diff_mse
DATA_DIR = "../data/dataset/testImageNetData/train/" DATA_DIR = "../data/dataset/testImageNetData/train/"
...@@ -75,7 +75,7 @@ def test_auto_contrast(plot=False): ...@@ -75,7 +75,7 @@ def test_auto_contrast(plot=False):
num_samples = images_original.shape[0] num_samples = images_original.shape[0]
mse = np.zeros(num_samples) mse = np.zeros(num_samples)
for i in range(num_samples): for i in range(num_samples):
mse[i] = np.mean((images_auto_contrast[i] - images_original[i]) ** 2) mse[i] = diff_mse(images_auto_contrast[i], images_original[i])
logger.info("MSE= {}".format(str(np.mean(mse)))) logger.info("MSE= {}".format(str(np.mean(mse))))
if plot: if plot:
......
...@@ -21,11 +21,13 @@ import mindspore.dataset as ds ...@@ -21,11 +21,13 @@ import mindspore.dataset as ds
import mindspore.dataset.transforms.vision.c_transforms as c import mindspore.dataset.transforms.vision.c_transforms as c
import mindspore.dataset.transforms.vision.py_transforms as f import mindspore.dataset.transforms.vision.py_transforms as f
from mindspore import log as logger from mindspore import log as logger
from util import visualize_image, diff_mse from util import visualize_image, visualize_list, diff_mse, save_and_check_md5, \
config_get_set_seed, config_get_set_num_parallel_workers
DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"] DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"]
SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json" SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json"
GENERATE_GOLDEN = False
def test_cut_out_op(plot=False): def test_cut_out_op(plot=False):
""" """
...@@ -34,7 +36,7 @@ def test_cut_out_op(plot=False): ...@@ -34,7 +36,7 @@ def test_cut_out_op(plot=False):
logger.info("test_cut_out") logger.info("test_cut_out")
# First dataset # First dataset
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"]) data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
transforms_1 = [ transforms_1 = [
f.Decode(), f.Decode(),
...@@ -45,7 +47,7 @@ def test_cut_out_op(plot=False): ...@@ -45,7 +47,7 @@ def test_cut_out_op(plot=False):
data1 = data1.map(input_columns=["image"], operations=transform_1()) data1 = data1.map(input_columns=["image"], operations=transform_1())
# Second dataset # Second dataset
data2 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"]) data2 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
decode_op = c.Decode() decode_op = c.Decode()
cut_out_op = c.CutOut(80) cut_out_op = c.CutOut(80)
...@@ -74,25 +76,24 @@ def test_cut_out_op(plot=False): ...@@ -74,25 +76,24 @@ def test_cut_out_op(plot=False):
visualize_image(image_1, image_2, mse) visualize_image(image_1, image_2, mse)
def test_cut_out_op_multicut(): def test_cut_out_op_multicut(plot=False):
""" """
Test Cutout Test Cutout
""" """
logger.info("test_cut_out") logger.info("test_cut_out")
# First dataset # First dataset
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"]) data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
transforms_1 = [ transforms_1 = [
f.Decode(), f.Decode(),
f.ToTensor(), f.ToTensor(),
f.RandomErasing(value='random')
] ]
transform_1 = f.ComposeOp(transforms_1) transform_1 = f.ComposeOp(transforms_1)
data1 = data1.map(input_columns=["image"], operations=transform_1()) data1 = data1.map(input_columns=["image"], operations=transform_1())
# Second dataset # Second dataset
data2 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"]) data2 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
decode_op = c.Decode() decode_op = c.Decode()
cut_out_op = c.CutOut(80, num_patches=10) cut_out_op = c.CutOut(80, num_patches=10)
...@@ -104,19 +105,107 @@ def test_cut_out_op_multicut(): ...@@ -104,19 +105,107 @@ def test_cut_out_op_multicut():
data2 = data2.map(input_columns=["image"], operations=transforms_2) data2 = data2.map(input_columns=["image"], operations=transforms_2)
num_iter = 0 num_iter = 0
image_list_1, image_list_2 = [], []
for item1, item2 in zip(data1.create_dict_iterator(), data2.create_dict_iterator()):
num_iter += 1
image_1 = (item1["image"].transpose(1, 2, 0) * 255).astype(np.uint8)
# C image doesn't require transpose
image_2 = item2["image"]
image_list_1.append(image_1)
image_list_2.append(image_2)
logger.info("shape of image_1: {}".format(image_1.shape))
logger.info("shape of image_2: {}".format(image_2.shape))
logger.info("dtype of image_1: {}".format(image_1.dtype))
logger.info("dtype of image_2: {}".format(image_2.dtype))
if plot:
visualize_list(image_list_1, image_list_2)
def test_cut_out_md5():
"""
Test Cutout with md5 check
"""
logger.info("test_cut_out_md5")
original_seed = config_get_set_seed(2)
original_num_parallel_workers = config_get_set_num_parallel_workers(1)
# First dataset
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
decode_op = c.Decode()
cut_out_op = c.CutOut(100)
data1 = data1.map(input_columns=["image"], operations=decode_op)
data1 = data1.map(input_columns=["image"], operations=cut_out_op)
data2 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
transforms = [
f.Decode(),
f.ToTensor(),
f.Cutout(100)
]
transform = f.ComposeOp(transforms)
data2 = data2.map(input_columns=["image"], operations=transform())
# Compare with expected md5 from images
filename1 = "cut_out_01_c_result.npz"
save_and_check_md5(data1, filename1, generate_golden=GENERATE_GOLDEN)
filename2 = "cut_out_01_py_result.npz"
save_and_check_md5(data2, filename2, generate_golden=GENERATE_GOLDEN)
# Restore config
ds.config.set_seed(original_seed)
ds.config.set_num_parallel_workers(original_num_parallel_workers)
def test_cut_out_comp(plot=False):
"""
Test Cutout with c++ and python op comparison
"""
logger.info("test_cut_out_comp")
# First dataset
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
transforms_1 = [
f.Decode(),
f.ToTensor(),
f.Cutout(200)
]
transform_1 = f.ComposeOp(transforms_1)
data1 = data1.map(input_columns=["image"], operations=transform_1())
# Second dataset
data2 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
transforms_2 = [
c.Decode(),
c.CutOut(200)
]
data2 = data2.map(input_columns=["image"], operations=transforms_2)
num_iter = 0
image_list_1, image_list_2 = [], []
for item1, item2 in zip(data1.create_dict_iterator(), data2.create_dict_iterator()): for item1, item2 in zip(data1.create_dict_iterator(), data2.create_dict_iterator()):
num_iter += 1 num_iter += 1
image_1 = (item1["image"].transpose(1, 2, 0) * 255).astype(np.uint8) image_1 = (item1["image"].transpose(1, 2, 0) * 255).astype(np.uint8)
# C image doesn't require transpose # C image doesn't require transpose
image_2 = item2["image"] image_2 = item2["image"]
image_list_1.append(image_1)
image_list_2.append(image_2)
logger.info("shape of image_1: {}".format(image_1.shape)) logger.info("shape of image_1: {}".format(image_1.shape))
logger.info("shape of image_2: {}".format(image_2.shape)) logger.info("shape of image_2: {}".format(image_2.shape))
logger.info("dtype of image_1: {}".format(image_1.dtype)) logger.info("dtype of image_1: {}".format(image_1.dtype))
logger.info("dtype of image_2: {}".format(image_2.dtype)) logger.info("dtype of image_2: {}".format(image_2.dtype))
if plot:
visualize_list(image_list_1, image_list_2, visualize_mode=2)
if __name__ == "__main__": if __name__ == "__main__":
test_cut_out_op(plot=True) test_cut_out_op(plot=True)
test_cut_out_op_multicut() test_cut_out_op_multicut(plot=True)
test_cut_out_md5()
test_cut_out_comp(plot=True)
...@@ -20,10 +20,11 @@ import numpy as np ...@@ -20,10 +20,11 @@ import numpy as np
import mindspore.dataset.engine as de import mindspore.dataset.engine as de
import mindspore.dataset.transforms.vision.py_transforms as F import mindspore.dataset.transforms.vision.py_transforms as F
from mindspore import log as logger from mindspore import log as logger
from util import visualize_list from util import visualize_list, diff_mse, save_and_check_md5
DATA_DIR = "../data/dataset/testImageNetData/train/" DATA_DIR = "../data/dataset/testImageNetData/train/"
GENERATE_GOLDEN = False
def test_equalize(plot=False): def test_equalize(plot=False):
""" """
...@@ -75,12 +76,31 @@ def test_equalize(plot=False): ...@@ -75,12 +76,31 @@ def test_equalize(plot=False):
num_samples = images_original.shape[0] num_samples = images_original.shape[0]
mse = np.zeros(num_samples) mse = np.zeros(num_samples)
for i in range(num_samples): for i in range(num_samples):
mse[i] = np.mean((images_equalize[i] - images_original[i]) ** 2) mse[i] = diff_mse(images_equalize[i], images_original[i])
logger.info("MSE= {}".format(str(np.mean(mse)))) logger.info("MSE= {}".format(str(np.mean(mse))))
if plot: if plot:
visualize_list(images_original, images_equalize) visualize_list(images_original, images_equalize)
def test_equalize_md5():
"""
Test Equalize with md5 check
"""
logger.info("Test Equalize")
# First dataset
data1 = de.ImageFolderDatasetV2(dataset_dir=DATA_DIR, shuffle=False)
transforms = F.ComposeOp([F.Decode(),
F.Equalize(),
F.ToTensor()])
data1 = data1.map(input_columns="image", operations=transforms())
# Compare with expected md5 from images
filename = "equalize_01_result.npz"
save_and_check_md5(data1, filename, generate_golden=GENERATE_GOLDEN)
if __name__ == "__main__": if __name__ == "__main__":
test_equalize(plot=True) test_equalize(plot=True)
test_equalize_md5()
...@@ -20,11 +20,12 @@ import numpy as np ...@@ -20,11 +20,12 @@ import numpy as np
import mindspore.dataset as ds import mindspore.dataset as ds
import mindspore.dataset.transforms.vision.py_transforms as vision import mindspore.dataset.transforms.vision.py_transforms as vision
from mindspore import log as logger from mindspore import log as logger
from util import visualize_list from util import visualize_list, save_and_check_md5
DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"] DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"]
SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json" SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json"
GENERATE_GOLDEN = False
def test_five_crop_op(plot=False): def test_five_crop_op(plot=False):
""" """
...@@ -63,7 +64,7 @@ def test_five_crop_op(plot=False): ...@@ -63,7 +64,7 @@ def test_five_crop_op(plot=False):
logger.info("dtype of image_1: {}".format(image_1.dtype)) logger.info("dtype of image_1: {}".format(image_1.dtype))
logger.info("dtype of image_2: {}".format(image_2.dtype)) logger.info("dtype of image_2: {}".format(image_2.dtype))
if plot: if plot:
visualize_list(np.array([image_1]*10), (image_2 * 255).astype(np.uint8).transpose(0, 2, 3, 1)) visualize_list(np.array([image_1]*5), (image_2 * 255).astype(np.uint8).transpose(0, 2, 3, 1))
# The output data should be of a 4D tensor shape, a stack of 5 images. # The output data should be of a 4D tensor shape, a stack of 5 images.
assert len(image_2.shape) == 4 assert len(image_2.shape) == 4
...@@ -93,6 +94,27 @@ def test_five_crop_error_msg(): ...@@ -93,6 +94,27 @@ def test_five_crop_error_msg():
assert error_msg in str(info.value) assert error_msg in str(info.value)
def test_five_crop_md5():
"""
Test FiveCrop with md5 check
"""
logger.info("test_five_crop_md5")
# First dataset
data = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
transforms = [
vision.Decode(),
vision.FiveCrop(100),
lambda images: np.stack([vision.ToTensor()(image) for image in images]) # 4D stack of 5 images
]
transform = vision.ComposeOp(transforms)
data = data.map(input_columns=["image"], operations=transform())
# Compare with expected md5 from images
filename = "five_crop_01_result.npz"
save_and_check_md5(data, filename, generate_golden=GENERATE_GOLDEN)
if __name__ == "__main__": if __name__ == "__main__":
test_five_crop_op(plot=True) test_five_crop_op(plot=True)
test_five_crop_error_msg() test_five_crop_error_msg()
test_five_crop_md5()
...@@ -20,10 +20,11 @@ import numpy as np ...@@ -20,10 +20,11 @@ import numpy as np
import mindspore.dataset.engine as de import mindspore.dataset.engine as de
import mindspore.dataset.transforms.vision.py_transforms as F import mindspore.dataset.transforms.vision.py_transforms as F
from mindspore import log as logger from mindspore import log as logger
from util import visualize_list from util import visualize_list, save_and_check_md5
DATA_DIR = "../data/dataset/testImageNetData/train/" DATA_DIR = "../data/dataset/testImageNetData/train/"
GENERATE_GOLDEN = False
def test_invert(plot=False): def test_invert(plot=False):
""" """
...@@ -82,5 +83,25 @@ def test_invert(plot=False): ...@@ -82,5 +83,25 @@ def test_invert(plot=False):
visualize_list(images_original, images_invert) visualize_list(images_original, images_invert)
def test_invert_md5():
"""
Test Invert with md5 check
"""
logger.info("Test Invert with md5 check")
# Generate dataset
ds = de.ImageFolderDatasetV2(dataset_dir=DATA_DIR, shuffle=False)
transforms_invert = F.ComposeOp([F.Decode(),
F.Invert(),
F.ToTensor()])
data = ds.map(input_columns="image", operations=transforms_invert())
# Compare with expected md5 from images
filename = "invert_01_result.npz"
save_and_check_md5(data, filename, generate_golden=GENERATE_GOLDEN)
if __name__ == "__main__": if __name__ == "__main__":
test_invert(plot=True) test_invert(plot=True)
test_invert_md5()
...@@ -73,12 +73,12 @@ def test_linear_transformation_op(plot=False): ...@@ -73,12 +73,12 @@ def test_linear_transformation_op(plot=False):
if plot: if plot:
visualize_list(image, image_transformed) visualize_list(image, image_transformed)
def test_linear_transformation_md5_01(): def test_linear_transformation_md5():
""" """
Test LinearTransformation op: valid params (transformation_matrix, mean_vector) Test LinearTransformation op: valid params (transformation_matrix, mean_vector)
Expected to pass Expected to pass
""" """
logger.info("test_linear_transformation_md5_01") logger.info("test_linear_transformation_md5")
# Initialize parameters # Initialize parameters
height = 50 height = 50
...@@ -102,12 +102,12 @@ def test_linear_transformation_md5_01(): ...@@ -102,12 +102,12 @@ def test_linear_transformation_md5_01():
filename = "linear_transformation_01_result.npz" filename = "linear_transformation_01_result.npz"
save_and_check_md5(data1, filename, generate_golden=GENERATE_GOLDEN) save_and_check_md5(data1, filename, generate_golden=GENERATE_GOLDEN)
def test_linear_transformation_md5_02(): def test_linear_transformation_exception_01():
""" """
Test LinearTransformation op: transformation_matrix is not provided Test LinearTransformation op: transformation_matrix is not provided
Expected to raise ValueError Expected to raise ValueError
""" """
logger.info("test_linear_transformation_md5_02") logger.info("test_linear_transformation_exception_01")
# Initialize parameters # Initialize parameters
height = 50 height = 50
...@@ -130,12 +130,12 @@ def test_linear_transformation_md5_02(): ...@@ -130,12 +130,12 @@ def test_linear_transformation_md5_02():
logger.info("Got an exception in DE: {}".format(str(e))) logger.info("Got an exception in DE: {}".format(str(e)))
assert "not provided" in str(e) assert "not provided" in str(e)
def test_linear_transformation_md5_03(): def test_linear_transformation_exception_02():
""" """
Test LinearTransformation op: mean_vector is not provided Test LinearTransformation op: mean_vector is not provided
Expected to raise ValueError Expected to raise ValueError
""" """
logger.info("test_linear_transformation_md5_03") logger.info("test_linear_transformation_exception_02")
# Initialize parameters # Initialize parameters
height = 50 height = 50
...@@ -158,12 +158,12 @@ def test_linear_transformation_md5_03(): ...@@ -158,12 +158,12 @@ def test_linear_transformation_md5_03():
logger.info("Got an exception in DE: {}".format(str(e))) logger.info("Got an exception in DE: {}".format(str(e)))
assert "not provided" in str(e) assert "not provided" in str(e)
def test_linear_transformation_md5_04(): def test_linear_transformation_exception_03():
""" """
Test LinearTransformation op: transformation_matrix is not a square matrix Test LinearTransformation op: transformation_matrix is not a square matrix
Expected to raise ValueError Expected to raise ValueError
""" """
logger.info("test_linear_transformation_md5_04") logger.info("test_linear_transformation_exception_03")
# Initialize parameters # Initialize parameters
height = 50 height = 50
...@@ -187,12 +187,12 @@ def test_linear_transformation_md5_04(): ...@@ -187,12 +187,12 @@ def test_linear_transformation_md5_04():
logger.info("Got an exception in DE: {}".format(str(e))) logger.info("Got an exception in DE: {}".format(str(e)))
assert "square matrix" in str(e) assert "square matrix" in str(e)
def test_linear_transformation_md5_05(): def test_linear_transformation_exception_04():
""" """
Test LinearTransformation op: mean_vector does not match dimension of transformation_matrix Test LinearTransformation op: mean_vector does not match dimension of transformation_matrix
Expected to raise ValueError Expected to raise ValueError
""" """
logger.info("test_linear_transformation_md5_05") logger.info("test_linear_transformation_exception_04")
# Initialize parameters # Initialize parameters
height = 50 height = 50
...@@ -217,9 +217,9 @@ def test_linear_transformation_md5_05(): ...@@ -217,9 +217,9 @@ def test_linear_transformation_md5_05():
assert "should match" in str(e) assert "should match" in str(e)
if __name__ == '__main__': if __name__ == '__main__':
test_linear_transformation_op(True) test_linear_transformation_op(plot=True)
test_linear_transformation_md5_01() test_linear_transformation_md5()
test_linear_transformation_md5_02() test_linear_transformation_exception_01()
test_linear_transformation_md5_03() test_linear_transformation_exception_02()
test_linear_transformation_md5_04() test_linear_transformation_exception_03()
test_linear_transformation_md5_05() test_linear_transformation_exception_04()
...@@ -21,11 +21,12 @@ import mindspore.dataset as ds ...@@ -21,11 +21,12 @@ import mindspore.dataset as ds
import mindspore.dataset.transforms.vision.c_transforms as c_vision import mindspore.dataset.transforms.vision.c_transforms as c_vision
import mindspore.dataset.transforms.vision.py_transforms as py_vision import mindspore.dataset.transforms.vision.py_transforms as py_vision
from mindspore import log as logger from mindspore import log as logger
from util import diff_mse from util import diff_mse, save_and_check_md5
DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"] DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"]
SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json" SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json"
GENERATE_GOLDEN = False
def test_pad_op(): def test_pad_op():
""" """
...@@ -116,6 +117,39 @@ def test_pad_grayscale(): ...@@ -116,6 +117,39 @@ def test_pad_grayscale():
assert shape1[0:1] == shape2[0:1] assert shape1[0:1] == shape2[0:1]
def test_pad_md5():
"""
Test Pad with md5 check
"""
logger.info("test_pad_md5")
# First dataset
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
decode_op = c_vision.Decode()
pad_op = c_vision.Pad(150)
ctrans = [decode_op,
pad_op,
]
data1 = data1.map(input_columns=["image"], operations=ctrans)
# Second dataset
data2 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
pytrans = [
py_vision.Decode(),
py_vision.Pad(150),
py_vision.ToTensor(),
]
transform = py_vision.ComposeOp(pytrans)
data2 = data2.map(input_columns=["image"], operations=transform())
# Compare with expected md5 from images
filename1 = "pad_01_c_result.npz"
save_and_check_md5(data1, filename1, generate_golden=GENERATE_GOLDEN)
filename2 = "pad_01_py_result.npz"
save_and_check_md5(data2, filename2, generate_golden=GENERATE_GOLDEN)
if __name__ == "__main__": if __name__ == "__main__":
test_pad_op() test_pad_op()
test_pad_grayscale() test_pad_grayscale()
test_pad_md5()
...@@ -17,13 +17,16 @@ Testing RandomColor op in DE ...@@ -17,13 +17,16 @@ Testing RandomColor op in DE
""" """
import numpy as np import numpy as np
import mindspore.dataset as ds
import mindspore.dataset.engine as de import mindspore.dataset.engine as de
import mindspore.dataset.transforms.vision.py_transforms as F import mindspore.dataset.transforms.vision.py_transforms as F
from mindspore import log as logger from mindspore import log as logger
from util import visualize_list from util import visualize_list, diff_mse, save_and_check_md5, \
config_get_set_seed, config_get_set_num_parallel_workers
DATA_DIR = "../data/dataset/testImageNetData/train/" DATA_DIR = "../data/dataset/testImageNetData/train/"
GENERATE_GOLDEN = False
def test_random_color(degrees=(0.1, 1.9), plot=False): def test_random_color(degrees=(0.1, 1.9), plot=False):
""" """
...@@ -32,14 +35,14 @@ def test_random_color(degrees=(0.1, 1.9), plot=False): ...@@ -32,14 +35,14 @@ def test_random_color(degrees=(0.1, 1.9), plot=False):
logger.info("Test RandomColor") logger.info("Test RandomColor")
# Original Images # Original Images
ds = de.ImageFolderDatasetV2(dataset_dir=DATA_DIR, shuffle=False) data = de.ImageFolderDatasetV2(dataset_dir=DATA_DIR, shuffle=False)
transforms_original = F.ComposeOp([F.Decode(), transforms_original = F.ComposeOp([F.Decode(),
F.Resize((224, 224)), F.Resize((224, 224)),
F.ToTensor()]) F.ToTensor()])
ds_original = ds.map(input_columns="image", ds_original = data.map(input_columns="image",
operations=transforms_original()) operations=transforms_original())
ds_original = ds_original.batch(512) ds_original = ds_original.batch(512)
...@@ -52,15 +55,15 @@ def test_random_color(degrees=(0.1, 1.9), plot=False): ...@@ -52,15 +55,15 @@ def test_random_color(degrees=(0.1, 1.9), plot=False):
axis=0) axis=0)
# Random Color Adjusted Images # Random Color Adjusted Images
ds = de.ImageFolderDatasetV2(dataset_dir=DATA_DIR, shuffle=False) data = de.ImageFolderDatasetV2(dataset_dir=DATA_DIR, shuffle=False)
transforms_random_color = F.ComposeOp([F.Decode(), transforms_random_color = F.ComposeOp([F.Decode(),
F.Resize((224, 224)), F.Resize((224, 224)),
F.RandomColor(degrees=degrees), F.RandomColor(degrees=degrees),
F.ToTensor()]) F.ToTensor()])
ds_random_color = ds.map(input_columns="image", ds_random_color = data.map(input_columns="image",
operations=transforms_random_color()) operations=transforms_random_color())
ds_random_color = ds_random_color.batch(512) ds_random_color = ds_random_color.batch(512)
...@@ -75,14 +78,40 @@ def test_random_color(degrees=(0.1, 1.9), plot=False): ...@@ -75,14 +78,40 @@ def test_random_color(degrees=(0.1, 1.9), plot=False):
num_samples = images_original.shape[0] num_samples = images_original.shape[0]
mse = np.zeros(num_samples) mse = np.zeros(num_samples)
for i in range(num_samples): for i in range(num_samples):
mse[i] = np.mean((images_random_color[i] - images_original[i]) ** 2) mse[i] = diff_mse(images_random_color[i], images_original[i])
logger.info("MSE= {}".format(str(np.mean(mse)))) logger.info("MSE= {}".format(str(np.mean(mse))))
if plot: if plot:
visualize_list(images_original, images_random_color) visualize_list(images_original, images_random_color)
def test_random_color_md5():
"""
Test RandomColor with md5 check
"""
logger.info("Test RandomColor with md5 check")
original_seed = config_get_set_seed(10)
original_num_parallel_workers = config_get_set_num_parallel_workers(1)
# Generate dataset
data = de.ImageFolderDatasetV2(dataset_dir=DATA_DIR, shuffle=False)
transforms = F.ComposeOp([F.Decode(),
F.RandomColor((0.5, 1.5)),
F.ToTensor()])
data = data.map(input_columns="image", operations=transforms())
# Compare with expected md5 from images
filename = "random_color_01_result.npz"
save_and_check_md5(data, filename, generate_golden=GENERATE_GOLDEN)
# Restore configuration
ds.config.set_seed(original_seed)
ds.config.set_num_parallel_workers((original_num_parallel_workers))
if __name__ == "__main__": if __name__ == "__main__":
test_random_color() test_random_color()
test_random_color(plot=True) test_random_color(plot=True)
test_random_color(degrees=(0.5, 1.5), plot=True) test_random_color(degrees=(0.5, 1.5), plot=True)
test_random_color_md5()
...@@ -22,11 +22,13 @@ import mindspore.dataset as ds ...@@ -22,11 +22,13 @@ import mindspore.dataset as ds
import mindspore.dataset.transforms.vision.c_transforms as c_vision import mindspore.dataset.transforms.vision.c_transforms as c_vision
import mindspore.dataset.transforms.vision.py_transforms as py_vision import mindspore.dataset.transforms.vision.py_transforms as py_vision
from mindspore import log as logger from mindspore import log as logger
from util import diff_mse, visualize_image from util import diff_mse, visualize_image, save_and_check_md5, \
config_get_set_seed, config_get_set_num_parallel_workers
DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"] DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"]
SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json" SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json"
GENERATE_GOLDEN = False
def util_test_random_color_adjust_error(brightness=(1, 1), contrast=(1, 1), saturation=(1, 1), hue=(0, 0)): def util_test_random_color_adjust_error(brightness=(1, 1), contrast=(1, 1), saturation=(1, 1), hue=(0, 0)):
""" """
...@@ -188,6 +190,41 @@ def test_random_color_adjust_op_hue_error(): ...@@ -188,6 +190,41 @@ def test_random_color_adjust_op_hue_error():
util_test_random_color_adjust_error(hue=(0.5, 0.5)) util_test_random_color_adjust_error(hue=(0.5, 0.5))
def test_random_color_adjust_md5():
"""
Test RandomColorAdjust with md5 check
"""
logger.info("Test RandomColorAdjust with md5 check")
original_seed = config_get_set_seed(10)
original_num_parallel_workers = config_get_set_num_parallel_workers(1)
# First dataset
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
decode_op = c_vision.Decode()
random_adjust_op = c_vision.RandomColorAdjust(0.4, 0.4, 0.4, 0.1)
data1 = data1.map(input_columns=["image"], operations=decode_op)
data1 = data1.map(input_columns=["image"], operations=random_adjust_op)
# Second dataset
transforms = [
py_vision.Decode(),
py_vision.RandomColorAdjust(0.4, 0.4, 0.4, 0.1),
py_vision.ToTensor()
]
transform = py_vision.ComposeOp(transforms)
data2 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
data2 = data2.map(input_columns=["image"], operations=transform())
# Compare with expected md5 from images
filename = "random_color_adjust_01_c_result.npz"
save_and_check_md5(data1, filename, generate_golden=GENERATE_GOLDEN)
filename = "random_color_adjust_01_py_result.npz"
save_and_check_md5(data2, filename, generate_golden=GENERATE_GOLDEN)
# Restore configuration
ds.config.set_seed(original_seed)
ds.config.set_num_parallel_workers(original_num_parallel_workers)
if __name__ == "__main__": if __name__ == "__main__":
test_random_color_adjust_op_brightness(plot=True) test_random_color_adjust_op_brightness(plot=True)
test_random_color_adjust_op_brightness_error() test_random_color_adjust_op_brightness_error()
...@@ -197,3 +234,4 @@ if __name__ == "__main__": ...@@ -197,3 +234,4 @@ if __name__ == "__main__":
test_random_color_adjust_op_saturation_error() test_random_color_adjust_op_saturation_error()
test_random_color_adjust_op_hue(plot=True) test_random_color_adjust_op_hue(plot=True)
test_random_color_adjust_op_hue_error() test_random_color_adjust_op_hue_error()
test_random_color_adjust_md5()
...@@ -331,6 +331,8 @@ def test_random_crop_and_resize_comp(plot=False): ...@@ -331,6 +331,8 @@ def test_random_crop_and_resize_comp(plot=False):
py_image = (item2["image"].transpose(1, 2, 0) * 255).astype(np.uint8) py_image = (item2["image"].transpose(1, 2, 0) * 255).astype(np.uint8)
image_c_cropped.append(c_image) image_c_cropped.append(c_image)
image_py_cropped.append(py_image) image_py_cropped.append(py_image)
mse = diff_mse(c_image, py_image)
assert mse < 0.02 # rounding error
if plot: if plot:
visualize_list(image_c_cropped, image_py_cropped, visualize_mode=2) visualize_list(image_c_cropped, image_py_cropped, visualize_mode=2)
......
...@@ -15,16 +15,16 @@ ...@@ -15,16 +15,16 @@
""" """
Testing RandomCropDecodeResize op in DE Testing RandomCropDecodeResize op in DE
""" """
import cv2
import mindspore.dataset as ds import mindspore.dataset as ds
import mindspore.dataset.transforms.vision.c_transforms as vision import mindspore.dataset.transforms.vision.c_transforms as vision
from mindspore import log as logger from mindspore import log as logger
from util import diff_mse, visualize_image from util import diff_mse, visualize_image, save_and_check_md5, \
config_get_set_seed, config_get_set_num_parallel_workers
DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"] DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"]
SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json" SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json"
GENERATE_GOLDEN = False
def test_random_crop_decode_resize_op(plot=False): def test_random_crop_decode_resize_op(plot=False):
""" """
...@@ -40,22 +40,46 @@ def test_random_crop_decode_resize_op(plot=False): ...@@ -40,22 +40,46 @@ def test_random_crop_decode_resize_op(plot=False):
# Second dataset # Second dataset
data2 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False) data2 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
random_crop_resize_op = vision.RandomResizedCrop((256, 512), (1, 1), (0.5, 0.5))
data2 = data2.map(input_columns=["image"], operations=decode_op) data2 = data2.map(input_columns=["image"], operations=decode_op)
data2 = data2.map(input_columns=["image"], operations=random_crop_resize_op)
num_iter = 0 num_iter = 0
for item1, item2 in zip(data1.create_dict_iterator(), data2.create_dict_iterator()): for item1, item2 in zip(data1.create_dict_iterator(), data2.create_dict_iterator()):
if num_iter > 0: if num_iter > 0:
break break
crop_and_resize_de = item1["image"] image1 = item1["image"]
original = item2["image"] image2 = item2["image"]
crop_and_resize_cv = cv2.resize(original, (512, 256)) mse = diff_mse(image1, image2)
mse = diff_mse(crop_and_resize_de, crop_and_resize_cv) assert mse == 0
logger.info("random_crop_decode_resize_op_{}, mse: {}".format(num_iter + 1, mse)) logger.info("random_crop_decode_resize_op_{}, mse: {}".format(num_iter + 1, mse))
if plot: if plot:
visualize_image(original, crop_and_resize_de, mse, crop_and_resize_cv) visualize_image(image1, image2, mse)
num_iter += 1 num_iter += 1
def test_random_crop_decode_resize_md5():
"""
Test RandomCropDecodeResize with md5 check
"""
logger.info("Test RandomCropDecodeResize with md5 check")
original_seed = config_get_set_seed(10)
original_num_parallel_workers = config_get_set_num_parallel_workers(1)
# Generate dataset
data = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
random_crop_decode_resize_op = vision.RandomCropDecodeResize((256, 512), (1, 1), (0.5, 0.5))
data = data.map(input_columns=["image"], operations=random_crop_decode_resize_op)
# Compare with expected md5 from images
filename = "random_crop_decode_resize_01_result.npz"
save_and_check_md5(data, filename, generate_golden=GENERATE_GOLDEN)
# Restore configuration
ds.config.set_seed(original_seed)
ds.config.set_num_parallel_workers((original_num_parallel_workers))
if __name__ == "__main__": if __name__ == "__main__":
test_random_crop_decode_resize_op(plot=True) test_random_crop_decode_resize_op(plot=True)
test_random_crop_decode_resize_md5()
...@@ -20,11 +20,13 @@ import numpy as np ...@@ -20,11 +20,13 @@ import numpy as np
import mindspore.dataset as ds import mindspore.dataset as ds
import mindspore.dataset.transforms.vision.py_transforms as vision import mindspore.dataset.transforms.vision.py_transforms as vision
from mindspore import log as logger from mindspore import log as logger
from util import diff_mse, visualize_image from util import diff_mse, visualize_image, save_and_check_md5, \
config_get_set_seed, config_get_set_num_parallel_workers
DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"] DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"]
SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json" SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json"
GENERATE_GOLDEN = False
def test_random_erasing_op(plot=False): def test_random_erasing_op(plot=False):
""" """
...@@ -69,5 +71,32 @@ def test_random_erasing_op(plot=False): ...@@ -69,5 +71,32 @@ def test_random_erasing_op(plot=False):
visualize_image(image_1, image_2, mse) visualize_image(image_1, image_2, mse)
def test_random_erasing_md5():
"""
Test RandomErasing with md5 check
"""
logger.info("Test RandomErasing with md5 check")
original_seed = config_get_set_seed(5)
original_num_parallel_workers = config_get_set_num_parallel_workers(1)
# Generate dataset
data = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
transforms_1 = [
vision.Decode(),
vision.ToTensor(),
vision.RandomErasing(value='random')
]
transform_1 = vision.ComposeOp(transforms_1)
data = data.map(input_columns=["image"], operations=transform_1())
# Compare with expected md5 from images
filename = "random_erasing_01_result.npz"
save_and_check_md5(data, filename, generate_golden=GENERATE_GOLDEN)
# Restore configuration
ds.config.set_seed(original_seed)
ds.config.set_num_parallel_workers((original_num_parallel_workers))
if __name__ == "__main__": if __name__ == "__main__":
test_random_erasing_op(plot=True) test_random_erasing_op(plot=True)
test_random_erasing_md5()
...@@ -49,7 +49,7 @@ def test_random_horizontal_op(plot=False): ...@@ -49,7 +49,7 @@ def test_random_horizontal_op(plot=False):
# First dataset # First dataset
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False) data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
decode_op = c_vision.Decode() decode_op = c_vision.Decode()
random_horizontal_op = c_vision.RandomHorizontalFlip() random_horizontal_op = c_vision.RandomHorizontalFlip(1.0)
data1 = data1.map(input_columns=["image"], operations=decode_op) data1 = data1.map(input_columns=["image"], operations=decode_op)
data1 = data1.map(input_columns=["image"], operations=random_horizontal_op) data1 = data1.map(input_columns=["image"], operations=random_horizontal_op)
...@@ -69,6 +69,7 @@ def test_random_horizontal_op(plot=False): ...@@ -69,6 +69,7 @@ def test_random_horizontal_op(plot=False):
image_h_flipped_2 = h_flip(image) image_h_flipped_2 = h_flip(image)
mse = diff_mse(image_h_flipped, image_h_flipped_2) mse = diff_mse(image_h_flipped, image_h_flipped_2)
assert mse == 0
logger.info("image_{}, mse: {}".format(num_iter + 1, mse)) logger.info("image_{}, mse: {}".format(num_iter + 1, mse))
num_iter += 1 num_iter += 1
if plot: if plot:
......
...@@ -13,16 +13,18 @@ ...@@ -13,16 +13,18 @@
# limitations under the License. # limitations under the License.
# ============================================================================== # ==============================================================================
""" """
Testing the resize op in DE Testing RandomResize op in DE
""" """
import mindspore.dataset as ds import mindspore.dataset as ds
import mindspore.dataset.transforms.vision.c_transforms as vision import mindspore.dataset.transforms.vision.c_transforms as vision
from mindspore import log as logger from mindspore import log as logger
from util import visualize_list from util import visualize_list, save_and_check_md5, \
config_get_set_seed, config_get_set_num_parallel_workers
DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"] DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"]
SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json" SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json"
GENERATE_GOLDEN = False
def test_random_resize_op(plot=False): def test_random_resize_op(plot=False):
""" """
...@@ -52,5 +54,29 @@ def test_random_resize_op(plot=False): ...@@ -52,5 +54,29 @@ def test_random_resize_op(plot=False):
visualize_list(image_original, image_resized) visualize_list(image_original, image_resized)
def test_random_resize_md5():
"""
Test RandomResize with md5 check
"""
logger.info("Test RandomResize with md5 check")
original_seed = config_get_set_seed(5)
original_num_parallel_workers = config_get_set_num_parallel_workers(1)
# Generate dataset
data = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
decode_op = vision.Decode()
resize_op = vision.RandomResize(10)
data = data.map(input_columns=["image"], operations=decode_op)
data = data.map(input_columns=["image"], operations=resize_op)
# Compare with expected md5 from images
filename = "random_resize_01_result.npz"
save_and_check_md5(data, filename, generate_golden=GENERATE_GOLDEN)
# Restore configuration
ds.config.set_seed(original_seed)
ds.config.set_num_parallel_workers(original_num_parallel_workers)
if __name__ == "__main__": if __name__ == "__main__":
test_random_resize_op(plot=True) test_random_resize_op(plot=True)
test_random_resize_md5()
...@@ -21,18 +21,21 @@ import cv2 ...@@ -21,18 +21,21 @@ import cv2
import mindspore.dataset as ds import mindspore.dataset as ds
import mindspore.dataset.transforms.vision.c_transforms as c_vision import mindspore.dataset.transforms.vision.c_transforms as c_vision
import mindspore.dataset.transforms.vision.py_transforms as py_vision import mindspore.dataset.transforms.vision.py_transforms as py_vision
from mindspore.dataset.transforms.vision.utils import Inter
from mindspore import log as logger from mindspore import log as logger
from util import visualize_image, diff_mse from util import visualize_image, visualize_list, diff_mse, save_and_check_md5, \
config_get_set_seed, config_get_set_num_parallel_workers
DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"] DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"]
SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json" SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json"
GENERATE_GOLDEN = False
def test_random_rotation_op(plot=False): def test_random_rotation_op_c(plot=False):
""" """
Test RandomRotation op Test RandomRotation in c++ transformations op
""" """
logger.info("test_random_rotation_op") logger.info("test_random_rotation_op_c")
# First dataset # First dataset
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, shuffle=False) data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, shuffle=False)
...@@ -58,8 +61,44 @@ def test_random_rotation_op(plot=False): ...@@ -58,8 +61,44 @@ def test_random_rotation_op(plot=False):
logger.info("random_rotation_op_{}, mse: {}".format(num_iter + 1, mse)) logger.info("random_rotation_op_{}, mse: {}".format(num_iter + 1, mse))
assert mse == 0 assert mse == 0
num_iter += 1 num_iter += 1
if plot: if plot:
visualize_image(original, rotation_de, mse, rotation_cv) visualize_image(original, rotation_de, mse, rotation_cv)
def test_random_rotation_op_py(plot=False):
"""
Test RandomRotation in python transformations op
"""
logger.info("test_random_rotation_op_py")
# First dataset
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, shuffle=False)
# use [90, 90] to force rotate 90 degrees, expand is set to be True to match output size
transform1 = py_vision.ComposeOp([py_vision.Decode(),
py_vision.RandomRotation((90, 90), expand=True),
py_vision.ToTensor()])
data1 = data1.map(input_columns=["image"], operations=transform1())
# Second dataset
data2 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
transform2 = py_vision.ComposeOp([py_vision.Decode(),
py_vision.ToTensor()])
data2 = data2.map(input_columns=["image"], operations=transform2())
num_iter = 0
for item1, item2 in zip(data1.create_dict_iterator(), data2.create_dict_iterator()):
if num_iter > 0:
break
rotation_de = (item1["image"].transpose(1, 2, 0) * 255).astype(np.uint8)
original = (item2["image"].transpose(1, 2, 0) * 255).astype(np.uint8)
logger.info("shape before rotate: {}".format(original.shape))
rotation_cv = cv2.rotate(original, cv2.ROTATE_90_COUNTERCLOCKWISE)
mse = diff_mse(rotation_de, rotation_cv)
logger.info("random_rotation_op_{}, mse: {}".format(num_iter + 1, mse))
assert mse == 0
num_iter += 1
if plot:
visualize_image(original, rotation_de, mse, rotation_cv)
def test_random_rotation_expand(): def test_random_rotation_expand():
...@@ -71,7 +110,7 @@ def test_random_rotation_expand(): ...@@ -71,7 +110,7 @@ def test_random_rotation_expand():
# First dataset # First dataset
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False) data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
decode_op = c_vision.Decode() decode_op = c_vision.Decode()
# use [90, 90] to force rotate 90 degrees, expand is set to be True to match output size # expand is set to be True to match output size
random_rotation_op = c_vision.RandomRotation((0, 90), expand=True) random_rotation_op = c_vision.RandomRotation((0, 90), expand=True)
data1 = data1.map(input_columns=["image"], operations=decode_op) data1 = data1.map(input_columns=["image"], operations=decode_op)
data1 = data1.map(input_columns=["image"], operations=random_rotation_op) data1 = data1.map(input_columns=["image"], operations=random_rotation_op)
...@@ -83,9 +122,50 @@ def test_random_rotation_expand(): ...@@ -83,9 +122,50 @@ def test_random_rotation_expand():
num_iter += 1 num_iter += 1
def test_rotation_diff(): def test_random_rotation_md5():
"""
Test RandomRotation with md5 check
"""
logger.info("Test RandomRotation with md5 check")
original_seed = config_get_set_seed(5)
original_num_parallel_workers = config_get_set_num_parallel_workers(1)
# Fisrt dataset
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
decode_op = c_vision.Decode()
resize_op = c_vision.RandomRotation((0, 90),
expand=True,
resample=Inter.BILINEAR,
center=(50, 50),
fill_value=150)
data1 = data1.map(input_columns=["image"], operations=decode_op)
data1 = data1.map(input_columns=["image"], operations=resize_op)
# Second dataset
data2 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, shuffle=False)
transform2 = py_vision.ComposeOp([py_vision.Decode(),
py_vision.RandomRotation((0, 90),
expand=True,
resample=Inter.BILINEAR,
center=(50, 50),
fill_value=150),
py_vision.ToTensor()])
data2 = data2.map(input_columns=["image"], operations=transform2())
# Compare with expected md5 from images
filename1 = "random_rotation_01_c_result.npz"
save_and_check_md5(data1, filename1, generate_golden=GENERATE_GOLDEN)
filename2 = "random_rotation_01_py_result.npz"
save_and_check_md5(data2, filename2, generate_golden=GENERATE_GOLDEN)
# Restore configuration
ds.config.set_seed(original_seed)
ds.config.set_num_parallel_workers(original_num_parallel_workers)
def test_rotation_diff(plot=False):
""" """
Test Rotation op Test RandomRotation op
""" """
logger.info("test_random_rotation_op") logger.info("test_random_rotation_op")
...@@ -93,7 +173,7 @@ def test_rotation_diff(): ...@@ -93,7 +173,7 @@ def test_rotation_diff():
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False) data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
decode_op = c_vision.Decode() decode_op = c_vision.Decode()
rotation_op = c_vision.RandomRotation((45, 45), expand=True) rotation_op = c_vision.RandomRotation((45, 45))
ctrans = [decode_op, ctrans = [decode_op,
rotation_op rotation_op
] ]
...@@ -103,7 +183,7 @@ def test_rotation_diff(): ...@@ -103,7 +183,7 @@ def test_rotation_diff():
# Second dataset # Second dataset
transforms = [ transforms = [
py_vision.Decode(), py_vision.Decode(),
py_vision.RandomRotation((45, 45), expand=True), py_vision.RandomRotation((45, 45)),
py_vision.ToTensor(), py_vision.ToTensor(),
] ]
transform = py_vision.ComposeOp(transforms) transform = py_vision.ComposeOp(transforms)
...@@ -111,10 +191,13 @@ def test_rotation_diff(): ...@@ -111,10 +191,13 @@ def test_rotation_diff():
data2 = data2.map(input_columns=["image"], operations=transform()) data2 = data2.map(input_columns=["image"], operations=transform())
num_iter = 0 num_iter = 0
image_list_c, image_list_py = [], []
for item1, item2 in zip(data1.create_dict_iterator(), data2.create_dict_iterator()): for item1, item2 in zip(data1.create_dict_iterator(), data2.create_dict_iterator()):
num_iter += 1 num_iter += 1
c_image = item1["image"] c_image = item1["image"]
py_image = (item2["image"].transpose(1, 2, 0) * 255).astype(np.uint8) py_image = (item2["image"].transpose(1, 2, 0) * 255).astype(np.uint8)
image_list_c.append(c_image)
image_list_py.append(py_image)
logger.info("shape of c_image: {}".format(c_image.shape)) logger.info("shape of c_image: {}".format(c_image.shape))
logger.info("shape of py_image: {}".format(py_image.shape)) logger.info("shape of py_image: {}".format(py_image.shape))
...@@ -122,8 +205,15 @@ def test_rotation_diff(): ...@@ -122,8 +205,15 @@ def test_rotation_diff():
logger.info("dtype of c_image: {}".format(c_image.dtype)) logger.info("dtype of c_image: {}".format(c_image.dtype))
logger.info("dtype of py_image: {}".format(py_image.dtype)) logger.info("dtype of py_image: {}".format(py_image.dtype))
mse = diff_mse(c_image, py_image)
assert mse < 0.001 # Rounding error
if plot:
visualize_list(image_list_c, image_list_py, visualize_mode=2)
if __name__ == "__main__": if __name__ == "__main__":
test_random_rotation_op(True) test_random_rotation_op_c(plot=True)
test_random_rotation_op_py(plot=True)
test_random_rotation_expand() test_random_rotation_expand()
test_rotation_diff() test_random_rotation_md5()
test_rotation_diff(plot=True)
...@@ -16,14 +16,17 @@ ...@@ -16,14 +16,17 @@
Testing RandomSharpness op in DE Testing RandomSharpness op in DE
""" """
import numpy as np import numpy as np
import mindspore.dataset as ds
import mindspore.dataset.engine as de import mindspore.dataset.engine as de
import mindspore.dataset.transforms.vision.py_transforms as F import mindspore.dataset.transforms.vision.py_transforms as F
from mindspore import log as logger from mindspore import log as logger
from util import visualize_list from util import visualize_list, diff_mse, save_and_check_md5, \
config_get_set_seed, config_get_set_num_parallel_workers
DATA_DIR = "../data/dataset/testImageNetData/train/" DATA_DIR = "../data/dataset/testImageNetData/train/"
GENERATE_GOLDEN = False
def test_random_sharpness(degrees=(0.1, 1.9), plot=False): def test_random_sharpness(degrees=(0.1, 1.9), plot=False):
""" """
...@@ -32,14 +35,14 @@ def test_random_sharpness(degrees=(0.1, 1.9), plot=False): ...@@ -32,14 +35,14 @@ def test_random_sharpness(degrees=(0.1, 1.9), plot=False):
logger.info("Test RandomSharpness") logger.info("Test RandomSharpness")
# Original Images # Original Images
ds = de.ImageFolderDatasetV2(dataset_dir=DATA_DIR, shuffle=False) data = de.ImageFolderDatasetV2(dataset_dir=DATA_DIR, shuffle=False)
transforms_original = F.ComposeOp([F.Decode(), transforms_original = F.ComposeOp([F.Decode(),
F.Resize((224, 224)), F.Resize((224, 224)),
F.ToTensor()]) F.ToTensor()])
ds_original = ds.map(input_columns="image", ds_original = data.map(input_columns="image",
operations=transforms_original()) operations=transforms_original())
ds_original = ds_original.batch(512) ds_original = ds_original.batch(512)
...@@ -52,15 +55,15 @@ def test_random_sharpness(degrees=(0.1, 1.9), plot=False): ...@@ -52,15 +55,15 @@ def test_random_sharpness(degrees=(0.1, 1.9), plot=False):
axis=0) axis=0)
# Random Sharpness Adjusted Images # Random Sharpness Adjusted Images
ds = de.ImageFolderDatasetV2(dataset_dir=DATA_DIR, shuffle=False) data = de.ImageFolderDatasetV2(dataset_dir=DATA_DIR, shuffle=False)
transforms_random_sharpness = F.ComposeOp([F.Decode(), transforms_random_sharpness = F.ComposeOp([F.Decode(),
F.Resize((224, 224)), F.Resize((224, 224)),
F.RandomSharpness(degrees=degrees), F.RandomSharpness(degrees=degrees),
F.ToTensor()]) F.ToTensor()])
ds_random_sharpness = ds.map(input_columns="image", ds_random_sharpness = data.map(input_columns="image",
operations=transforms_random_sharpness()) operations=transforms_random_sharpness())
ds_random_sharpness = ds_random_sharpness.batch(512) ds_random_sharpness = ds_random_sharpness.batch(512)
...@@ -75,14 +78,45 @@ def test_random_sharpness(degrees=(0.1, 1.9), plot=False): ...@@ -75,14 +78,45 @@ def test_random_sharpness(degrees=(0.1, 1.9), plot=False):
num_samples = images_original.shape[0] num_samples = images_original.shape[0]
mse = np.zeros(num_samples) mse = np.zeros(num_samples)
for i in range(num_samples): for i in range(num_samples):
mse[i] = np.mean((images_random_sharpness[i] - images_original[i]) ** 2) mse[i] = diff_mse(images_random_sharpness[i], images_original[i])
logger.info("MSE= {}".format(str(np.mean(mse)))) logger.info("MSE= {}".format(str(np.mean(mse))))
if plot: if plot:
visualize_list(images_original, images_random_sharpness) visualize_list(images_original, images_random_sharpness)
def test_random_sharpness_md5():
"""
Test RandomSharpness with md5 comparison
"""
logger.info("Test RandomSharpness with md5 comparison")
original_seed = config_get_set_seed(5)
original_num_parallel_workers = config_get_set_num_parallel_workers(1)
# define map operations
transforms = [
F.Decode(),
F.RandomSharpness((0.5, 1.5)),
F.ToTensor()
]
transform = F.ComposeOp(transforms)
# Generate dataset
data = de.ImageFolderDatasetV2(dataset_dir=DATA_DIR, shuffle=False)
data = data.map(input_columns=["image"], operations=transform())
# check results with md5 comparison
filename = "random_sharpness_01_result.npz"
save_and_check_md5(data, filename, generate_golden=GENERATE_GOLDEN)
# Restore configuration
ds.config.set_seed(original_seed)
ds.config.set_num_parallel_workers(original_num_parallel_workers)
if __name__ == "__main__": if __name__ == "__main__":
test_random_sharpness() test_random_sharpness()
test_random_sharpness(plot=True) test_random_sharpness(plot=True)
test_random_sharpness(degrees=(0.5, 1.5), plot=True) test_random_sharpness(degrees=(0.5, 1.5), plot=True)
test_random_sharpness_md5()
...@@ -49,7 +49,7 @@ def test_random_vertical_op(plot=False): ...@@ -49,7 +49,7 @@ def test_random_vertical_op(plot=False):
# First dataset # First dataset
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False) data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
decode_op = c_vision.Decode() decode_op = c_vision.Decode()
random_vertical_op = c_vision.RandomVerticalFlip() random_vertical_op = c_vision.RandomVerticalFlip(1.0)
data1 = data1.map(input_columns=["image"], operations=decode_op) data1 = data1.map(input_columns=["image"], operations=decode_op)
data1 = data1.map(input_columns=["image"], operations=random_vertical_op) data1 = data1.map(input_columns=["image"], operations=random_vertical_op)
...@@ -65,12 +65,11 @@ def test_random_vertical_op(plot=False): ...@@ -65,12 +65,11 @@ def test_random_vertical_op(plot=False):
break break
image_v_flipped = item1["image"] image_v_flipped = item1["image"]
image = item2["image"] image = item2["image"]
image_v_flipped_2 = v_flip(image) image_v_flipped_2 = v_flip(image)
diff = image_v_flipped - image_v_flipped_2 mse = diff_mse(image_v_flipped, image_v_flipped_2)
mse = np.sum(np.power(diff, 2)) assert mse == 0
logger.info("image_{}, mse: {}".format(num_iter + 1, mse)) logger.info("image_{}, mse: {}".format(num_iter + 1, mse))
num_iter += 1 num_iter += 1
if plot: if plot:
......
...@@ -18,11 +18,12 @@ Testing the rescale op in DE ...@@ -18,11 +18,12 @@ Testing the rescale op in DE
import mindspore.dataset as ds import mindspore.dataset as ds
import mindspore.dataset.transforms.vision.c_transforms as vision import mindspore.dataset.transforms.vision.c_transforms as vision
from mindspore import log as logger from mindspore import log as logger
from util import visualize_image, diff_mse from util import visualize_image, diff_mse, save_and_check_md5
DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"] DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"]
SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json" SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json"
GENERATE_GOLDEN = False
def rescale_np(image): def rescale_np(image):
""" """
...@@ -72,11 +73,33 @@ def test_rescale_op(plot=False): ...@@ -72,11 +73,33 @@ def test_rescale_op(plot=False):
image_de_rescaled = item2["image"] image_de_rescaled = item2["image"]
image_np_rescaled = get_rescaled(num_iter) image_np_rescaled = get_rescaled(num_iter)
mse = diff_mse(image_de_rescaled, image_np_rescaled) mse = diff_mse(image_de_rescaled, image_np_rescaled)
assert mse < 0.001 # rounding error
logger.info("image_{}, mse: {}".format(num_iter + 1, mse)) logger.info("image_{}, mse: {}".format(num_iter + 1, mse))
num_iter += 1 num_iter += 1
if plot: if plot:
visualize_image(image_original, image_de_rescaled, mse, image_np_rescaled) visualize_image(image_original, image_de_rescaled, mse, image_np_rescaled)
def test_rescale_md5():
"""
Test Rescale with md5 comparison
"""
logger.info("Test Rescale with md5 comparison")
# generate dataset
data = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
decode_op = vision.Decode()
rescale_op = vision.Rescale(1.0 / 255.0, -1.0)
# apply map operations on images
data = data.map(input_columns=["image"], operations=decode_op)
data = data.map(input_columns=["image"], operations=rescale_op)
# check results with md5 comparison
filename = "rescale_01_result.npz"
save_and_check_md5(data, filename, generate_golden=GENERATE_GOLDEN)
if __name__ == "__main__": if __name__ == "__main__":
test_rescale_op(plot=True) test_rescale_op(plot=True)
test_rescale_md5()
...@@ -21,7 +21,7 @@ import mindspore.dataset.engine as de ...@@ -21,7 +21,7 @@ import mindspore.dataset.engine as de
import mindspore.dataset.transforms.vision.c_transforms as C import mindspore.dataset.transforms.vision.c_transforms as C
import mindspore.dataset.transforms.vision.py_transforms as F import mindspore.dataset.transforms.vision.py_transforms as F
from mindspore import log as logger from mindspore import log as logger
from util import visualize_list from util import visualize_list, diff_mse
DATA_DIR = "../data/dataset/testImageNetData/train/" DATA_DIR = "../data/dataset/testImageNetData/train/"
...@@ -83,7 +83,7 @@ def test_uniform_augment(plot=False, num_ops=2): ...@@ -83,7 +83,7 @@ def test_uniform_augment(plot=False, num_ops=2):
num_samples = images_original.shape[0] num_samples = images_original.shape[0]
mse = np.zeros(num_samples) mse = np.zeros(num_samples)
for i in range(num_samples): for i in range(num_samples):
mse[i] = np.mean((images_ua[i] - images_original[i]) ** 2) mse[i] = diff_mse(images_ua[i], images_original[i])
logger.info("MSE= {}".format(str(np.mean(mse)))) logger.info("MSE= {}".format(str(np.mean(mse))))
if plot: if plot:
...@@ -147,7 +147,7 @@ def test_cpp_uniform_augment(plot=False, num_ops=2): ...@@ -147,7 +147,7 @@ def test_cpp_uniform_augment(plot=False, num_ops=2):
num_samples = images_original.shape[0] num_samples = images_original.shape[0]
mse = np.zeros(num_samples) mse = np.zeros(num_samples)
for i in range(num_samples): for i in range(num_samples):
mse[i] = np.mean((images_ua[i] - images_original[i]) ** 2) mse[i] = diff_mse(images_ua[i], images_original[i])
logger.info("MSE= {}".format(str(np.mean(mse)))) logger.info("MSE= {}".format(str(np.mean(mse))))
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册