精华内容
下载资源
问答
  • 在Python深度学习的图像领域中,通过平移、 翻转、加噪等方法进行数据扩充。但是,在 音频 领域中,如何进行数据扩充呢?在这里还是要推荐下我自己建的Python开发学习群:483546416,群里都是学Python开发的,如果...

    经典的Python深度学习网络Alex Net使用 数据扩充 的方式扩大数据集,取得较好的分类效果。在Python深度学习的图像领域中,通过平移、 翻转、加噪等方法进行数据扩充。但是,在 音频 领域中,如何进行数据扩充呢?

    Python音频数据扩充比图像数据扩充更简单!

    在这里还是要推荐下我自己建的Python开发学习群:483546416,群里都是学Python开发的,如果你正在学习Python ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2018最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴

    Python音频数据扩充比图像数据扩充更简单!


    音频处理基于librosa音频库;矩阵操作基于scipy和numpy科学计算库。

    以下是Python的实现方式:

    Python音频数据扩充比图像数据扩充更简单!

    Python音频数据扩充比图像数据扩充更简单!

    Python音频数据扩充比图像数据扩充更简单!

    音频加噪,注意:在添加随机噪声时,保留0值,否则刺耳难忍!

    import librosa

    from scipy.io import wavfile

    import numpy as np

    y, sr = librosa.load("../data/raw/love_illusion_20s.mp3") # 读取音频

    wn = np.random.randn(len(y))

    y = np.where(y != 0.0, y + 0.02 * wn, 0.0) # 噪声不要添加到0上!

    print y.shape, sr

    wavfile.write("../data/raw/love_illusion_20s_w.mp3", sr, y) # 写入音频

    展开全文
  • 数据扩充和数据预处理

    千次阅读 2019-01-05 08:38:33
    参考:《解析深度学习——卷积神经网络原理与视觉实践》 网址:http://lamda.nju.edu.cn/weixs/book/CNN_book.pdf  数据扩充 有效的数据扩充不仅能扩充训练样本数...

    参考:《解析深度学习——卷积神经网络原理与视觉实践》

    网址:http://lamda.nju.edu.cn/weixs/book/CNN_book.pdf

                                                                                                     数据扩充

    有效的数据扩充不仅能扩充训练样本数量,还能增加训练样本的多样性,一方面可避免过拟合,另一方面又会带来模型性能的提升,但实际使用时需要“量体裁衣”。

    更多图像数据扩充方法代码可参见:https://github.com/alegu/imgaug

    注:如果是 图像检测任务 或者是 图像分割任务 ,记得 将 图像数据 和 标记数据 进行 同步扩充(比如图像翻转时,对应的标记坐标跟着做相应翻转)

    一、常用的数据扩充方法:

    水平翻转、随机抠图、尺度变换、旋转、色彩抖动

    色彩抖动是在RGB颜色空间对原有RGB色彩分布进行轻微的扰动,也可在HSV颜色空间尝试随机改变图像原有的饱和度和明度(即,改变 S和V通道的值)或对色调进行微调(小范围改变该通道的值)。

    二、特殊的数据扩充方法:

    Fancy PCA

     

    监督式数据扩充(海康威视研究院提出)——利用高层语义信息

     

    GAN数据扩充

    GAN根据随机向量通过生成对抗形式可以生成不同的数据类型,可以作为数据扩充的一种方法。

                                                                                                       数据预处理

    中心式归一化

    先对数据集进行划分,训练集、验证集、测试集,图像减均值只对训练集操作。

    减均值操作的原理是,我们默认自然图像是一类平稳的数据分布(即数据每一个维度的统计都服从相同分布),此时,在每个样本上减去数据的统计平均值(逐样本计算)可以移除共同部分,凸显个体差异。

     

     

     

     

    展开全文
  • 数据增强与数据扩充

    千次阅读 2019-02-26 15:06:02
    数据扩充方法 在图像上很常用: 方法有:左右翻转、随机裁剪、旋转、平移、噪声扰动、亮度对比度变换等许多简单高效的方法; 其作用是增大数据集且提高泛化效果,随手百度都有很多讲解。 在文本上的使用: 方法...

    数据扩充方法

    在图像上很常用:

    方法有:左右翻转、随机裁剪、旋转、平移、噪声扰动、亮度对比度变换等许多简单高效的方法;

    其作用是增大数据集且提高泛化效果,随手百度都有很多讲解。

    在文本上的使用:

    方法有:

    同义词替换(这种方法比较大的局限性在于同义词在NLP中通常具有比较相近的词向量,因此对于模型来说,并没有起到比较好的对数据增强的作用)

    反向翻译(这是机器翻译中一种非常常用的增强数据的方法,主要思想就是通过机器将一个句子翻译为另一种语言,再把另一种语言翻译为原先的语言,得到一个意思相近但表达方式可能不同的句子。这种方法不仅有同义词替换、词语增删的能力,还具有对句子结构语序调整的效果,并能保持与原句子意思相近,是一种非常有效的数据增强方式。)

    生成对抗网络(近些年大热的生成对抗网络模型(GAN)以及它的各种变体模型,通过生成器和判别器的相互博弈,不断迭代增强训练达到以假乱真的效果,最后用生成器大量生成数据。但这种方法的难点在于需要对GAN模型的训练达到比较好,才能更有效的生成高质量数据,这一点工作量相对较大也较为复杂。)

    来源:

    https://www.zhihu.com/question/305256736/answer/586459726?utm_source=wechat_session&utm_medium=social&utm_oi=760907773469790208

     

    展开全文
  • 目录一、前言二、数据扩充2.1opencv对图像数据扩充常用Method2.2 Torchvision对图像数据进行扩充常用Method2.3 GAN生成扩充数据三、Pytorch实现数据读取与扩充 一、前言 在深度学习模型的训练过程中,为了保证模型的...

    一、前言

    在深度学习模型的训练过程中,为了保证模型的泛化能力,通常需要做数据扩充(Data augment),即在原有数据基础上,通过数据变换来生成新的数据从而扩大训练集,提高模型的泛化能力。

    二、数据扩充

    使用Python对图像数据处理来说,常用的Package有:

    • opencv-python
    • Pillow
    • imgaug
    • albumentations
    • torchvision(Pytorch官方提供的数据扩充库,可以和Torch无缝对接)

    数据扩充一般是从颜色空间、尺度空间和样本空间根据不同任务进行相应的扩充,对于图像分类,数据扩充不会改变Label值;对于物体检测,数据扩充不会改变物体坐标位置;对于图像分割,数据扩充会改变像素标签

    2.1opencv对图像数据扩充常用Method

    1、图像处理
    不改变图像整体特征的情况下,生成样本空间没有的新图像。
    方法:

    Method Augment effect
    flip 将图像水平或垂直翻转
    rotate 图像旋转
    resize 图像放大或缩小
    crop 图像剪裁,即从原图随机采样部分数据
    warpAffine 仿射变换
    Gsussian noise 添加随机噪声
    Value/contrast 图像亮度和对比度变换

    对于旋转、缩放等步骤来说,图像扩充后图像尺寸或维度发生 变化,需要使用插值(Interpolation)来填补为原尺寸,根据情况,可有以下几种插值方式:

    • 常亮填充:单色背景下,可使用0填充、1填充等方式得到一块单色区域
    • 边缘扩展:用图像边缘值填充边界,适用于平移图像填充
    • 反射:沿图像边缘值反射填充,一般适用连续或自然背景

    在这里插入图片描述

    2.2 Torchvision对图像数据进行扩充常用Method

    Method Augment affect
    transforms.CenterCrop 中心区域裁剪
    transforms.RandomCrop 随机区域裁剪
    transforms.RandomRotation 随机旋转
    transforms.RandomHorizontalFlip 水平翻转
    transforms.RandomVerticalFlip 垂直翻转
    transforms.Resize 缩放
    transforms.Normalize 标准化
    transforms.ToTensor 转为tensor,归一化至[0-1] 区间
    transforms.ToPILImage 转换为PILImage
    transforms.Grayscale 灰度化
    transforms.ColorJitter 亮度、对比度调整
    transforms.LinearTransformation() 线性变换
    transforms.RandomChoice(transforms) 选一个transforms进行操作

    等等,效果图如下:
    在这里插入图片描述

    2.3 GAN生成扩充数据

    利用对抗式神经网络在原有数据基础上通过训练可以生成新的数据。这就需要一个专门训练生成数据的网络。

    三、Pytorch实现数据读取与扩充

    Pytorch配合torchvision可同时完成数据读取与扩充:

    # Python库加载
    import os, sys, glob, shutil, json
    import cv2
    from PIL import Image
    import numpy as np
    import torch
    from torch.utils.data.dataset import Dataset
    import torchvision.transforms as transforms
    
    class SVHNDataset(Dataset):
    	# dataset初始化
    	def __init__(self, img_path, img_label, transform=None):
    		self.img_path = img_path
    		self.img_label = img_label
    		if transform is not None:
    			self.transform = transform
    		else:
    			self.transform = None
    	
    	# 读数据 
    	def __getitem__(self, index):
    		img = Image.open(self.img_path[index]).convert('RGB')
    		if self.transform is not None:
    			img = self.transform(img)
    		
    		# 原始SVHN中类别10为数字0
    		lbl = np.array(self.img_label[index], dtype=np.int)
    		lbl = list(lbl) + (5 - len(lbl)) * [10]
    		
    		return img, torch.from_numpy(np.array(lbl[:5]))
    	
    	# 数据集长度
    	def __len__(self):
    		return len(self.img_path)
    
    # 从文件夹中写入数据:假设数据集保存在 input文件夹下
    train_path = glob.glob('../input/train/*.png')
    train_path.sort()
    train_json = json.load(open('../input/train.json'))
    train_label = [train_json[x]['label'] for x in train_json]
    
    data = SVHNDataset(train_path, train_label,
    			transforms.Compose([
    				# 缩放到固定尺寸
    	 			transforms.Resize((64, 128)),
    			
    			  	# 随机颜色变换
    	 		  	transforms.ColorJitter(0.2, 0.2, 0.2),
    	
    			  	# 加⼊随机旋转
    	 	     	transforms.RandomRotation(5),
    	 	   
    	 	     	# 将图⽚转换为pytorch 的tesntor
    		     	# transforms.ToTensor(),
    		   
    		     	# 对图像像素进⾏归⼀化
    		     	# transforms.Normalize([0.485,0.456,0.406],[0.229,0.224,0.225])
    	    	 ]))
    

    通过以上过程,就可以将input中的train、train.json图片和对应Label同时加载进dataset、

    为了方便在后续的操作中批量训练train datasets了,在PyTorch里,我们还要在datasets基础上构建DataLoder方便迭代读取,它和dataset的区别是:

    • Datasets只是完成对数据集的封装,可以提供Index对样本读取
    • DataLoder是对Datasets的封装,可以提供批量读取
    # 这里只需要对上面data = SVHNDataset(train_path, train_label,
    #							transforms.Compose(...));
    # 封装一下就OK了,修改代码如下:
    
    # ....读取过程一样....
    train_loader = torch.utils.data.DataLoader(
    					SVHNDataset(train_path, train_label,
    								transforms.Compose([
    									transforms.Resize((64, 128)),
    									transforms.ColorJitter(0.3, 0.3, 0.2),
    									transforms.RandomRotation(5),
    									transforms.ToTensor(),
    									transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
    								])),
    					batch_size=10, # 每批样本个数
    					shuffle=False, # 是否打乱顺序
     					num_workers=10, # 读取的线程个数
    )
    for data in train_loader:
    	break
    

    通过DataLoder对Data进行封装后,每次调用Dataset读取单个样本进行拼接。此时data的格式为:

    torch.Size([10, 3, 64, 128]), torch.Size([10, 6])  
    # [10, 3, 64, 128]表示图像样本数据,四维向量分别是:batchsize * chanel * height * width
    # torch.Size([10, 6]表示图像样本的Label
    

    通过以上步骤就完成了Pytorch对datasets的读取,同时完成了对数据集的扩充。

    展开全文
  • 数据扩充常见方法

    千次阅读 2019-07-20 11:48:07
    数据扩充(data augmentation),又名数据增强 / 数据增广。其本质即:缺少海量数据时,为了保证模型的有效训练,一分钱掰成两半花。 为什么需要数据增强: 一般而言,比较成功的神经网络需要大量的参数,许许多...
  • 深度学习数据扩充

    千次阅读 2016-12-02 17:06:53
    俺最近在做深度学习的数据扩充,心得愿与小伙伴们分享 注意喽:有四个程序,我都公布啦 c++源程序如下(感觉代码效率不高,小伙伴们有任何意见希望不吝赐教): #include <iostream> #include...
  • Python音频的数据扩充

    千次阅读 2018-04-14 00:00:00
    Python音频的数据扩充经典的深度学习网络AlexNet使用数据扩充(Data Augmentation)的方式扩大数据集,取得较好的分类效果。在深度学习的图像领域中,通过平移、 翻转、加噪等方法进行数据扩充。但是,在音频(Audio...
  • 随机数据扩充

    千次阅读 2019-07-14 21:16:51
    蒙特卡洛模拟中经常需要生成大量...已知分布形式情况下,由少量数据生成大量数据,也可称为扩充加密。本文从一维到二维,分别探讨了通过少量数据生成同分布大量数据的算法,最后给出了Matlab代码供感兴趣的朋友尝试。
  • 发现一个python包Augmentor,专门用于数据扩充,链接:https://augmentor.readthedocs.io/en/master/userguide/install.html,就是开发手册,里面包含了安装,包内函数的介绍、扩展性等,这个模块主要包括了:随机...
  • 利用合成数据进行时间序列分类的数据扩充方法 Data augmentation using synthetic data for time series classification with deep residual networks 利用合成数据进行时间序列分类的数据扩充方法 Abstract ...
  • 音频数据扩充

    2019-08-01 13:08:43
    上采样即:扩充样本较少的类数据直到跟样本多的类差不多为止;或者用下采样即:在样本多的类中随机剔除部分数据。   针对上采样的话,在图像领域可以有的操作是:平移、旋转、加噪等,在语音领域可以有的操作是...
  • CNN笔记(1)---数据扩充与数据预处理

    千次阅读 2018-04-26 23:58:44
    1.1 简单的数据扩充 图像水平翻转 随机扣取 尺度变换和旋转 色彩抖动:在RGB颜色空间对原有RGB色彩分布进行轻微扰动 也可以在HSV空间随机改变图像原有的饱和度和明度 (改变S和V通道的值) 或对色调进行微调(小...
  • 基于python的图片数据扩充 借鉴:https://blog.csdn.net/jdzwanghao/article/details/80861590 我的数据一共分为两个文件夹,放在E盘的picture下面,一个文件命名为“0”,代表0类;另一个命名为“1”,代表1类; # ...
  • 深度学习: 数据扩充 (Data Augmentation)

    万次阅读 2018-01-31 18:46:38
    数据扩充(data augmentation),又名 数据增强。 其本质即: 缺少海量数据时,为了保证模型的有效训练,一分钱掰成两半花。 数据扩充方法包括: 简单方法 复杂方法 翻转、旋转、尺度变换、随机抠取、...
  • 但实际生活中,作为开发者往往无法获取大量的数据,而专业的数据采集和标注公司提供的数据服务也并不便宜,因此,解决此问题有一个较为不错的初级方案,那就是利用图像处理方法,进行数据扩充。 我个人在学习和整理...
  • 在这篇博客中,您了解了数据扩充/增强以及如何通过Keras的ImageDataGenerator类应用数据扩充。 有三种数据增强类型,默认情况下,Keras的ImageDataGenerator该类执行就地/即时数据扩充。 数据增强是正则化的一种形式...
  • 在深度学习训练过程中,经常会用到数据扩充,以下是用pytorch中torchvision.transforms模块对图片做增强的例子,在此做过实验记录。 Pytorch做数据扩充 transforms.ToTensor()
  • keras入门 --- Data augmentation(数据扩充)

    万次阅读 多人点赞 2017-01-04 11:50:52
    keras入门 — Data augmentation(数据扩充)在深度学习中,我们经常需要用到一些技巧(比如将图片进行旋转,翻转等)来进行data augmentation, 来减少过拟合。 在本文中,我们将主要介绍如何用深度学习框架keras来自动...
  •  常见的数据扩充(data augmentation)方法:文中图片均来自吴恩达教授的deeplearning.ai课程  1.Mirroring:对图像进行翻转  2.Random Cropping:随机的裁剪  3.Rotation:旋转  4.Shearing:裁剪  5....
  • 为了能够使训练的网络有更高的准确率,更低的过拟合,通常需要大量的训练数据,但在实际工作中,大量数据并不是说有就有的,怎么办呢,通常解决这个问题的办法就是,使用一些手段,人为扩充数据集。本篇文章,将针对...
  • 在进行卷积神经网络计算时,很多情况下我们无法获得足够的数据,可以通过人工数据合成的方法进行扩充.本人的扩充方法如下:  具体为将原图像分别水平,竖直和水平竖直翻转扩充至原来的4倍;然后对获得图像分别-...
  • 避免过拟合的基本方法之一是从数据源获得更多数据,当训练数据有限时,可以通过数据增强(data augmentation)变换原有的数据生成新的数据来扩大训练集。即使拥有大量数据,进行数据增强也是有必要的,因为可以防止...
  • 语义分割 图像增强(数据扩充

    千次阅读 热门讨论 2019-03-19 10:47:02
    对于语义分割任务来说,一种有效的提升性能的办法就是对现有数据进行增强,扩充现有数据的多样性。 本文介绍一种比较好用的数据增强工具:Augmentor (1)安装 Augmentor 在终端中输入命令: pip install ...
  • albumentations——python 数据扩充

    千次阅读 2019-02-21 15:24:15
    详细教程:https://albumentations.readthedocs.io/en/latest/api/augmentations.html
  • 特征工程归一化特征编码组合特征数据扩充 归一化 为什么要归一化 直观操作是将各维特征转到同一个量级,平均对学习器的权重,同时还能加快基于梯度下降算法的收敛速度 归一化适用范围 归一化在基于梯度下降的算法...
  • 在这基础上,分析模型的学习曲线,提出了用数据扩充方法来提高模型学习效果。然后介绍了在当前问题上应用数据扩充的具体操作。再次训练网络,分析了普通卷积神经网络使用了数据扩充技巧之后的训练效果。
  • CNN训练过程中的数据扩充方法

    千次阅读 2018-01-13 14:00:40
    本文提出使用极坐标空间中的径向变换(radial transform) 来对原始图像进行扩充,从而在数据较少的情况下使用神经网络进行训练。实验采用MNIST数据集在AlxNet和GoogLeNet进行验证,结果表面,使用我们提出的方法,相...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 213,402
精华内容 85,360
关键字:

数据扩充