深度学习模型需要足够的数据支撑才能进行更好地训练,但实际生活中,作为开发者往往无法获取大量的数据,而专业的数据采集和标注公司提供的数据服务也并不便宜,因此,解决此问题有一个较为不错的初级方案,那就是利用图像处理方法,进行数据扩充。

我个人在学习和整理过程中,对目前数据扩充守法,无非是两类,一种常规手法,另一种为高级手法;

常规手法包含:变换,旋转,剪裁,缩放,锐化,噪声,卷积处理等,特点是利用传统数学形式对原图进行处理加工;

高级手法包含:强化学习的素材生成(例如Nvidia的GAN网络生成极为逼真的人脸模型),迁移学习的素材生成(例如将素材全部使用绘画技巧进行风格处理,得到全新的风格素材,如油画风格等)

由于个人正在复现热门论文,但ImageNet1000分类的数据太大,实在是等不了那么长时间,而10分类数据则较少,训练效果一般,因此想到了使用数据扩充手段来增加我的数据量;

这里记录了个人使用基于python的imgaug库来扩充数据集的过程;

imgaug库 github链接:https://github.com/aleju/imgaug

这个库具有几十种效果处理,因此属于很不错的使用工具库。

先看效果图:

左上角是原图,其它9张则是经过处理的九张新的数据图(包括通道随机改变颜色/噪点/像素丢失/颜色扰动/翻转/镜像效果);

代码:

import cv2
from imgaug import augmenters as iaa
import random
import numpy as npdef main():path = '1212.jpeg'src = cv2.imread(path)print(src)src = cv2.cvtColor(src,cv2.COLOR_BGR2RGB)# 颜色通道随机改变seq_channel_shuffle = iaa.Sequential([iaa.ChannelShuffle(),])# 添加高随噪点# scale: 噪点比例# per_channel:是否每一个通道seq_GassNoise = iaa.Sequential([iaa.AdditiveGaussianNoise(scale=0.2*255,per_channel=True)])# 随机丢失一部分像素seq_dropout = iaa.Sequential([iaa.Dropout(0.2,per_channel=True)])# 上下翻转seq_flip_up = iaa.Sequential([iaa.Flipud(1)])# 左右翻转seq_fliplr = iaa.Sequential([iaa.Fliplr(0.5)])# 子通道随机增加颜色值seq_channel = iaa.WithChannels(channels=[0, 1],children=iaa.Add((random.randint(-60, -20), random.randint(20, 60))))# 大地增加雪地效果seq_FastSnowyLandscape = iaa.Sequential([iaa.FastSnowyLandscape(lightness_threshold=200)])# 左转90度seq_rot90l = iaa.Sequential([iaa.Rot90(k=1)])# 右转90度seq_rot90r = iaa.Sequential([iaa.Rot90(k=3)])imglist = []for count in range(10):if count == 0:imglist.append(src)elif count == 1:imglist.append( seq_channel_shuffle.augment_image(src))elif count == 2:imglist.append( seq_GassNoise.augment_image(src))elif count == 3:imglist.append( seq_dropout.augment_image(src))elif count == 4:imglist.append( seq_flip_up.augment_image(src))elif count == 5:imglist.append( seq_fliplr.augment_image(src))elif count == 6:imglist.append( seq_channel.augment_image(src))elif count == 7:imglist.append( seq_FastSnowyLandscape.augment_image(src))elif count == 8:imglist.append( seq_rot90l.augment_image(src))elif count == 9:imglist.append( seq_rot90r.augment_image(src))for i in range(10):cv2.imshow(str(i), imglist[i])cv2.waitKey(0)cv2.destroyAllWindows()

【深度学习技巧】数据扩充--常规手法相关推荐

  1. 【深度学习】数据扩充 (Data Augmentation)

    Introduction 数据扩充(data augmentation),又名 数据增强 / 数据增广. 其本质即: 缺少海量数据时,为了保证模型的有效训练,一分钱掰成两半花. 数据扩充方法包括: 简 ...

  2. 深度学习之数据扩充,对应生成扩充的标签文件

    需要用到imgaug库,可自行安装. 直接上代码.transforms.py主要是对标签坐标进行转换及执行扩充操作 # import torch import torch.nn.functional ...

  3. [深度学习技巧]·数据类别不平衡问题处理

    数据类别不平衡问题处理 转载地址 1.什么是类别不平衡问题 如果不同类别的训练样例数目稍有差别,通常影响不大,但若差别很大,则会对学习过程造成困扰.例如有998个反例,但是正例只有2个,那么学习方法只 ...

  4. 仿真的数据能否用来深度学习_数字孪生弥合了深度学习的数据鸿沟

    点击上方"蓝色字体",选择 "设为星标" 关键讯息,D1时间送达! 随着企业开始使用可将其数据投入使用的深度学习(DL)项目,他们必须保护这些数据,而数字孪生是 ...

  5. 深度学习——day38 读论文:基于深度学习的数据竞争检测方法(DeleRace计算机研究与发展 2022)

    基于深度学习的数据竞争检测方法 chap0 Introduction 本文贡献: 原文及笔记下载 chap1 DeleRace 1.1 检测框架 1.2 选取实际应用程序 1.3 特征提取 1.3.1 ...

  6. 称霸Kaggle的十大深度学习技巧

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在各种Kaggle竞赛的排行榜上,都有不少刚刚进入深度学习领域的程 ...

  7. 深度学习技巧之Early Stopping(早停法)

    深度学习技巧之Early Stopping(早停法) | 数据学习者官方网站(Datalearner) 当我们训练深度学习神经网络的时候通常希望能获得最好的泛化性能(generalization pe ...

  8. 深度学习技巧应用7-K折交叉验证的实践操作

    大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用7-K折交叉验证的实践操作.K折交叉验证是一种机器学习中常用的模型验证和选择方式,它可以将数据集分为K个互斥的子集,其中K-1个子集作为训练集, ...

  9. 深度学习技巧应用6-神经网络中模型冻结-迁移学习技巧

    大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用6-神经网络中模型冻结:迁移学习的技巧,迁移学习中的部分模型冻结是一种利用预训练模型来解决新问题的技巧,是计算机视觉,自然语言处理等任务里面最重 ...

最新文章

  1. 倍增LCA NOIP2013 货车运输
  2. cmd orcal 中文乱码
  3. 监理单位的组织与规划
  4. Fragment使用--文章集锦
  5. Visual Studio 即时窗口实用技巧
  6. 【SGU】SGU每日练1·Little shop of flowers【DP】
  7. 93. 复原IP地址
  8. 同一局域网下电脑传输文件的方式(超简单!)
  9. 电机学重读(一)基础知识
  10. 用最简单的方法生成代码雨,效果相当的哇塞。
  11. 迅雷Bolt界面引擎将于3月19日对外开放
  12. SAP FI 系列 (022) - 货币和汇率的配置
  13. 【新手基础教程】maix asr(自动语音识别)
  14. BackTrack5(BT5) 硬盘安装 教程
  15. java实现数字转英文_Java实现数字转成英文的方法
  16. 怎么用大众都懂的语言解释黎曼空间?
  17. MATLAB算法实战应用案例精讲-【深度学习工具篇】sift特征提取
  18. 移动流媒体技术及其应用发展方向
  19. 最新2022年高职大数据国赛任务书详解与模拟练习
  20. 如何高效的上传大文件?

热门文章

  1. java货物进销管理系统【电竞杜小帅】
  2. 配置Druid数据源监控
  3. char *与char []的区别
  4. [Power BI] 认识Power Query和M语言
  5. sublimelinter php 语法不起作用,sublime安装插件sublimeLinter不起作用解决办法
  6. 分类导航(更新时间:2019.1.18)
  7. Python | 人脸识别系统 — 活体检测
  8. 单选/复选框中点击文字能选择该选项
  9. C++学习——g++对成员函数的undefined reference 未定义引用,但只有在编译release时才会出现。
  10. 矩阵的奇异值分解过程