数据增强系列(2)如何使用Augly库进行数据增强
在机器学习和深度学习中,拥有更多数据对于帮助您从模型中获得良好性能非常重要。您可以使用称为数据增强 的技术来创建更多数据。数据增强是从业者用来通过从现有数据创建修改后的数据来增加数据的技术。
如果您的项目数据集很小,或者您想减少 ML 或深度学习 (DL) 模型中的过度拟合,那么使用数据增强技术是一种很好的做法。
在本文中,您将学习如何使用来自 Facebook 的名为Augly的新开源库来执行数据增强。
1. 什么是Augly?
AugLy 是一个数据增强库,可以帮助您评估和提高模型的稳健性。该库支持四种模式(音频、视频、图像和文本),并且包含 100 多种执行数据增强的方法。
如果您正在从事使用音频、视频、图像或文本数据集的机器学习或深度学习项目,您可以使用此库来增加数据并提高模型性能。
该库由 Facebook AI 的软件工程师 Joanna Bitton、FAIR 的研究工程师 Zoe Papakipos 以及 Facebook 的其他研究人员和工程师开发。
该库已用于不同的项目,例如:
- 图像相似性挑战:由 Facebook AI 举办的 NeurIPS 2021 竞赛,奖金为 20 万美元。它已经生成了 DISC21 数据集,该数据集将在挑战结束后公开发布!
- DeepFake 检测挑战赛:由 Facebook AI 在 2020 年举办的 Kaggle 竞赛,奖金为 100 万美元;还生成了 DFDC 数据集。
- SimSearchNet :Facebook AI 开发的一种近似重复的检测模型,用于识别平台上的侵权内容。
2.如何安装Augly?
AugLy 是一个 Python 3.6+ 库。它可以通过以下方式安装:
pip install augly
注意:上述命令仅安装使用图像和文本模式的基本要求。对于音频和视频模式,您可以安装所需的额外依赖项
pip install augly[av]
在某些环境中,pip 不会按预期安装 python-magic。在这种情况下,您需要另外运行:
conda install -c conda-forge python-magic
3.文本数据的数据增强技术
import augly.text as textaugs
然后创建一个简单的文本输入。
# Define input text
input_text = "Hello, world! Today we learn Data Augmentation techniques"
现在我们可以应用各种增强如下:
3.1模拟错别字
使用拼写错误、键盘距离和交换技术模拟每个文本中的拼写错误。
print(textaugs.simulate_typos(input_text))
# Hello, world! Today ew leanr Dtaa Augmentation techniques
正如您所看到的,这种技术增加了一些拼写错误并交换了一些文本单词。
3.2插入标点符号
您可以在每个输入文本中插入标点符号。
print(textaugs.insert_punctuation_chars(input_text))
# ['H,e,l,l,o,,, ,w,o,r,l,d,!,,T,o,d,a,y, ,w,e, ,l,e,a, r,n, ,D,a,t,a, ,A,u,g,m,e,n,t,a,t,i,o,n, ,t,e,c,h,n,i ,q,u,e,s']
3.3双向替换
这种技术反转每个输入文本中的每个词(或词的一部分),并使用双向标记以原始顺序呈现文本。它单独反转每个单词,即使换行也能保持词序。
print(textaugs.replace_bidirectional(input_text))
# ['\u202eseuqinhcet noitatnemguA ataD nrael ew yadoT !dlrow ,olleH\u202c']
3.4替换相似字符
这会用相似的字符替换每个文本中的字母。
print(textaugs.replace_similar_chars(input_text))
# Hello, wor7d! T()day we learn Data Augm3^tati[]n techniques
如您所见,字符“l”已替换为数字7,字符“o”已替换为“()”,字符“e”已替换为数字3,然后字符“o”已替换为“[]”。
3.5倒置更换
这会根据粒度颠倒文本中的单词。
print(textaugs.replace_upside_down(input_text))
# sǝnbᴉuɥɔǝʇ uoᴉʇɐʇuǝɯɓnⱯ ɐʇɐᗡ uɹɐǝl ǝʍ ʎɐpoꞱ ¡plɹoʍ 'ollǝH
3.6分词
此函数将文本中的单词拆分为子单词。
print(textaugs.split_words(input_text))
# He llo, world! To day we learn Data Augmentation techniques
4.图像数据的数据增强技术
第一步是导入图像模态及其依赖项,其中包含图像数据的增强技术。
import os
import augly.image as imaugs
import augly.utils as utils
from IPython.display import display
现在我们可以应用各种增强如下:
4.1图像缩放
缩放功能可以帮助您改变图像的分辨率。您可以使用一个名为factor的参数来定义图像缩小或放大的比例。
input_img_path = "images/simple-image.jpg"
# We can use the AugLy scale augmentation
input_img = imaugs.scale(input_img_path, factor=0.2)
display(input_img)
4.2模糊图像
在这个函数中,半径越大,图像越模糊。
input_img = imaugs.blur(input_img, radius=5.0)
display(input_img)
4.3改变图像的亮度
要更改亮度,您需要调整此函数中的因子参数。小于 1.0 的值会使图像变暗,大于 1.0 的值会使图像变亮。将因子设置为 1.0 不会改变图像的亮度。
让我们将因子的值设置为 1.5。
input_img = imaugs.brightness(input_img,factor=1.5)
display(input_img)
然后让我们将因子的值设置为0.5以使其更暗。
#make it darker
input_img = imaugs.brightness(input_img,factor=0.5)
display(input_img)
4.4改变图像的纵横比
在此函数中,纵横比是您要创建的新图像的宽度/高度。
input_img = imaugs.change_aspect_ratio(input_img, ratio=0.8)
display(input_img)
4.5改变图像的对比度
在这个函数中,因子参数处理一切,当你将因子设置为零时,它会给出一个灰度图像,低于 1.0 的值会降低对比度,系数 1.0 给出原始图像,大于 1.0 的系数增加对比度。
input_img = imaugs.contrast(input_img,factor=1.7)
display(input_img)
4.6裁剪图像
要裁剪图像,您需要定义裁剪图像的左上、右上和下边缘的位置。
input_img = imaugs.crop(input_img,x1=0.25,x2=0.75,y1=0.25,y2=0.75)
display(input_img)
正如我之前解释过的,该库有100 多种增强技术,本文未涵盖其中的大部分。
参考目录
https://hackernoon.com/how-to-perform-data-augmentation-with-augly-library-bn1f37y4
数据增强系列(2)如何使用Augly库进行数据增强相关推荐
- 数据科学系列:plotly可视化入门介绍
导读 在入道数据岗位之初,曾系列写过多个数据科学工具包的入门教程,包括Numpy.Pandas.Matplotlib.Seaborn.Sklearn等,这些也构成了自己当初的核心工具栈.在这5个工具包 ...
- 【大数据Flink系列】Flink教程:详细全部
[大数据Flink系列]Flink 核心概念综述 [大数据Flink系列]Flink单机模式和集群搭建 [大数据Flink系列] Flink 开发环境搭建 [大数据Flink系列]Flink Data ...
- “数据星河”系列沙龙——走进ABC科创企业•哈勃智远活动成功举办
9月6日下午,"数据星河"系列沙龙--走进ABC科创企业哈勃智远活动成功举办.本期沙龙是在北京科学技术开发交流中心的指导下,由九次方大数据.ABC科创联盟.哈勃智远主办,创业公社联 ...
- 【大数据Spark系列】Spark教程:详细全部
Spark作为Apache顶级的开源项目,是一个快速.通用的大规模数据处理引擎,和Hadoop的MapReduce计算框架类似,但是相对于MapReduce,Spark凭借其可伸缩.基于内存计算等特点 ...
- python数据存储与读取_【Python爬虫】数据保存与读取
1. Open方法 使用with open()新建对象 写入数据 # -*- coding: utf-8 -*- # __author__ = 'Carina' import requests imp ...
- python读取网络端口数据_在Python中从SNMP端口获取数据
我专门尝试使用PySNMP库从python中的SNMP端口读取数据.我有兴趣仅通过此库获取数据.这是因为我正在从NetSNMP迁移到PySNMP. 这是我为NetSNMP编写的工作代码,它实际上为我提 ...
- Python深度学习-Data Augmentation:使用Augly库进行图片数据增强
Augly AugLy 是一个数据增强库,可以帮助评估和提高模型的稳健性.该库支持四种模式(音频.视频.图像和文本),并且包含 100 多种执行数据增强的方法.如果正在从事使用音频.视频.图像或文本数 ...
- Python数据分析学习系列 十三 Python建模库介绍
Python数据分析学习系列 十三 Python建模库介绍 资料转自(GitHub地址):https://github.com/wesm/pydata-book 有需要的朋友可以自行去github下载 ...
- 数据增强系列(1)top10数据增强技术:综合指南
数据增强技术就是人为地生成真实数据集的不同版本以增加其数据大小.计算机视觉(CV)和自然语言处理 (NLP) 模型使用数据增强策略来处理数据稀缺和数据多样性不足的问题. 数据增强算法可以提高机器学习模 ...
最新文章
- OpenCV官方文档
- JavaScript 工作原理之五-深入理解 WebSockets 和带有 SSE 机制的HTTP/2 以及正确的使用姿势(译)...
- tableau实战系列(十八)-通过可视化实现购物篮关联分析( Market Basket Analysis),关联物品之间的关联关系
- .html天气预报上蔡,上蔡天气预报15天
- 晶科能源与森源电气签订300MW光伏组件供货协议
- HDOJ-3790-最短路径问题 解题报告
- 基于linux环境采用update-alternatives 方式进行python版本切换
- 使用Kotlin开发Android应用初体验
- gridview排序加箭头(二)
- java 预览office_java在线预览office
- BytePS源码解析
- cydia所有中文源地址_Cydia中文源大全.doc
- 段码超低功耗LCD液晶显示驱动芯片(IC)-VKL系列-VKL128/060/076/144A/144B,VKL144A兼容MCP144
- 小试ESP8266(一) 一只电阻, 几条语句, 摆脱深度睡眠反复重启的困扰
- ClickHouse在各大厂的最佳实践
- SpringBoot从入门到入土 (6)HelloWorldSpringBoot项目开发实战
- python爬虫——https请求
- dos2unix命令找不到怎么办
- 超级照片美化技法:炫目的舞台光斑效果
- 一个利用浏览器原生execCommand()方法实现的富文本编辑器