数据增广albumentations用法 -借例 hw3 食物分类-
previous work:
开启第三个作业 食物分类 ,
有的人找不到数据集地址 放一个 :ml2021spring-hw3 | Kaggle
前言:
这个作业 每类带标签的数据很少, 然后又是可以看到的真实的图片,一般面对这种 ,我们都需要做数据增广。 所以着part1 我们就一起来探索数据增广的方式 。
先说说 我对数据增广的理解。众所周知,数据增广的方式有很多,然后我们该选哪种呢 ?好吧 我承认 我非常的想用autoaugment 但是那个需要高版本的torchvision 我等会装了再试试 。
不过没用auto 我用的是albumentations 这个模块。听说这个模块很快 今天来试试吧! 不过这个albu真的很奇怪 需要像下面这样用。
train_trans = A.Compose([A.RandomResizedCrop(224,224),
])
x = self.x[index]if self.transform != None:xT = self.transform(image=x)y = self.y[index]return self.toTensor(xT['image']), y, x
增广实验 :
一 : 随机裁剪并且resize
A.RandomResizedCrop(224,224),
下图左是原图 右边是裁剪 我我看了看 大概看9个 只有1个增广后分不清 有时候都能看清 所以这种增广还是不错的 。而且 考虑到 拍摄食物时 镜头远近 不一样 所以这种增广我觉得很合适这个数据集。
二 : 放射变换 :
A.Affine()
这个小幅度的可以接受 但是大幅度的就会很离谱 出现一大片黑色 。 待定。
A.PiecewiseAffine() 这个是从中间放射 会变得挺奇怪
3 中心裁剪
A.CenterCrop(180,180)
这个是可以的 而且到时候可以取256 然后裁剪224
四 : 粗粒度丢弃
A.CoarseDropout(8 ,8, 8)
我觉得不行 至少下面这个不行 这两个参数可以调整 黑洞的数量 长宽 其实小的还是可以接受的
五 裁剪
可能有用 但是我不想手动指定 对不起 注意C大写
A.Crop( 0,0,100,100)
六: 裁剪并填充 还有其他裁剪 都很类似
A.CropAndPad(px=100) 这个就是 缩小啊 不是裁剪 px是像素 也可以用比例 我觉得 这个 不太行 很少 有这种拍摄环境把 +
A.RandomCropNearBBox() 需要加一个 bbox 使用 应该取这个框里的 然后随机 变
transform(image=x, cropping_bbox=[20,20, 80 ,80])
七 : 弹性变换
A.ElasticTransform()
我觉得不行 不行 实在是太搞笑了 看那个鸡蛋 就是随机拉 然后复制
八 翻转
A.Flip() 就是随机翻转 上下翻转不是很适合这个数据集 有些东西没有倒过来放的道理
所以 左右翻转比较好一点 。 : A.HorizontalFlip() 左右翻转 大部分还跟原来差不多 。
9 扭曲 :
A.GridDistortion(distort_limit=0.6)
A.OpticalDistortion(distort_limit=0.5, p =1)
其实还可以 扭曲程度低 一点可以接受 0.6的扭曲 还是可以看出来一个样子的 注意p是 0.5
10 保持比例resize
A.LongestMaxSize(max_size=50, p =0.5)
很难看出来差别 但是也不好用 因为我们网络输入一般要固定 就是把最长边设为maxsize 然后resize
11 填充
A.PadIfNeeded() 这啥 啊 好吧 就是对称填充 然后 如果边上少一点就可以这样 如果填充很多倍就是地毯。。。
12 : 透视法
A.Perspective(scale=(0.5,0.6)) 如果度数小了 没啥意义 大了 就看不出来东西了 会把视角放在 物体表面
14 旋转
A.Rotate(( -45,45), p =1) 旋转 我觉得在一定角度内的旋转还可以
------------------------------------------------------------------------------------------------------------------------------
像素变换
上面都是空间变换 下面我们看看 。
1 模糊
彻底弄懂高斯模糊,均值模糊和中值模糊_66Kevin的博客-CSDN博客_均值模糊
A.Blur(blur_limit=10,p =1)
就是跟近视了一样 感觉实际工程中可能有用 有时候照片没拍好 就这样子
A.GlassBlur(p=1) 和 A.GaussianBlur()
A.MedianBlur(p=1) 中值模糊 使用具有随机孔径线性大小的中值滤波器模糊输入图像
A.MotionBlur(p=1) 运动模糊 像一个运动中的物体 这个数据集不适合 。 人脸识别可能有用
2 对比度受限的自适应直方图均衡 啥啊 ?
应该就是加一组 自适应直方图 他的对比度是受限的 如果把限制打到100 就很奇怪了 不过下面啥啊 恐怖片吗 其实可以尝试 因为拍摄的曝光不同的话
3 通道丢失
A.ChannelDropout(p=1) 这个好啊 就是换了个光源嘛 下面这些东西 换个灯依然能看出是啥
当然 除了那个黑咕隆咚的
通道转换 :
ChannelShuffle(p=1) 感觉跟上面那个差不多 但我拒绝 因为这个 真的很多 我都分不出来了
4 Colorjitter
A.ColorJitter(p=1) 随机改变图像的亮度、对比度和饱和度 好吧 我不得不承认 像素变换这边都是一堆乱七八糟的 矮个里挑高个就成。
5 下采样
A.Downscale(p=1) 这个必须可以 就是模糊一点 。
5 抽象画 (浮雕)
A.Emboss(alpha=(0.1, 1),p=1)
抽象画是我自己起的名字 其实感觉就是 把一个东西 画出来一样 刻版 还可以 挺好看的
6 均衡化
A.Equalize(p=1) 直方图均衡化 (Histogram Equalization) 就是把一个已知灰度概率密度分布的图像经过一种变换,使之演变为一幅具有均匀灰度概率密度分布的新图像。 说白了 就是图像像素分布均匀一点 不要有的地方很白 有的地方很黄 这个吧 我有点嫌恶心 再见
7 图片借用
用另外的图片 对数据进行增强
target_image = cv2.imread('1.jpg')
A.FDA(reference_images=[target_image],p1,read_fn=lambda x: x) FDA是一个小的风格迁移 但是 你这是咋迁的呀 .......
A.HistogramMatching(reference_images=[target_image],p=1,read_fn=lambda x: x)
直方图 均衡化
A.PixelDistributionAdaptation([target_image],p=1, read_fn=lambda x:x)
PCA一系列变换出的黑色料理
8 抽特征PCA
A.FancyPCA(p=1)
对于一张图 抽出主要特征 不是不可以 好吧
9 噪声
高斯噪声
A.GaussNoise((10,200.0),p=1) 下面图 我打乱了顺序 你能看出哪个是原图吗 还有高斯模糊
iso噪声 A.ISONoise(p=1) 有点像用相机去拍 , 加个滤镜
A.MultiplicativeNoise(p=1)
乘性噪声 乘性噪声就是伴随信号的噪声 信号强 噪声就大 信号弱 噪声就小
强者恒强 但抱歉 我喜欢的是 共同富裕
我好讨厌空调啊 啊啊啊啊啊啊 为什么世界上有空调这种东西???????????????头痛死了 根本不想呆下去 。
11: 图像压缩
A.ImageCompression(quality_lower=20,p=1) 说实话 看不出来哪压缩了
12 翻转像素
A.InvertImg(p=1) 听着就不靠谱好嘛 不过 我觉得吧 其实翻转和不反转 信息量都是一样的 也就是说 转了白转 对于一个网络 不过虽然信息量一样 但是对于不同图片还是不一样的
13 标准化
A.Normalize (p=1)
这个 就不谈了 有时候 事情真的不能只看表象 就像这个标准化 明明把图片弄得人不人,鬼不鬼的 但是大家就是都在用 而且还都说效果好 我是理解不能
14 改像素位数
A.Posterize(8,p=1) 反正是看不出啥 变化 想想也是 仅仅改变位数而已
15 切换 每个通道像素值
A.RGBShift(p=1) 怎么了 输错了 是吗? 还要换换
16 随机自然现象
下面是起雾了 能看出来吗 A.RandomFog(0.6,p=1)
下面下雨啦 A.RandomRain(p=1)
下面有影子 :
A.RandomShadow(p=1)
冬雪雪冬小大寒 :A.RandomSnow(p=1)
???? 谁开的远光灯啊 没素质 :随机太阳耀斑
A.RandomSunFlare(p=1)
17 : 随机色调曲线
A.RandomToneCurve(p=1)
18 锐化
锋利的剑 锐利的眼
A.Sharpen((1,1),p=1)
19 日化
A.Solarize(p=1)
有点像红外 图
20 超像素
随机挑出一些幸运区域 被附近的平均像素替代 这个有点像那个马赛克
A.Superpixels(p=1)
21 灰度
哦 我亲爱的 食物们 你们死的好惨啊
A.ToGray(p=1)
22 棕褐色
A.ToSepia(p=1) 是墨镜 我带了棕褐色的墨镜
23 还有一些增强方式 我没更新到最新版本 所以就没有
我来回顾一下 我想用在食物分类这个数据集上的增强方式都有哪些呢 ?
train_trans = A.Compose([A.RandomResizedCrop(224,224),A.CenterCrop(224,224),A.CoarseDropout(8 ,8, 8),A.HorizontalFlip(),A.OpticalDistortion(distort_limit=0.5, p =1),A.Rotate(( -45,45), p =1),A.MedianBlur(p=1),A.ChannelDropout(p=1),A.ColorJitter(p=1),A.Downscale(p=1),A.Emboss(alpha=(0.1, 1),p=1),A.FancyPCA(p=1),A.ISONoise(p=1),A.Normalize (p=1),A.RandomToneCurve(p=1),A.Sharpen((0.2,0.6),p=1),A.Superpixels(p=1), ])
大概就这么些 我觉得可以试试的 其中标准化可以存疑 。
试了一下 感觉小量数据集上 其实两个的速度 差不多
数据增广albumentations用法 -借例 hw3 食物分类-相关推荐
- pytorch数据增广albumentations
pytorch数据增广albumentations 图像增强库官方英文介绍 安装 pip install albumentations 支持的目标检测bbox格式 pascal_voc [x_min, ...
- 【深度学习】基于深度学习的数据增广技术一览
◎作者系极市原创作者计划特约作者Happy 周末在家无聊,偶然兴心想对CV领域常用的数据增广方法做个简单的调研与总结,重点是AI时代新兴的几种反响还不错的方法.各种第三方与官方实现代码等.那么今天由H ...
- 基于深度学习的数据增广技术一览
周末在家无聊,偶然兴心想对CV领域常用的数据增广方法做个简单的调研与总结,重点是AI时代新兴的几种反响还不错的方法.各种第三方与官方实现代码等.那么今天由Happy来跟大家聊一聊深度学习中那些常用的数 ...
- 常用数据增广方法,解决数据单一问题
Datawhale干货 作者:陈信达,Datawhale优秀学习者 寄语:本文将对传统图像算法的数据增广方式进行学习,以最常用的平移和旋转为例,帮助大家梳理几何变换的概念和应用,并对其在OpenCV的 ...
- 计算机视觉的数据增广技术大盘点!附涨点神器,已开源!
如果要把深度学习开发过程中几个环节按重要程度排个序的话,相信准备训练数据肯定能排在前几位.要知道一个模型网络被编写出来后,也只是一坨代码而已,和智能基本不沾边,它只有通过学习大量的数据,才能学会如何作 ...
- 【工大SCIR笔记】自然语言处理领域的数据增广方法
点击上方,选择星标或置顶,每天给你送干货! 作者:李博涵 来自:哈工大SCIR 1.摘要 本文介绍自然语言处理领域的数据增广方法.数据增广(Data Augmentation,也有人将Data Aug ...
- 论文理解【IL - 数据增广】 —— Adversarial Imitation Learning with Trajectorial Augmentation and Correction
标题:Adversarial Imitation Learning with Trajectorial Augmentation and Correction 发表:ICRA 2021 文章链接:Ad ...
- 嵌入式AI —— 6. 为糖葫芦加糖,浅谈深度学习中的数据增广
没有读过本系列前几期文章的朋友,需要先回顾下已发表的文章: 开篇大吉 集成AI模块到系统中 模型的部署 CMSIS-NN介绍 从穿糖葫芦到织深度神经网络 又和大家见面了,上次本程序猿介绍了CMSIS- ...
- PaddleClas-图像分类中的8种数据增广方法(cutmix, autoaugment,..)
本文主要来源于PaddleClas这个代码仓库中的数据增广文档:https://github.com/PaddlePaddle/PaddleClas/blob/master/docs/zh_CN/ad ...
最新文章
- 关于软件产业的两个契机
- Lua------------------unity与lua的热更新
- MySql - 索引
- wxWidgets:wxTextWrapper类用法
- PIC32单片机harmony开发环境 - i2c例程和代码分析
- [转自李战博客]悟透JavaScript
- webapi输出炜json_webapi转化为json格式
- 【超参数寻优】交叉验证(Cross Validation)超参数寻优的python实现:多参数寻优
- wps如何自己制作流程图_WPS如何绘制流程图? WPS绘图流程图详细教程
- HFSS天线设计流程
- 数字信号处理教程答案及解析(第五版)
- 计算几何——扇形面积
- 数据库数据模型理解 概念数据模型 逻辑数据模型 物理数据模型区别和联系
- 复盘《赛博朋克2077》:谁让你提前 57 年发布呢?
- python打开网页后点击网页按钮_python单击网页上的按钮
- Tomcat里 appBase和docBase的区别
- Office2013办公软件简体中文专业增强版
- Linux启动流程详解
- SAP AFS Arun 增强 出口 介绍
- Android降低屏幕白点吗,360手机桌面强化白点工具 降低安卓使用门槛
热门文章
- jersey球衣是什么_2017Jersey Zone球衣艺术博览会展品介绍(图)
- 计算机科学学科知识体系核心内容,计算机专业核心课程教学改革和教材建设的重要指导...
- ICT生长模式及对运营商的影响
- **改进的遗传算法综述**
- SQLServer证书过期,重做证书
- 【满分】【华为OD机试真题2023 JS】打印文件
- 一篇文章了解MySQL联合索引
- 微信小程序坑点杂谈(五)1000比200小?光速解决小程序数值大小判断错误的问题
- Flink Table API SQL编程指南(自定义Sources Sinks)
- 最强软件哪里寻?让你见识什么是第一