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 食物分类-相关推荐

  1. pytorch数据增广albumentations

    pytorch数据增广albumentations 图像增强库官方英文介绍 安装 pip install albumentations 支持的目标检测bbox格式 pascal_voc [x_min, ...

  2. 【深度学习】基于深度学习的数据增广技术一览

    ◎作者系极市原创作者计划特约作者Happy 周末在家无聊,偶然兴心想对CV领域常用的数据增广方法做个简单的调研与总结,重点是AI时代新兴的几种反响还不错的方法.各种第三方与官方实现代码等.那么今天由H ...

  3. 基于深度学习的数据增广技术一览

    周末在家无聊,偶然兴心想对CV领域常用的数据增广方法做个简单的调研与总结,重点是AI时代新兴的几种反响还不错的方法.各种第三方与官方实现代码等.那么今天由Happy来跟大家聊一聊深度学习中那些常用的数 ...

  4. 常用数据增广方法,解决数据单一问题

    Datawhale干货 作者:陈信达,Datawhale优秀学习者 寄语:本文将对传统图像算法的数据增广方式进行学习,以最常用的平移和旋转为例,帮助大家梳理几何变换的概念和应用,并对其在OpenCV的 ...

  5. 计算机视觉的数据增广技术大盘点!附涨点神器,已开源!

    如果要把深度学习开发过程中几个环节按重要程度排个序的话,相信准备训练数据肯定能排在前几位.要知道一个模型网络被编写出来后,也只是一坨代码而已,和智能基本不沾边,它只有通过学习大量的数据,才能学会如何作 ...

  6. 【工大SCIR笔记】自然语言处理领域的数据增广方法

    点击上方,选择星标或置顶,每天给你送干货! 作者:李博涵 来自:哈工大SCIR 1.摘要 本文介绍自然语言处理领域的数据增广方法.数据增广(Data Augmentation,也有人将Data Aug ...

  7. 论文理解【IL - 数据增广】 —— Adversarial Imitation Learning with Trajectorial Augmentation and Correction

    标题:Adversarial Imitation Learning with Trajectorial Augmentation and Correction 发表:ICRA 2021 文章链接:Ad ...

  8. 嵌入式AI —— 6. 为糖葫芦加糖,浅谈深度学习中的数据增广

    没有读过本系列前几期文章的朋友,需要先回顾下已发表的文章: 开篇大吉 集成AI模块到系统中 模型的部署 CMSIS-NN介绍 从穿糖葫芦到织深度神经网络 又和大家见面了,上次本程序猿介绍了CMSIS- ...

  9. PaddleClas-图像分类中的8种数据增广方法(cutmix, autoaugment,..)

    本文主要来源于PaddleClas这个代码仓库中的数据增广文档:https://github.com/PaddlePaddle/PaddleClas/blob/master/docs/zh_CN/ad ...

最新文章

  1. 关于软件产业的两个契机
  2. Lua------------------unity与lua的热更新
  3. MySql - 索引
  4. wxWidgets:wxTextWrapper类用法
  5. PIC32单片机harmony开发环境 - i2c例程和代码分析
  6. [转自李战博客]悟透JavaScript
  7. webapi输出炜json_webapi转化为json格式
  8. 【超参数寻优】交叉验证(Cross Validation)超参数寻优的python实现:多参数寻优
  9. wps如何自己制作流程图_WPS如何绘制流程图? WPS绘图流程图详细教程
  10. HFSS天线设计流程
  11. 数字信号处理教程答案及解析(第五版)
  12. 计算几何——扇形面积
  13. 数据库数据模型理解 概念数据模型 逻辑数据模型 物理数据模型区别和联系
  14. 复盘《赛博朋克2077》:谁让你提前 57 年发布呢?
  15. python打开网页后点击网页按钮_python单击网页上的按钮
  16. Tomcat里 appBase和docBase的区别
  17. Office2013办公软件简体中文专业增强版
  18. Linux启动流程详解
  19. SAP AFS Arun 增强 出口 介绍
  20. Android降低屏幕白点吗,360手机桌面强化白点工具 降低安卓使用门槛

热门文章

  1. jersey球衣是什么_2017Jersey Zone球衣艺术博览会展品介绍(图)
  2. 计算机科学学科知识体系核心内容,计算机专业核心课程教学改革和教材建设的重要指导...
  3. ICT生长模式及对运营商的影响
  4. **改进的遗传算法综述**
  5. SQLServer证书过期,重做证书
  6. 【满分】【华为OD机试真题2023 JS】打印文件
  7. 一篇文章了解MySQL联合索引
  8. 微信小程序坑点杂谈(五)1000比200小?光速解决小程序数值大小判断错误的问题
  9. Flink Table API SQL编程指南(自定义Sources Sinks)
  10. 最强软件哪里寻?让你见识什么是第一