• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2020 Huawei Technologies Co., Ltd
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14# ==============================================================================
15"""
16Testing soft dvpp SoftDvppDecodeResizeJpeg and SoftDvppDecodeRandomCropResizeJpeg in DE
17"""
18import mindspore.dataset as ds
19import mindspore.dataset.vision.c_transforms as vision
20from mindspore import log as logger
21from util import diff_mse, visualize_image
22
23DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"]
24SCHEMA_DIR = "../data/dataset/test_tf_file_3_images/datasetSchema.json"
25
26
27def test_soft_dvpp_decode_resize_jpeg(plot=False):
28    """
29    Test SoftDvppDecodeResizeJpeg op
30    """
31    logger.info("test_random_decode_resize_op")
32
33    # First dataset
34    data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
35    decode_op = vision.Decode()
36    resize_op = vision.Resize((256, 512))
37    data1 = data1.map(operations=[decode_op, resize_op], input_columns=["image"])
38
39    # Second dataset
40    data2 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
41    soft_dvpp_decode_resize_op = vision.SoftDvppDecodeResizeJpeg((256, 512))
42    data2 = data2.map(operations=soft_dvpp_decode_resize_op, input_columns=["image"])
43
44    num_iter = 0
45    for item1, item2 in zip(data1.create_dict_iterator(num_epochs=1, output_numpy=True),
46                            data2.create_dict_iterator(num_epochs=1, output_numpy=True)):
47        if num_iter > 0:
48            break
49        image1 = item1["image"]
50        image2 = item2["image"]
51        mse = diff_mse(image1, image2)
52        assert mse <= 0.02
53        logger.info("random_crop_decode_resize_op_{}, mse: {}".format(num_iter + 1, mse))
54        if plot:
55            visualize_image(image1, image2, mse)
56        num_iter += 1
57
58
59def test_soft_dvpp_decode_random_crop_resize_jpeg(plot=False):
60    """
61    Test SoftDvppDecodeRandomCropResizeJpeg op
62    """
63    logger.info("test_random_decode_resize_op")
64
65    # First dataset
66    data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
67    random_crop_decode_resize_op = vision.RandomCropDecodeResize((256, 512), (1, 1), (0.5, 0.5))
68    data1 = data1.map(operations=random_crop_decode_resize_op, input_columns=["image"])
69
70    # Second dataset
71    data2 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
72    soft_dvpp_random_crop_decode_resize_op = vision.SoftDvppDecodeRandomCropResizeJpeg((256, 512), (1, 1), (0.5, 0.5))
73    data2 = data2.map(operations=soft_dvpp_random_crop_decode_resize_op, input_columns=["image"])
74
75    num_iter = 0
76    for item1, item2 in zip(data1.create_dict_iterator(num_epochs=1, output_numpy=True),
77                            data2.create_dict_iterator(num_epochs=1, output_numpy=True)):
78        if num_iter > 0:
79            break
80        image1 = item1["image"]
81        image2 = item2["image"]
82        mse = diff_mse(image1, image2)
83        assert mse <= 0.06
84        logger.info("random_crop_decode_resize_op_{}, mse: {}".format(num_iter + 1, mse))
85        if plot:
86            visualize_image(image1, image2, mse)
87        num_iter += 1
88
89
90def test_soft_dvpp_decode_resize_jpeg_supplement(plot=False):
91    """
92    Test SoftDvppDecodeResizeJpeg op
93    """
94    logger.info("test_random_decode_resize_op")
95
96    # First dataset
97    data1 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
98    decode_op = vision.Decode()
99    resize_op = vision.Resize(1134)
100    data1 = data1.map(operations=[decode_op, resize_op], input_columns=["image"])
101
102    # Second dataset
103    data2 = ds.TFRecordDataset(DATA_DIR, SCHEMA_DIR, columns_list=["image"], shuffle=False)
104    soft_dvpp_decode_resize_op = vision.SoftDvppDecodeResizeJpeg(1134)
105    data2 = data2.map(operations=soft_dvpp_decode_resize_op, input_columns=["image"])
106
107    num_iter = 0
108    for item1, item2 in zip(data1.create_dict_iterator(num_epochs=1, output_numpy=True),
109                            data2.create_dict_iterator(num_epochs=1, output_numpy=True)):
110        if num_iter > 0:
111            break
112        image1 = item1["image"]
113        image2 = item2["image"]
114        mse = diff_mse(image1, image2)
115        assert mse <= 0.02
116        logger.info("random_crop_decode_resize_op_{}, mse: {}".format(num_iter + 1, mse))
117        if plot:
118            visualize_image(image1, image2, mse)
119        num_iter += 1
120
121
122if __name__ == "__main__":
123    test_soft_dvpp_decode_resize_jpeg(plot=True)
124    test_soft_dvpp_decode_random_crop_resize_jpeg(plot=True)
125    test_soft_dvpp_decode_resize_jpeg_supplement(plot=True)
126