介绍在深度学习黑客竞赛中表现出色的技巧(或者坦率地说,是任何数据科学黑客竞赛) 通常归结为特征工程 。当您获得的数据不足以建立一个成功的深度学习模型时,你能发挥多少创造力?
我是根据自己参加多次深度学习黑客竞赛的经验而谈的,在这次深度黑客竞赛中,我们获得了包含数百张图像的数据集——根本不足以赢得甚至完成排行榜的顶级排名 。那我们怎么处理这个问题呢?
答案? 好吧,那要看数据科学家的技能了! 这就是我们的好奇心和创造力脱颖而出的地方 。这就是特征工程背后的理念——在现有特征的情况下,我们能多好地提出新特征 。当我们处理图像数据时,同样的想法也适用 。
这就是图像增强的主要作用 。这一概念不仅仅局限于黑客竞赛——我们在工业和现实世界中深度学习模型项目中都使用了它!
文章插图
图像增强功能帮助我扩充现有数据集,而无需费时费力 。而且我相信您会发现这项技术对您自己的项目非常有帮助 。
因此,在本文中,我们将了解图像增强的概念,为何有用以及哪些不同的图像增强技术 。我们还将实现这些图像增强技术,以使用PyTorch构建图像分类模型 。
目录
- 为什么需要图像增强?
- 不同的图像增强技术
- 选择正确的增强技术的基本准则
- 案例研究:使用图像增强解决图像分类问题
缺少数据使得我们的深度学习模型可能无法从数据中学习模式或功能,因此在未见过的数据上可能无法提供良好的性能 。
那么在那种情况下我们该怎么办?我们可以使用图像增强技术,而无需花费几天的时间手动收集数据 。
图像增强是生成新图像以训练我们的深度学习模型的过程 。这些新图像是使用现有的训练图像生成的,因此我们不必手动收集它们 。
文章插图
有多种图像增强技术,我们将在下一节讨论一些常见的和使用最广泛的技术 。
不同的图像增强技术图像旋转图像旋转是最常用的增强技术之一 。它可以帮助我们的模型对对象方向的变化变得健壮 。即使我们旋转图像,图像的信息也保持不变 。汽车就是一辆汽车,即使我们从不同的角度看它:
文章插图
因此,我们可以使用此技术,通过从原始图像创建旋转图像来增加数据量 。让我们看看如何旋转图像:
# 导入所有必需的库import warningswarnings.filterwarnings('ignore')import numpy as npimport skimage.io as iofrom skimage.transform import rotate, AffineTransform, warpfrom skimage.util import random_noisefrom skimage.filters import gaussianimport matplotlib.pyplot as plt% matplotlib inline
我将使用此图像演示不同的图像增强技术 。你也可以根据自己的要求尝试其他图片 。我们先导入图像并将其可视化:
# reading the image using its pathimage = io.imread('emergency_vs_non-emergency_dataset/images/0.jpg')# shape of the imageprint(image.shape)# displaying the imageio.imshow(image)
文章插图
这是原始图像 。现在让我们看看如何旋转它 。我将使用
推荐阅读
- 使用神经网络为图像生成标题
- 思科CISCO路由器基于时间的访问列表的应用
- 基于Docker的MySQL主从复制搭建及原理
- 基于ThinkPHP5.1.34 LTS开发的快速开发框架DolphinPHP
- 开源工具imagededup让查找重复图像变得更容易
- 一文看懂MySQL中基于XA实现的分布式事务
- 视频会议时:有声音但没图像,Why?
- 很棒的Mac平台图像处理软件
- 基于ThinkPHP5微信后台管理平台
- Java基于Solr海量数据搜索,搜索引擎的实现