测试数据增强_预测模型最佳cutoff值

测试数据增强_预测模型最佳cutoff值cutout是2017年提出的一种数据增强方法,想法比较简单,即在训练时随机裁剪掉图像的一部分,也可以看作是一种类似dropout的正则化方法。ImprovedRegularizationofConvolutionalNeuralNetworkswithCutoutpaper:https://arxiv.org/pdf/1708.04552.pdfcode:https://github.com/uoguelph-mlrg/Cutoutcutout采用的操作是随机裁剪掉图像中..

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

cutout是2017年提出的一种数据增强方法,想法比较简单,即在训练时随机裁剪掉图像的一部分,也可以看作是一种类似dropout的正则化方法。

Improved Regularization of Convolutional Neural Networks with Cutout

paper: https://arxiv.org/pdf/1708.04552.pdf

code: https://github.com/uoguelph-mlrg/Cutout


cutout采用的操作是随机裁剪掉图像中的一块正方形区域,并在原图中补0。由于作者在cutout早期版本中使用了不规则大小区域的方式,但是对比发现,固定大小区域能达到同等的效果,因此就没必要这么麻烦去生成不规则区域了。

实现代码比较简单,cutout.py,如下:

import torch
import numpy as np


class Cutout(object):
    """Randomly mask out one or more patches from an image.

    Args:
        n_holes (int): Number of patches to cut out of each image.
        length (int): The length (in pixels) of each square patch.
    """
    def __init__(self, n_holes=1, length=16):
        self.n_holes = n_holes
        self.length = length

    def __call__(self, img):
        """
        Args:
            img (Tensor): Tensor image of size (C, H, W).
        Returns:
            Tensor: Image with n_holes of dimension length x length cut out of it.
        """
        h = img.size(1)
        w = img.size(2)

        mask = np.ones((h, w), np.float32)

        for n in range(self.n_holes):
            y = np.random.randint(h)
            x = np.random.randint(w)

            y1 = np.clip(y - self.length // 2, 0, h)
            y2 = np.clip(y + self.length // 2, 0, h)
            x1 = np.clip(x - self.length // 2, 0, w)
            x2 = np.clip(x + self.length // 2, 0, w)

            mask[y1: y2, x1: x2] = 0.

        mask = torch.from_numpy(mask)
        mask = mask.expand_as(img)
        img = img * mask

        return img

上面代码中有两个参数,具体如下:

n_holes:表示裁剪掉的图像块的数目,默认都是设置为1;

length:每个正方形块的边长,作者经过多轮尝试后,不同数据集最优设置不同,CIFAR10为16,CIFAR100为8,SVHN为20;# 这里觉得挺麻烦的,cutout调参很重要

看看在图像上cutout是什么效果,代码如下:

import cv2
from torchvision import transforms
from cutout import Cutout

# 执行cutout
img = cv2.imread('cat.png')
img = transforms.ToTensor()(img)
cut = Cutout(length=100)
img = cut(img)

# cutout图像写入本地
img = img.mul(255).byte()
img = img.numpy().transpose((1, 2, 0))
cv2.imwrite('cutout.png', img)

由于原图比较大,这里把正方形边长调到了100,效果如下:

测试数据增强_预测模型最佳cutoff值


实际训练看看效果到底怎么样,为了保证公平,训练时参数统一,且每种模型训练了8次以减少随机性,结果见下表。

Method CIFAR-10 CIFAR-100
ResNet-50 96.76/96.82/96.81/96.79
96.72/96.69/96.60/96.82
(96.75)
83.80/83.66/84.19/83.26
83.89/83.90/83.57/83.69
(83.74)
ResNet-50+cutout 96.73/96.58/96.78/96.65
96.65/96.58/96.77/96.65
(96.67)
83.63/83.78/83.80/83.49
83.92/83.57/83.71/83.60
(83.69)

从实验结果来看,在CIFAR10和CIFAR100这两个数据集上使用cutout,训练出来的模型精度都会掉一点。看来cutout涨点并没有那么容易,和调参、模型深度、数据集都有很大的关系。


数据增强实测之Random Erasing_一个菜鸟的奋斗-CSDN博客

数据增强实测之mixup_一个菜鸟的奋斗-CSDN博客

数据增强实测之RICAP_一个菜鸟的奋斗-CSDN博客

数据增强实测之GridMask_一个菜鸟的奋斗-CSDN博客

数据增强实测之Hide-and-Seek_一个菜鸟的奋斗-CSDN博客

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189662.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月11日 上午11:15
下一篇 2026年3月11日 上午11:43


相关推荐

  • 如何利用matlab做BP神经网络分析(包括利用matlab神经网络工具箱)「建议收藏」

    利用MATLAB进行BP神经网络的预测(含有神经网络工具箱)最近一段时间在研究如何利用预测其销量个数,在网上搜索了一下,发现了很多模型来预测,比如利用回归模型、时间序列模型,GM(1,1)模型,可是自己在结合实际的工作内容,发现这几种模型预测的精度不是很高,于是再在网上进行搜索,发现神经网络模型可以来预测,并且有很多是结合时间序列或者SVM(支持向量机)等组合模型来进…

    2022年4月11日
    66
  • DDL和DML的含义

    DDL表示DataDefinitionLanguage数据定义语言,主要包括CREATE,ALTER,DROP;隐性提交的,不能rollback。DML表示DataManipulationLanguage数据操作语言,主要的DML有SELECT,INSERT,UPDATE,DELETE;可以手动控制事务的开启、提交和回滚的。…

    2022年4月6日
    59
  • snat dnat 回环

    snat dnat 回环其实所谓的 snat dnat 就是对数据包的源地址和目的地址进行修改 并且保存修改前后的映射关系 并且根据需要进行还原操作 snat 出去的时候改变原地址 snat 回来的时候改变目的地址 un snat dnat 进来的时候改变目的地址 dnat 出去的时候改变源地址 un dnat 而所谓的回环 其实同时用到了 snat 和 dnat 例如 src192 168 1 2 client

    2026年3月17日
    2
  • part11.2-LED驱动设计

    part11.2-LED驱动设计

    2022年4月2日
    40
  • 简单通俗的说一下什么是面向过程和面向对象

    简单通俗的说一下什么是面向过程和面向对象网上关于这两个的回答真的很多 但是都有一个共同特点 不容易懂 我今天就简单通俗的说一下 当然 如果你要非常深入的了解 这篇不适合你 如果你只是为了了解什么是面向过程和面向对象 怎么面对考试 面对面试 怎么和别人说两者区别 看我下面几段话够了 先来两小段通俗解释面向过程 Procedu

    2026年3月17日
    3
  • 蓝牙键盘鼠标连接手提电脑无响应/罗技K380/雷柏鼠标「建议收藏」

    蓝牙键盘鼠标连接手提电脑无响应/罗技K380/雷柏鼠标「建议收藏」最近买了罗技的K380蓝牙键盘,支持连接三种设备,可以通过按键切换。另外也入手了雷柏的一款鼠标,同样也是支持三种设备切换。今天拿到办公室,连接手提的时候,第一次连接显示匹配错误,然后再搜索一直搜索不到了。经过排查以后,发现是蓝牙设备已经配对,但是没有连接成功,在蓝牙选项里的已配对设备里,把设备删除,重新搜索连接就可以了!转载于:https://www.cnblogs.com/miketian/…

    2025年11月11日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号