当前位置: 首页 > news >正文

佛山市手机网站建设推广学院seo教程

佛山市手机网站建设,推广学院seo教程,深圳网站开发建设培训,h5网站开发多少钱数据增强(Data Augmentation)是在不实质性的增加数据的情况下,从原始数据加工出更多的表示,提高原数据的数量及质量,以接近于更多数据量产生的价值。 其原理是,通过对原始数据融入先验知识,加工…
  • 数据增强(Data Augmentation)是在不实质性的增加数据的情况下,从原始数据加工出更多的表示,提高原数据的数量及质量,以接近于更多数据量产生的价值。

  • 其原理是,通过对原始数据融入先验知识,加工出更多数据的表示,有助于模型判别数据中统计噪声,加强本体特征的学习,减少模型过拟合,提升泛化能力

  • 机器学习或深度学习模型的训练的目标是成为“通用”模型。这就需要模型没有过度拟合训练数据集,或者换句话说,我们的模型对看不见的数据有很好的了解。数据增强也是避免过度拟合的众多方法之一

  • 如经典的机器学习例子–哈士奇误分类为狼:通过可解释性方法,可发现错误分类是由于图像上的雪造成的。通常狗对比狼的图像里面雪地背景比较少,分类器学会使用雪作为一个特征来将图像分类为狼还是狗,而忽略了动物本体的特征。此时,可以通过数据增强的方法,增加变换后的数据(如背景换色、加入噪声等方式)来训练模型,帮助模型学习到本体的特征,提高泛化能力。图像本身的变化将有助于模型对未见数据的泛化,从而不会对数据进行过拟合

  • 需要关注的是,数据增强样本也有可能是引入片面噪声,导致过拟合。此时需要考虑的是调整数据增强方法,或者通过算法(可借鉴Pu-Learning思路)选择增强数据的最佳子集,以提高模型的泛化能力。

    • PU Learning(Positive-unlabeled learning)是半监督学习的一个研究方向,指在只有正类和无标记数据的情况下,训练二分类器。

      • 启发式地从未标注样本里找到可靠的负样本,以此训练二分类器,该方法问题是分类效果严重依赖先验知识。

      • 将未标注样本作为负样本训练分类器,由于负样本中含有正样本,错误的标签指定导致分类错误。

  • 单样本增强

    • 单(图像)样本增强主要有几何操作、颜色变换、随机擦除、添加噪声等方法。在计算机视觉中,典型的数据增强方法有翻转(Flip),旋转(Rotat ),缩放(Scale),随机裁剪或补零(Random Crop or Pad),色彩抖动(Color jittering),加噪声(Noise)

    • imgaug是一款非常有用的python图像增强库,非常值得推荐应用于深度学习图像增强。其包含许多增强技术,支持图像分类,目标检测,语义分割,热图、关键点检测等一系列任务的图像增强。

  • 多样本数据增强方法

    • 多样本增强是通过先验知识组合及转换多个样本,主要有Smote、SamplePairing、Mixup等方法在特征空间内构造已知样本的邻域值。
  • Transforms 是常用的图像数据增强模块。可以使用 Compose 将它们链接在一起。

  • 可视化数据增强:

  • import PIL.Image as Image
    import torch
    from torchvision import transforms
    import matplotlib.pyplot as plt
    import numpy as np
    import warnings
    plt.rcParams['font.sans-serif'] = ['SimHei']    # 显示中文
    plt.rcParams['axes.unicode_minus'] = False        # 显示负号
    def imshow(img_path, transform):"""Function to show data augmentationParam img_path: path of the imageParam transform: data augmentation technique to apply"""img = Image.open(img_path)fig, ax = plt.subplots(1, 2, figsize=(10, 4))ax[0].set_title(f'原图 {img.size}')ax[0].imshow(img)img = transform(img)ax[1].set_title(f'变换后 {img.size}')ax[1].imshow(img)plt.show()
    path = 'imgs/000000000049.jpg'
    
    • Resize/Rescale:用于将图像的高度和宽度调整为我们想要的特定大小。

    • transform = transforms.Resize((640, 640))
      imshow(path, transform)
      
    • 在这里插入图片描述

    • Cropping:将要选择的图像的一部分应用于新图像。例如,使用 CenterCrop 来返回一个中心裁剪的图像。

    •  transform = transforms.CenterCrop((640, 640))
      
    • 在这里插入图片描述

    • RandomResizedCrop:这种方法同时结合了裁剪和调整大小。

    • transform = transforms.RandomResizedCrop((640, 640))
      
    • 在这里插入图片描述

    • Flipping:水平或垂直翻转图像

    •  transform = transforms.RandomHorizontalFlip()
      
    • 在这里插入图片描述

    • Padding:填充包括在图像的所有边缘上按指定的数量填充。

    •  transform = transforms.Pad((50,50,50,50))
      
    • 在这里插入图片描述

    • Rotation:对图像随机施加旋转角度。

    • transform = transforms.RandomRotation(45)
      
    • 在这里插入图片描述

    • Random Affine:对图像进行仿射变换,仿射变换是 2 维的线性变换,由 5 种基本操作组成,分别是旋转、平移、缩放、错切和翻转。RandomAffine — Torchvision main documentation (pytorch.org)

    • transform = transforms.RandomAffine(1, translate=(0.5, 0.5), scale=(1, 1), shear=(1,1), fillcolor=(256,256,256)) 
      
    • 在这里插入图片描述

    • Gaussian Blur:图像将使用高斯模糊进行模糊处理。

    •  transform = transforms.GaussianBlur(7, 3)
      
    • 在这里插入图片描述

    • Grayscale:将彩色图像转换为灰度。

    • transform = transforms.Grayscale(num_output_channels=3)
      
    • 在这里插入图片描述

    • Brightness:改变图像的亮度当与原始图像对比时,生成的图像变暗或变亮。

    • transform = transforms.ColorJitter(brightness=2)
      
    • 在这里插入图片描述

    • Contrast:图像最暗和最亮部分之间的区别程度被称为对比度。图像的对比度也可以作为增强进行调整。

    • transform = transforms.ColorJitter(contrast=2)
      
    • 在这里插入图片描述

    • Saturation:图片中颜色的分离被定义为饱和度。

    • transform = transforms.ColorJitter(saturation=20)
      
    • 在这里插入图片描述

    • Hue:色调被定义为图片中颜色的深浅。

    • transform = transforms.ColorJitter(hue=0.4)  #hue:[-0.5,0.5]
      
    • 在这里插入图片描述

  • 图像本身的变化将有助于模型对未见数据的泛化,从而不会对数据进行过拟合。以上整理的都是我们常见的数据增强技术,torchvision中还包含了很多方法,可以在他的文档中找到:https://pytorch.org/vision/stable/transforms.html

    • tencorp:FiveCrop在图像的上下左右以及中心裁剪出尺寸为 size 的 5 张图片。Tencrop对这 5 张图片进行水平或者垂直镜像获得 10 张图片。

    • def transform_invert(img_, transform_train):"""将data 进行反transfrom操作:param img_: tensor:param transform_train: torchvision.transforms:return: PIL image"""# 如果有标准化操作if 'Normalize' in str(transform_train):# 取出标准化的 transformnorm_transform = list(filter(lambda x: isinstance(x, transforms.Normalize), transform_train.transforms))# 取出均值mean = torch.tensor(norm_transform[0].mean, dtype=img_.dtype, device=img_.device)# 取出标准差std = torch.tensor(norm_transform[0].std, dtype=img_.dtype, device=img_.device)# 乘以标准差,加上均值img_.mul_(std[:, None, None]).add_(mean[:, None, None])# 把 C*H*W 变为 H*W*Cimg_ = img_.transpose(0, 2).transpose(0, 1)  # C*H*W --> H*W*C# 把 0~1 的值变为 0~255img_ = np.array(img_) * 255# 如果是 RGB 图if img_.shape[2] == 3:img_ = Image.fromarray(img_.astype('uint8')).convert('RGB')# 如果是灰度图elif img_.shape[2] == 1:img_ = Image.fromarray(img_.astype('uint8').squeeze())else:raise Exception("Invalid img shape, expected 1 or 3 in axis 2, but got {}!".format(img_.shape[2]) )return img_
      img = Image.open(path)
      transform = Compose([TenCrop(224, vertical_flip=True), # this is a list of PIL ImagesLambda(lambda crops: torch.stack([ToTensor()(crop) for crop in crops])) # returns a 4D tensor
      ])
      img_tensor = transform(img)
      b,c,h,w=img_tensor.shape
      plt.figure(figsize=(15,4))
      for i in range(b):img = transform_invert(img_tensor[i], transform)plt.subplot(2, 5, i+1)plt.imshow(img)
      plt.show()
      
    • 在这里插入图片描述

    • RandomErasing:对图像进行随机遮挡。这个操作接收的输入是 tensor。

    • transform = Compose([transforms.ToTensor(),transforms.RandomErasing(p=1, scale=(0.02, 0.33), ratio=(0.3, 3.3), value=(100/255, 0, 0)),
      ])
      img_tensor = transform(img)
      convert_img=transform_invert(img_tensor, transform)
      plt.subplot(1, 2, 1)
      plt.imshow(img)
      plt.subplot(1, 2, 2)
      plt.imshow(convert_img)
      plt.show()
      
    • 在这里插入图片描述

  • transforms.RandomChoice:从一系列 transforms 方法中随机选择一个

    • torchvision.transforms.RandomChoice([transforms1, transforms2, transforms3])
      
  • transforms.RandomApply:根据概率执行一组 transforms 操作,要么全部执行,要么全部不执行。

    • torchvision.transforms.RandomApply([transforms1, transforms2, transforms3], p=0.5)
      
  • transforms.RandomOrder:对一组 transforms 操作打乱顺序

    • transforms.RandomOrder([transforms1, transforms2, transforms3])
      
http://www.ritt.cn/news/2525.html

相关文章:

  • 外语教学网站开发360安全浏览器
  • 苏州吴中区做网站的淘客推广
  • 网站建设自建服务器手机百度网址大全首页
  • 网站排行榜上升代码足球世界排名国家最新
  • 上海市住房和城乡建设管理委员会门户网站佛山抖音seo
  • 南京 网站建设百度科技有限公司
  • 怎样帮人做网站挣钱产品推广图片
  • 常熟市住房和城乡建设部网站淘宝seo搜索引擎优化
  • 网站设计公司成都怎么查权重查询
  • 网站空间空间app下载推广
  • 招聘网站策划书做企业网站建设的公司
  • 怎样做企业网站上海百度搜索排名优化
  • 海口做网站的公司游戏推广论坛
  • 深圳论坛网站设计哪家公司好免费发布网站seo外链
  • 自助设计网站广告咨询
  • 网站关于我们模板网上营销是做什么的
  • 西安有哪些做网站建设的公司建设网站制作
  • 湾里南昌网站建设公司十大洗脑广告
  • 网站被主流搜索引擎收录的网页数量是多少文案代写平台
  • 洛阳做多屏合一网站网络小说网站三巨头
  • 毕业设计做网站怎样的工作量算达标网络安全培训机构排名
  • 千博政府网站管理系统西安网站建设公司电话
  • wordpress地址如何修改seo和sem分别是什么
  • 陕西科技网站建设营销型网站建设的步骤流程是什么
  • 怎么使用wordpress建站企业如何网络推广
  • 桂林做网站的公司有哪些阿里巴巴国际站官网
  • 网站建站网站设计公司百度关键词指数排行
  • 网站建设可用性会计培训班哪个机构比较好
  • 甘肃三轮建设监理网站跨境电商平台
  • 门店门面设计效果图江西优化中心