实现图片多标签分类, 比如: 一张图的标签为‘猫’和‘狗’;

【操作步骤&问题现象】

1、如何构建训练集

2、模型样例

如果你的图片是jpg格式的或者jpeg格式的,将训练用的猫图片和狗图片分成两个文件夹0和1存放。

比如:放在/home/train/0/ 放小猫图片。 /home/train/1/放小狗图片。

下面的代码你直接调用create_dataset("/home/train/")就可以转换成训练用的数据了。

import mindspore.dataset as ds

import mindspore.common.dtype as mstype

import mindspore.dataset.vision.c_transforms as C

import mindspore.dataset.transforms.c_transforms as C2



def create_dataset(datasets_path):



    ds1 = ds.ImageFolderDataset(datasets_path, num_parallel_workers=8, extensions=[".jpg", ".JPEG"])

    batch_size = 32

    image_size = 32

    mean = [0.485 * 32, 0.456 * 32, 0.406 * 32]

    std = [0.229 * 32, 0.224 * 32, 0.225 * 32]

    trans = [

                # 图片拉伸,缩放等操作,自己按照需要操作

                C.RandomCropDecodeResize(image_size, scale=(0.08, 1.0), ratio=(0.75, 1.333)),

                # 随机裁剪图片,这里的0.5表示图片视野的一半

                C.RandomHorizontalFlip(prob=0.5),

                # 归一化标准化,数值需按照自己的图片实际情况设置

                C.Normalize(mean=mean, std=std),

                # 通道转换

                C.HWC2CHW()

    ]

    type_cast_op = C2.TypeCast(mstype.int32)

    ds1 = ds1.map(input_columns="image", num_parallel_workers=8, operations=trans)

    ds1 = ds1.map(input_columns="label", num_parallel_workers=8, operations=type_cast_op)

    # shuffle混洗操作必须的

    ds1 = ds1.shuffle(buffer_size=100)

    # batch操作看内存大小,自己随意设置

    ds1 = ds1.batch(batch_size, drop_remainder=True)

    # repeat操作数据重复几倍,数字按照自己需要填

    ds1 = ds1.repeat(5)

    

    return ds1

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐