Mxnet (31): 使用图像增强训练CIFAR-10数据集

本文介绍了如何使用Mxnet进行图像增强,包括翻转、剪切、改变颜色等技术,以增强CIFAR-10数据集,提高模型的泛化能力。通过RandomFlip、RandomResizedCrop、RandomBrightness、RandomHue等方法,结合Compose实现多种增强方式的叠加使用,并展示了在训练模型时应用这些增强策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图像增强技术通过对训练图像进行一系列随机更改以生成相似但不同的训练示例来扩展训练数据集的规模。并且随机更改一些示例可以有效的减小模型对某些属性的依赖,提高模型的泛化能力:

  • 通过不同的方式裁剪图像,可以使刚兴趣的对象出现在不同位置,减小模型对位置的依赖
  • 通过对图片颜色的调节,降低模型对颜色的敏感度。
from d2l import mxnet as d2l
from mxnet import autograd, init, np, npx, gluon, image
from mxnet.gluon import nn
from plotly import express as px, graph_objs as go
from IPython.display import Image
import plotly.io as pio
pio.kaleido.scope.default_format = "svg"
npx.set_np()

使用形状为400×500的猫咪图片作为例子。

img = image.imread('img/cat1.jpg')
fig = px.imshow(img.asnumpy())
img_bytes = fig.to_image(format="png", engine="kaleido")
Image(img_bytes)

在这里插入图片描述

多数图像增强的方法具有一定的随机性,编写一个方法用于展示,一个功能对图片处理多次的变化情况

from plotly.subplots import make_subplots

def show_imgs(imgs, num_rows=2, num_cols=4, scale=0.8) :
    fig = make_subplots(num_rows, num_cols)
    for i in range(num_rows):
        for j in range(num_cols):
            fig.add_trace(go.Image(z=imgs[num_cols*i+j].asnumpy()),i+1,j+1)
            fig.update_xaxes(visible=False, row=i+1, col=j+1)
            fig.update_yaxes(visible=False, row=i+1, col=j+1)
    img_bytes = fig.to_image(format="png", scale=scale, engine="kaleido")
    return Image(img_bytes)


def apply(img, aug, num_rows=2, num_cols=4, scale=0.8) :
    Y = [aug(img) for _ in range(num_rows * num_cols)]
    return show_imgs(Y, num_rows, num_cols, scale=scale)

1. 翻转和剪切

左右翻转图像通常不会更改对象的类别。这是最早且使用最广泛的图像增强方法之一。通过transforms模块的RandomFlipLeftRight方法以50%的概率将图片左右翻转。

apply(img, gluon.data.vision.transforms.RandomFlipLeftRight()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值