非官方项目地址:Github项目
官方文章:文章连接

关于图片地深度学习有时会需要大量的图片,因此,为了获得更多的图片,对已经获取的图片进行扩展就是一个必要地手段,简单来说,针对图片地数据增强就是对已有地图片进行旋转、裁剪、缩放、变色等操作让它变成另外一张图片但是自己的相关信息又并没有丢失太多

但是,怎么对图片进行变换而又不丢失关键信息是个技术活, google发布的AutoAugment就是干这个的。google通过针对3个主流的数据集(ImageNet,CIFAR10,SVHN)进行 “测试” 得到了3大类变换的集合,每一个集合中又包含了几十种具体变换的方式,每一次调用都会随机选一种变换方式对你传入的图片进行变换,返回变换之后的图片

原始图片:


进行8次随机变换操作:

具体使用方式如下:
首先当然是要将这个项目下下来,有用的也就只有autoaugment.py和ops两个文件,其他的都是教学
这玩意儿的使用方式有两种,可以直接嵌入到pytorch的transform中,就像这样:

#  一共可以从autoaugment中import进来四个,其中三个是变换的大类,剩下一个是具体的变换的方式
from autoaugment import ImageNetPolicy
data = ImageFolder(rootdir, transform=transforms.Compose([transforms.RandomResizedCrop(224), transforms.RandomHorizontalFlip(), ImageNetPolicy(), #  这就是调用transforms.ToTensor(), transforms.Normalize(...)]))
loader = DataLoader(data, ...)

另一种是自己对图片进行处理后保存

# -*- coding: utf-8 -*-
# @Time : 2022/9/24 21:43
# @Author : Lanpangzi
# @File : change_images.pyfrom PIL import Image
from autoaugment import ImageNetPolicy
import os# 必须保证这个文件夹里面没有文件夹!!!!!!
# 输入你的图片所在的文件夹的路径
path = r'D:\00pycharm\Projects_from_github\AutoAugment-master\yolov5-1 (2)\crack'al_imgs = os.listdir(path)
policy = ImageNetPolicy()
for ind, img_name in enumerate(al_imgs):img_name_ = img_name.split('.')[:-1][0]img_suffix = img_name.split('.')[-1]  # 保留原来图片的后缀img_path = os.path.join(path, img_name)or_img = Image.open(img_path)os.makedirs(os.path.join(path, img_name_))# 编号0的是原来的图片or_img.save(os.path.join(path, img_name_, img_name_ + '_' + str(0) + '.' + img_suffix))or_img = or_img.convert('RGB') # 有的图片模式无法保存,统一全部转换成RGBfor i in range(24):new_img = policy(or_img)new_img_path = os.path.join(path, img_name_, img_name_ + '_' + str(i + 1) + '.' + img_suffix)new_img.save(new_img_path)print("已经搞定{}/{}".format(ind + 1, len(al_imgs)))

如果仅仅是识别图片里面是个什么东西那么这样就可以直接处理,毕竟里面的东西不会变化,但是,如果我需要对即将进行yolo识别的图片进行数据扩展,那么我的标注应该如何变化,如果仅仅是改变颜色还好说,但是如果是图像的旋转和缩放,对应的标签应该如何处理?因为原来图片中目标的位置已经发生变化了!

接下来,具体看下ImageNetPolicy的24(但是源码中class ImageNetPolicy(object)实际有25个subpolicy,不知为何)
按顺序调用这25种subpolicy,得到的结果如下:
原图:

结果:

对第一个subpolicy调用25次结果如下

可以看出,即使是同一个subpolicy,具体的变换参数还是有些许的随机性的(源码中确实是有random函数来控制具体的变化参数)

无论是25种subpolicy,还是每一个subpolicy不同的随机参数,这个图片的实体的位置还是没有发生较大的变化
但是对于扁长的图片,在处理后可能原来的位置有较大的变化:
原图:

处理后:

这种以后标签咋改是个问题。。。

AutoAugment 学习相关推荐

  1. 盘点深度学习中的各种数据增强技巧

    1 什么是数据增强? 数据增强也叫数据扩增,意思是在不实质性的增加数据的情况下,让有限的数据产生等价于更多数据的价值. 比如上图,第1列是原图,后面3列是对第1列作一些随机的裁剪.旋转操作得来. 每张 ...

  2. 【技术综述】深度学习中的数据增强方法都有哪些?

    很多实际的项目,我们都难以有充足的数据来完成任务,要保证完美的完成任务,有两件事情需要做好:(1)寻找更多的数据.(2)充分利用已有的数据进行数据增强,今天就来说说数据增强. 作者 | 言有三 编辑 ...

  3. 不做调参侠,重视数据及处理能力?吴恩达发起的Data-Centric赛事总结!

    赛题名称:Data-Centric AI Competition 比赛官网:https://https-deeplearning-ai.github.io/data-centric-comp/ 比赛链 ...

  4. 没有足够多的数据怎么办?计算机视觉数据增强方法总结

    ©PaperWeekly 原创 · 作者|燕皖 单位|渊亭科技 研究方向|计算机视觉.CNN 当没有足够多的数据量时该怎么办?学者们针对这一问题已经研发看各种巧妙的解决方案,以避在深度学习模型中数据少 ...

  5. MIT出品2017-2018深度学习最新进展汇总

    本文内容整理自MIT教育视频,讲解的是近两年来深度学习一些方面最现今的进展,类似于综述.本文将列举出内容的纲要,视频连接资源和PPT资源下载链接. 视频的纲要 Deep Learning: State ...

  6. Dropout也能自动化了,谷歌大神Quoc Le等人利用强化学习自动找寻模型专用Dropout...

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要5分钟 Follow小博主,每天更新前沿干货 在机器学习领域里,Dropout 是一个较为重要的方法,其可以暂时丢弃一部分神经元及其连接,进而 ...

  7. 「AutoML」激活函数如何进行自动学习和配置

    2019-10-26 12:48:04 大家好,欢迎来到专栏<AutoML>,在这个专栏中我们会讲述AutoML技术在深度学习中的应用.这一期讲述在激活函数设计中的应用. 作者&编 ...

  8. 元学习—Meta Learning的兴起

    来源:专知 [导读]元学习描述了训练深度神经网络相关的更高级别的元素.在深度学习文献中,"元学习"一词经常表示神经网络架构的自动化设计,经常引用" AutoML" ...

  9. 【深度学习】一文看尽深度学习各领域最新突破

    来源:<产业智能官> 想要了解深度学习各领域的最新进展? 看个视频就足矣. 该课程的PPT资料,下载地址如下: https://www.dropbox.com/s/v3rq3895r05x ...

最新文章

  1. Darknet_Yolov3模型搭建
  2. java从字符串中提取数字
  3. 交流一点CCNP学习经验
  4. Base64编码和解码
  5. 学长的求职经验 记录【就业创业信息网、求职流程、求职小细节】
  6. android获取app用户数据,Android 原生app获取用户授权访问Autodesk云应用数据
  7. python创建百万个文件_python百万sitemap制作
  8. java web传递参数_Javaweb的八种传值方式
  9. 【彩彩只能变身队】用户需求分析(一)—— 调查问卷
  10. python爬虫之豆瓣图片(一)
  11. (拓扑排序+并查集)HDU - 1811 Rank of Tetris
  12. 高质量通信gRPC入门,有了它,谁还用Socket
  13. Android 语言码_国家码
  14. windows图标文件夹_如何在Windows 10中获取Windows 7的旧文件夹图标
  15. 定义一个三角形的类来进行一些操作
  16. GoogleChrome与Firefox的那些事
  17. Qt 之 QSS(白色靓丽)
  18. 用微信h5棋牌源码来测量相机到目标的距离
  19. word文档封面免费下载_为Word 2007文档添加封面
  20. 探究L298N模块烧毁的原因

热门文章

  1. 俏江南“倒闭”真相:对员工好坏,直接决定了企业的生死!
  2. 兄弟Brother QL-720NW 驱动
  3. PHP源码加密,以前只知道zend guard,今天才知道,原来还有个 ioncube
  4. Vue组件里初始化组件,一对多
  5. 耳朵上的艺术品,飞利浦圈铁真无线耳机JT60无敌了!
  6. 多测师肖sir_高级金牌讲师_app测试之环境安装(001)
  7. 海外博士/博士后职位网站汇总
  8. 服务器显示器多少寸,怎么知道电脑显示器是多少寸
  9. mysql master_log_file_change master 未指定master_log_file
  10. 【Linux】【CentOS】CentOS 网络管理