数据集处理结果精细对比

数据集处理结果可视化

一般情况下,原始数据集会经过一系列数据增强操作,最终转换为网络的输入。如果数据增强操作有问题,可能会导致精度对不齐。
此时,我们可以将经过数据增强后的数据转换为可视化的数据,比如cv网络,可以转换成图片,并将label标记在图片上,观察增强后的数据是否合理,大致判断数据处理过程是否存在问题。

如果数据处理过程中不存在随机因素,可以使用如下步骤进行精细对比:

数据集处理结果精细对比

1、MindSpore和对标网络都可使用TroubleShooter工具,将数据处理结果保存为npy文件。
示例代码:

import troubleshooter as ts
import mindspore as ms
from mindspore import nn, Tensor

class NetWorkSave(nn.Cell):
    def __init__(self, file):
        super(NetWorkSave, self).__init__()
        self.file = file

    def construct(self, x):
        ts.save(self.file, x)
        return x

x1 = Tensor(-0.5962, ms.float32)
net = NetWorkSave('/tmp/ms/ms_tensor')
net(x1)
# x1被保存至/tmp/ms/0_ms_tensor.npy

2、使用TroubleShooter工具来对比两个npy文件的相似度。
示例代码:

import troubleshooter as ts
ts.migrator.compare_npy_dir("/tmp/ms", "/tmp/pt")

对比结果示例如下,可以判断出两个npy文件是否存在差异及差异程度:
2023-06-14 17:24:22,224 - troubleshooter.log - WARNING - [UserAttention] The compare directoryinformation:
The orig dir: /tmp/taz8urno7v
The target dir: /tmp/tb28qtt0vk

The list of comparison results
| orig array name | target arrayname | results of comparison | match ratio | cosine similarity | (mean, mах)
data_0.npy data_0.npy True 100.00% 1.00000 0.00000, е.00000
data_1.npy data_1.npy Shape is inconsistent 0.00% nan nan, nan

工具介绍详细可见:
TroubleShooter应用场景3保存tensor
TroubleShooter应用场景4之比较两组tensor值(npy文件)是否相等

| 数据集对比项 | 详细说明 |
| ----- | ----- |
| 使用的数据集是否和对标网络一致 |  |
| 数据归一化或标准化参数是否对齐 | 归一化或标准化常见的操作方法包括Resize、Rescale、Normalize等 |
| 数据集混洗开启逻辑是否对齐 | shuffle操作可以打乱数据顺序,有助于避免过拟合。 |
| 数据集增强方式是否对齐对标;数据集增强方式的参数值是否和对标网络一致 | 增强方式一般有RandomCrop,RandomHorizontalFlip 注:推理数据集一般不需要随机操作 |

具体可参考:常见数据处理算法问题