forked from mindspore-Ecosystem/mindspore
remove local defined mse and add missing mse/md5 validation
This commit is contained in:
parent
51c4f4a499
commit
5cd3136355
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -20,7 +20,7 @@ import numpy as np
|
|||
import mindspore.dataset.engine as de
|
||||
import mindspore.dataset.transforms.vision.py_transforms as F
|
||||
from mindspore import log as logger
|
||||
from util import visualize_list
|
||||
from util import visualize_list, diff_mse
|
||||
|
||||
DATA_DIR = "../data/dataset/testImageNetData/train/"
|
||||
|
||||
|
@ -75,7 +75,7 @@ def test_auto_contrast(plot=False):
|
|||
num_samples = images_original.shape[0]
|
||||
mse = np.zeros(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))))
|
||||
|
||||
if plot:
|
||||
|
|
|
@ -21,11 +21,13 @@ import mindspore.dataset as ds
|
|||
import mindspore.dataset.transforms.vision.c_transforms as c
|
||||
import mindspore.dataset.transforms.vision.py_transforms as f
|
||||
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"]
|
||||
SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json"
|
||||
|
||||
GENERATE_GOLDEN = False
|
||||
|
||||
def test_cut_out_op(plot=False):
|
||||
"""
|
||||
|
@ -34,7 +36,7 @@ def test_cut_out_op(plot=False):
|
|||
logger.info("test_cut_out")
|
||||
|
||||
# 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 = [
|
||||
f.Decode(),
|
||||
|
@ -45,7 +47,7 @@ def test_cut_out_op(plot=False):
|
|||
data1 = data1.map(input_columns=["image"], operations=transform_1())
|
||||
|
||||
# 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()
|
||||
cut_out_op = c.CutOut(80)
|
||||
|
||||
|
@ -74,25 +76,24 @@ def test_cut_out_op(plot=False):
|
|||
visualize_image(image_1, image_2, mse)
|
||||
|
||||
|
||||
def test_cut_out_op_multicut():
|
||||
def test_cut_out_op_multicut(plot=False):
|
||||
"""
|
||||
Test Cutout
|
||||
"""
|
||||
logger.info("test_cut_out")
|
||||
|
||||
# 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 = [
|
||||
f.Decode(),
|
||||
f.ToTensor(),
|
||||
f.RandomErasing(value='random')
|
||||
]
|
||||
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"])
|
||||
data2 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
|
||||
decode_op = c.Decode()
|
||||
cut_out_op = c.CutOut(80, num_patches=10)
|
||||
|
||||
|
@ -104,19 +105,107 @@ def test_cut_out_op_multicut():
|
|||
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()):
|
||||
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()):
|
||||
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, visualize_mode=2)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
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
|
|||
import mindspore.dataset.engine as de
|
||||
import mindspore.dataset.transforms.vision.py_transforms as F
|
||||
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/"
|
||||
|
||||
GENERATE_GOLDEN = False
|
||||
|
||||
def test_equalize(plot=False):
|
||||
"""
|
||||
|
@ -75,12 +76,31 @@ def test_equalize(plot=False):
|
|||
num_samples = images_original.shape[0]
|
||||
mse = np.zeros(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))))
|
||||
|
||||
if plot:
|
||||
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__":
|
||||
test_equalize(plot=True)
|
||||
test_equalize_md5()
|
||||
|
|
|
@ -20,11 +20,12 @@ import numpy as np
|
|||
import mindspore.dataset as ds
|
||||
import mindspore.dataset.transforms.vision.py_transforms as vision
|
||||
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"]
|
||||
SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json"
|
||||
|
||||
GENERATE_GOLDEN = False
|
||||
|
||||
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_2: {}".format(image_2.dtype))
|
||||
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.
|
||||
assert len(image_2.shape) == 4
|
||||
|
@ -93,6 +94,27 @@ def test_five_crop_error_msg():
|
|||
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__":
|
||||
test_five_crop_op(plot=True)
|
||||
test_five_crop_error_msg()
|
||||
test_five_crop_md5()
|
||||
|
|
|
@ -20,10 +20,11 @@ import numpy as np
|
|||
import mindspore.dataset.engine as de
|
||||
import mindspore.dataset.transforms.vision.py_transforms as F
|
||||
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/"
|
||||
|
||||
GENERATE_GOLDEN = False
|
||||
|
||||
def test_invert(plot=False):
|
||||
"""
|
||||
|
@ -82,5 +83,25 @@ def test_invert(plot=False):
|
|||
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__":
|
||||
test_invert(plot=True)
|
||||
test_invert_md5()
|
||||
|
|
|
@ -73,12 +73,12 @@ def test_linear_transformation_op(plot=False):
|
|||
if plot:
|
||||
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)
|
||||
Expected to pass
|
||||
"""
|
||||
logger.info("test_linear_transformation_md5_01")
|
||||
logger.info("test_linear_transformation_md5")
|
||||
|
||||
# Initialize parameters
|
||||
height = 50
|
||||
|
@ -102,12 +102,12 @@ def test_linear_transformation_md5_01():
|
|||
filename = "linear_transformation_01_result.npz"
|
||||
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
|
||||
Expected to raise ValueError
|
||||
"""
|
||||
logger.info("test_linear_transformation_md5_02")
|
||||
logger.info("test_linear_transformation_exception_01")
|
||||
|
||||
# Initialize parameters
|
||||
height = 50
|
||||
|
@ -130,12 +130,12 @@ def test_linear_transformation_md5_02():
|
|||
logger.info("Got an exception in DE: {}".format(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
|
||||
Expected to raise ValueError
|
||||
"""
|
||||
logger.info("test_linear_transformation_md5_03")
|
||||
logger.info("test_linear_transformation_exception_02")
|
||||
|
||||
# Initialize parameters
|
||||
height = 50
|
||||
|
@ -158,12 +158,12 @@ def test_linear_transformation_md5_03():
|
|||
logger.info("Got an exception in DE: {}".format(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
|
||||
Expected to raise ValueError
|
||||
"""
|
||||
logger.info("test_linear_transformation_md5_04")
|
||||
logger.info("test_linear_transformation_exception_03")
|
||||
|
||||
# Initialize parameters
|
||||
height = 50
|
||||
|
@ -187,12 +187,12 @@ def test_linear_transformation_md5_04():
|
|||
logger.info("Got an exception in DE: {}".format(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
|
||||
Expected to raise ValueError
|
||||
"""
|
||||
logger.info("test_linear_transformation_md5_05")
|
||||
logger.info("test_linear_transformation_exception_04")
|
||||
|
||||
# Initialize parameters
|
||||
height = 50
|
||||
|
@ -217,9 +217,9 @@ def test_linear_transformation_md5_05():
|
|||
assert "should match" in str(e)
|
||||
|
||||
if __name__ == '__main__':
|
||||
test_linear_transformation_op(True)
|
||||
test_linear_transformation_md5_01()
|
||||
test_linear_transformation_md5_02()
|
||||
test_linear_transformation_md5_03()
|
||||
test_linear_transformation_md5_04()
|
||||
test_linear_transformation_md5_05()
|
||||
test_linear_transformation_op(plot=True)
|
||||
test_linear_transformation_md5()
|
||||
test_linear_transformation_exception_01()
|
||||
test_linear_transformation_exception_02()
|
||||
test_linear_transformation_exception_03()
|
||||
test_linear_transformation_exception_04()
|
||||
|
|
|
@ -21,11 +21,12 @@ import mindspore.dataset as ds
|
|||
import mindspore.dataset.transforms.vision.c_transforms as c_vision
|
||||
import mindspore.dataset.transforms.vision.py_transforms as py_vision
|
||||
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"]
|
||||
SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json"
|
||||
|
||||
GENERATE_GOLDEN = False
|
||||
|
||||
def test_pad_op():
|
||||
"""
|
||||
|
@ -116,6 +117,39 @@ def test_pad_grayscale():
|
|||
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__":
|
||||
test_pad_op()
|
||||
test_pad_grayscale()
|
||||
test_pad_md5()
|
||||
|
|
|
@ -17,13 +17,16 @@ Testing RandomColor op in DE
|
|||
"""
|
||||
import numpy as np
|
||||
|
||||
import mindspore.dataset as ds
|
||||
import mindspore.dataset.engine as de
|
||||
import mindspore.dataset.transforms.vision.py_transforms as F
|
||||
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/"
|
||||
|
||||
GENERATE_GOLDEN = 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):
|
|||
logger.info("Test RandomColor")
|
||||
|
||||
# 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(),
|
||||
F.Resize((224, 224)),
|
||||
F.ToTensor()])
|
||||
|
||||
ds_original = ds.map(input_columns="image",
|
||||
operations=transforms_original())
|
||||
ds_original = data.map(input_columns="image",
|
||||
operations=transforms_original())
|
||||
|
||||
ds_original = ds_original.batch(512)
|
||||
|
||||
|
@ -52,15 +55,15 @@ def test_random_color(degrees=(0.1, 1.9), plot=False):
|
|||
axis=0)
|
||||
|
||||
# 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(),
|
||||
F.Resize((224, 224)),
|
||||
F.RandomColor(degrees=degrees),
|
||||
F.ToTensor()])
|
||||
|
||||
ds_random_color = ds.map(input_columns="image",
|
||||
operations=transforms_random_color())
|
||||
ds_random_color = data.map(input_columns="image",
|
||||
operations=transforms_random_color())
|
||||
|
||||
ds_random_color = ds_random_color.batch(512)
|
||||
|
||||
|
@ -75,14 +78,40 @@ def test_random_color(degrees=(0.1, 1.9), plot=False):
|
|||
num_samples = images_original.shape[0]
|
||||
mse = np.zeros(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))))
|
||||
|
||||
if plot:
|
||||
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__":
|
||||
test_random_color()
|
||||
test_random_color(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
|
|||
import mindspore.dataset.transforms.vision.c_transforms as c_vision
|
||||
import mindspore.dataset.transforms.vision.py_transforms as py_vision
|
||||
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"]
|
||||
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)):
|
||||
"""
|
||||
|
@ -188,6 +190,41 @@ def test_random_color_adjust_op_hue_error():
|
|||
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__":
|
||||
test_random_color_adjust_op_brightness(plot=True)
|
||||
test_random_color_adjust_op_brightness_error()
|
||||
|
@ -197,3 +234,4 @@ if __name__ == "__main__":
|
|||
test_random_color_adjust_op_saturation_error()
|
||||
test_random_color_adjust_op_hue(plot=True)
|
||||
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):
|
|||
py_image = (item2["image"].transpose(1, 2, 0) * 255).astype(np.uint8)
|
||||
image_c_cropped.append(c_image)
|
||||
image_py_cropped.append(py_image)
|
||||
mse = diff_mse(c_image, py_image)
|
||||
assert mse < 0.02 # rounding error
|
||||
if plot:
|
||||
visualize_list(image_c_cropped, image_py_cropped, visualize_mode=2)
|
||||
|
||||
|
|
|
@ -15,16 +15,16 @@
|
|||
"""
|
||||
Testing RandomCropDecodeResize op in DE
|
||||
"""
|
||||
import cv2
|
||||
|
||||
import mindspore.dataset as ds
|
||||
import mindspore.dataset.transforms.vision.c_transforms as vision
|
||||
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"]
|
||||
SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json"
|
||||
|
||||
GENERATE_GOLDEN = False
|
||||
|
||||
def test_random_crop_decode_resize_op(plot=False):
|
||||
"""
|
||||
|
@ -40,22 +40,46 @@ def test_random_crop_decode_resize_op(plot=False):
|
|||
|
||||
# Second dataset
|
||||
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=random_crop_resize_op)
|
||||
|
||||
|
||||
num_iter = 0
|
||||
for item1, item2 in zip(data1.create_dict_iterator(), data2.create_dict_iterator()):
|
||||
|
||||
if num_iter > 0:
|
||||
break
|
||||
crop_and_resize_de = item1["image"]
|
||||
original = item2["image"]
|
||||
crop_and_resize_cv = cv2.resize(original, (512, 256))
|
||||
mse = diff_mse(crop_and_resize_de, crop_and_resize_cv)
|
||||
image1 = item1["image"]
|
||||
image2 = item2["image"]
|
||||
mse = diff_mse(image1, image2)
|
||||
assert mse == 0
|
||||
logger.info("random_crop_decode_resize_op_{}, mse: {}".format(num_iter + 1, mse))
|
||||
if plot:
|
||||
visualize_image(original, crop_and_resize_de, mse, crop_and_resize_cv)
|
||||
visualize_image(image1, image2, mse)
|
||||
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__":
|
||||
test_random_crop_decode_resize_op(plot=True)
|
||||
test_random_crop_decode_resize_md5()
|
||||
|
|
|
@ -20,11 +20,13 @@ import numpy as np
|
|||
import mindspore.dataset as ds
|
||||
import mindspore.dataset.transforms.vision.py_transforms as vision
|
||||
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"]
|
||||
SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json"
|
||||
|
||||
GENERATE_GOLDEN = False
|
||||
|
||||
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)
|
||||
|
||||
|
||||
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__":
|
||||
test_random_erasing_op(plot=True)
|
||||
test_random_erasing_md5()
|
||||
|
|
|
@ -49,7 +49,7 @@ def test_random_horizontal_op(plot=False):
|
|||
# First dataset
|
||||
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
|
||||
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=random_horizontal_op)
|
||||
|
||||
|
@ -69,6 +69,7 @@ def test_random_horizontal_op(plot=False):
|
|||
image_h_flipped_2 = h_flip(image)
|
||||
|
||||
mse = diff_mse(image_h_flipped, image_h_flipped_2)
|
||||
assert mse == 0
|
||||
logger.info("image_{}, mse: {}".format(num_iter + 1, mse))
|
||||
num_iter += 1
|
||||
if plot:
|
||||
|
|
|
@ -13,16 +13,18 @@
|
|||
# limitations under the License.
|
||||
# ==============================================================================
|
||||
"""
|
||||
Testing the resize op in DE
|
||||
Testing RandomResize op in DE
|
||||
"""
|
||||
import mindspore.dataset as ds
|
||||
import mindspore.dataset.transforms.vision.c_transforms as vision
|
||||
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"]
|
||||
SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json"
|
||||
|
||||
GENERATE_GOLDEN = False
|
||||
|
||||
def test_random_resize_op(plot=False):
|
||||
"""
|
||||
|
@ -52,5 +54,29 @@ def test_random_resize_op(plot=False):
|
|||
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__":
|
||||
test_random_resize_op(plot=True)
|
||||
test_random_resize_md5()
|
||||
|
|
|
@ -21,18 +21,21 @@ import cv2
|
|||
import mindspore.dataset as ds
|
||||
import mindspore.dataset.transforms.vision.c_transforms as c_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 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"]
|
||||
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
|
||||
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, shuffle=False)
|
||||
|
@ -58,8 +61,44 @@ def test_random_rotation_op(plot=False):
|
|||
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)
|
||||
if plot:
|
||||
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():
|
||||
|
@ -71,7 +110,7 @@ def test_random_rotation_expand():
|
|||
# First dataset
|
||||
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
|
||||
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)
|
||||
data1 = data1.map(input_columns=["image"], operations=decode_op)
|
||||
data1 = data1.map(input_columns=["image"], operations=random_rotation_op)
|
||||
|
@ -83,9 +122,50 @@ def test_random_rotation_expand():
|
|||
num_iter += 1
|
||||
|
||||
|
||||
def test_rotation_diff():
|
||||
def test_random_rotation_md5():
|
||||
"""
|
||||
Test Rotation op
|
||||
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 RandomRotation op
|
||||
"""
|
||||
logger.info("test_random_rotation_op")
|
||||
|
||||
|
@ -93,7 +173,7 @@ def test_rotation_diff():
|
|||
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
|
||||
decode_op = c_vision.Decode()
|
||||
|
||||
rotation_op = c_vision.RandomRotation((45, 45), expand=True)
|
||||
rotation_op = c_vision.RandomRotation((45, 45))
|
||||
ctrans = [decode_op,
|
||||
rotation_op
|
||||
]
|
||||
|
@ -103,7 +183,7 @@ def test_rotation_diff():
|
|||
# Second dataset
|
||||
transforms = [
|
||||
py_vision.Decode(),
|
||||
py_vision.RandomRotation((45, 45), expand=True),
|
||||
py_vision.RandomRotation((45, 45)),
|
||||
py_vision.ToTensor(),
|
||||
]
|
||||
transform = py_vision.ComposeOp(transforms)
|
||||
|
@ -111,10 +191,13 @@ def test_rotation_diff():
|
|||
data2 = data2.map(input_columns=["image"], operations=transform())
|
||||
|
||||
num_iter = 0
|
||||
image_list_c, image_list_py = [], []
|
||||
for item1, item2 in zip(data1.create_dict_iterator(), data2.create_dict_iterator()):
|
||||
num_iter += 1
|
||||
c_image = item1["image"]
|
||||
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 py_image: {}".format(py_image.shape))
|
||||
|
@ -122,8 +205,15 @@ def test_rotation_diff():
|
|||
logger.info("dtype of c_image: {}".format(c_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__":
|
||||
test_random_rotation_op(True)
|
||||
test_random_rotation_op_c(plot=True)
|
||||
test_random_rotation_op_py(plot=True)
|
||||
test_random_rotation_expand()
|
||||
test_rotation_diff()
|
||||
test_random_rotation_md5()
|
||||
test_rotation_diff(plot=True)
|
||||
|
|
|
@ -16,14 +16,17 @@
|
|||
Testing RandomSharpness op in DE
|
||||
"""
|
||||
import numpy as np
|
||||
|
||||
import mindspore.dataset as ds
|
||||
import mindspore.dataset.engine as de
|
||||
import mindspore.dataset.transforms.vision.py_transforms as F
|
||||
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/"
|
||||
|
||||
GENERATE_GOLDEN = 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):
|
|||
logger.info("Test RandomSharpness")
|
||||
|
||||
# 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(),
|
||||
F.Resize((224, 224)),
|
||||
F.ToTensor()])
|
||||
|
||||
ds_original = ds.map(input_columns="image",
|
||||
operations=transforms_original())
|
||||
ds_original = data.map(input_columns="image",
|
||||
operations=transforms_original())
|
||||
|
||||
ds_original = ds_original.batch(512)
|
||||
|
||||
|
@ -52,15 +55,15 @@ def test_random_sharpness(degrees=(0.1, 1.9), plot=False):
|
|||
axis=0)
|
||||
|
||||
# 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(),
|
||||
F.Resize((224, 224)),
|
||||
F.RandomSharpness(degrees=degrees),
|
||||
F.ToTensor()])
|
||||
|
||||
ds_random_sharpness = ds.map(input_columns="image",
|
||||
operations=transforms_random_sharpness())
|
||||
ds_random_sharpness = data.map(input_columns="image",
|
||||
operations=transforms_random_sharpness())
|
||||
|
||||
ds_random_sharpness = ds_random_sharpness.batch(512)
|
||||
|
||||
|
@ -75,14 +78,45 @@ def test_random_sharpness(degrees=(0.1, 1.9), plot=False):
|
|||
num_samples = images_original.shape[0]
|
||||
mse = np.zeros(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))))
|
||||
|
||||
if plot:
|
||||
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__":
|
||||
test_random_sharpness()
|
||||
test_random_sharpness(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):
|
|||
# First dataset
|
||||
data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
|
||||
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=random_vertical_op)
|
||||
|
||||
|
@ -65,12 +65,11 @@ def test_random_vertical_op(plot=False):
|
|||
break
|
||||
|
||||
image_v_flipped = item1["image"]
|
||||
|
||||
image = item2["image"]
|
||||
image_v_flipped_2 = v_flip(image)
|
||||
|
||||
diff = image_v_flipped - image_v_flipped_2
|
||||
mse = np.sum(np.power(diff, 2))
|
||||
mse = diff_mse(image_v_flipped, image_v_flipped_2)
|
||||
assert mse == 0
|
||||
logger.info("image_{}, mse: {}".format(num_iter + 1, mse))
|
||||
num_iter += 1
|
||||
if plot:
|
||||
|
|
|
@ -18,11 +18,12 @@ Testing the rescale op in DE
|
|||
import mindspore.dataset as ds
|
||||
import mindspore.dataset.transforms.vision.c_transforms as vision
|
||||
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"]
|
||||
SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json"
|
||||
|
||||
GENERATE_GOLDEN = False
|
||||
|
||||
def rescale_np(image):
|
||||
"""
|
||||
|
@ -72,11 +73,33 @@ def test_rescale_op(plot=False):
|
|||
image_de_rescaled = item2["image"]
|
||||
image_np_rescaled = get_rescaled(num_iter)
|
||||
mse = diff_mse(image_de_rescaled, image_np_rescaled)
|
||||
assert mse < 0.001 # rounding error
|
||||
logger.info("image_{}, mse: {}".format(num_iter + 1, mse))
|
||||
num_iter += 1
|
||||
if plot:
|
||||
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__":
|
||||
test_rescale_op(plot=True)
|
||||
test_rescale_md5()
|
||||
|
|
|
@ -21,7 +21,7 @@ import mindspore.dataset.engine as de
|
|||
import mindspore.dataset.transforms.vision.c_transforms as C
|
||||
import mindspore.dataset.transforms.vision.py_transforms as F
|
||||
from mindspore import log as logger
|
||||
from util import visualize_list
|
||||
from util import visualize_list, diff_mse
|
||||
|
||||
DATA_DIR = "../data/dataset/testImageNetData/train/"
|
||||
|
||||
|
@ -83,7 +83,7 @@ def test_uniform_augment(plot=False, num_ops=2):
|
|||
num_samples = images_original.shape[0]
|
||||
mse = np.zeros(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))))
|
||||
|
||||
if plot:
|
||||
|
@ -147,7 +147,7 @@ def test_cpp_uniform_augment(plot=False, num_ops=2):
|
|||
num_samples = images_original.shape[0]
|
||||
mse = np.zeros(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))))
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue