专栏首页AI黑科技工具箱1.试水:可定制的数据预处理与如此简单的数据增强(上)
原创

1.试水:可定制的数据预处理与如此简单的数据增强(上)

开了专栏后的第一篇文章0.伏笔:图像读取方式以及效率对比没想到反响如此强烈,我分析了一下,一方面是有各位大佬点赞支持,另一方面,大家对于MXNet以及其他大家平时都会用的包会非常感兴趣,也愿意去剖析它的用处与好处。我也调整了一下思路,之后的文章自己希望以一种初学探讨方式和大家进行分享,希望大家多讨论,多交流~

上篇文章讲了关于图像读取的方法和对比,有很多同学也提醒我,很多深度学习框架都开始采用比较高效的读取方法。的确如此,二进制读取方式和多线程是标配,不论是热门的pytorch、Tensorflow、Keras还是冷的不行的CNTK、chainer等,都在数据读取方面做了相应的优化,今天给大家重点介绍一下,MXNet+Gluon在数据预处理和数据增强方面是如何进行的。

说实话,在我仔细研究了MXNet和Gluon是如何进行数据加载与数据增强的,不得不佩服DMLC真的很良心,提供了如此简单的接口和又方便又多样的数据处理工具库。

在早期,我在学习MXNet的时候,觉得不论是文档(早期文档我就不吐槽了)还是官方教程都很奇怪,它的使用基础介绍主要分为两部分:一个NDArray的操作,一个是Symbol的接口。实际上从后来大多数Github上的例子中可以看出,大家使用的基本都是通过Symbol进行神经网络图模型的构建。

但事实上,MXNet不仅仅是一个深度学习神经网络工具箱,它本身设计的初衷是一个科学计算库,可以大批量通过显卡进行数学计算,同时又加入了自动求导(话说这不就成了反向传播BP了么?),使得整个工具库变得全面,比如DMLC早期想单独把这一部分剥离开,做成minpy。

好了闲话不说了,我们进入正题。

回忆起初高中学的大多数计算都属于前向计算方法,最简单如之类的y=a*b+1可以直接在MXNet实现,具体可以看看NDArray - Imperative tensor operations on CPU/GPU这一部分。

后来我在想,那NDArray中的其他工具是不是也不完全只有神经网络才能用,莫非也可以直接拿来做前向计算?我准备用卷积Convolution运算进行开刀。

了解的同学应该知道,Convolution运算实际上还有个别的名称:掩膜运算。我是本科自动化,在学信号处理、数字图像处理的时候,学过所谓的滤波算法,比如中值滤波、高斯滤波等等,实际上是狭义上的卷积运算。那么我今天尝试用MXNet中的NDArray的各种工具,提取一个图像边缘轮廓信息。

图像的知识,大家可以自己搜索,我直接用一个Prewitt算子对图像做滤波,实现边缘信息提取。Prewitt算子是这样的一个结构:

$$ \begin{matrix} -1 & 0 & 1 \\ -1 & 0 & 1 \\ -1 & 0 & 1 \end{matrix} \tag{1} $$

我们只需要做一次Convolution卷积运算,同时将他的卷积核心设置成上述的Prewitt算子就好。

我们还是用二进制编码的方式打开图像并加载图像:

from mxnet import image
img = image.imdecode(open('../data/train/cats/cat.1234.jpg','rb').read())
imshow(img.asnumpy())

接下来,我们需要将图像转一下格式,因为普通的图像是(width, height, channel)这样的格式,而在MXNet通用的格式是(batch_size, channel, width, height),所以我们直接采用MXNet中的nd操作就好。

from mxnet import nd
img = nd.transpose(img, (2,0,1))/255. # 调整三个维度的顺序(c,w,h)
img = nd.stack(img, axis=0) # 在前面加上一维度(1,c,w,h)
print("image shape is:", img.shape)

image shape is: (1, 272, 345, 3)

之后就是重头戏,我们调用卷积函数Convolution,但是卷积函数需要几个参量,一个是输入数据(这个我们有了),权重weight,偏置bias,卷积核大小kernel:

weight = nd.array([[-1,0,1],[-1,0,1],[-1,0,1]]) #采用 Prewitt算子
weight = weight.broadcast_to((1,3,3,3)) # 广播成(1,3,3,3)大小的卷积核
bias = nd.zeros((1)) #设置偏置
kernel=(3,3)

这样我们就直接调用我们的大玩具了:

out = mx.nd.Convolution(data=img, weight=weight, bias=bias, kernel=kernel, num_filter=1)

我们看看结果怎么样:

sam = out[0][0].asnumpy()
imshow(sam, cmap='gray')

真的好好玩啊!这就可以了?要是我把整个过程移到显卡上,是不是就可以批量加速了?!

我再试试其他算子,这是考虑对角情况的sobel算子

weight = nd.array([[[-1,-1,-1],[-1,8,-1],[-1,-1,-1]]]) #采用8方向的Sobel算子

(如果我换成二阶算子应该也是可以的吧?)

大家不妨把脑洞打开的再大些:如果我从训练好的模型中,抽取出这些权重,是不是就可以自己写一个inference了?那么我就可以各种权重可视化了?中间层可视化?莫非我还可以根据权重大小来做卷积核的裁剪?如果我想在网络中输入的训练数据是边缘轮廓数据,莫非也可以中mx.nd来做预处理?以前老师让我们做的边缘提取什么分析的是不是也可以这么直接做了?

(这些脑洞和想法,我会在后续的文章中继续介绍与实践)

反正MXNet的这些操作可以用显卡进行加速!!~~

那么在本篇文章的后半部分,我会详细说说,我们怎么在MXNet中定制我们自己的数据增强,并且也会顺带介绍几种MXNet的数据加载方法,敬请期待~~~

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

登录 后参与评论
0 条评论

相关文章

  • 1.试水:可定制的数据预处理与如此简单的数据增强(下)

    上一部分我们讲了MXNet中NDArray模块实际上有很多可以继续玩的地方,不限于卷积,包括循环神经网络RNN、线性上采样、池化操作等,都可以直接用NDArra...

    SCP-173
  • 当你用VR看片时,百度已将AR用在营销上

    说VR是2016年“年度热词”并不为过,随着HTC VIVE、Oculus Rift、SONYPS VR三大明星产品的发布,VR正在迎来爆发,走向成熟。不过,总...

    罗超频道
  • 使用CNN-LSTM混合深度学习分类基于MUSE采集的运动想象EEG信号

    脑机接口(BrainComputer Interfaces)技术是将人脑与外部设备建立起直接的通路,在智能助残、人机工程、神经康复训练等领域有巨大的应用潜力。随...

    脑机接口社区
  • fMRI研究:长期嚼食槟榔对大脑功能网络的影响

    在我国很多地方,特别是南方地区,都有咀嚼槟榔(betelquid, BQ)的习惯。但是早在2003年,世界卫生组织国际癌症研究中心就已经将BQ认定为1级致癌物,...

    悦影科技
  • 静息态fMRI+图论研究:难治性精神分裂症的脑功能网络

    笔者比较关注精神疾病脑功能网络的变化特征,因此,最近都在看相关的文献。本次,笔者就给大家分享一篇相关的论文,该论文发表于《Schizophrenia Resea...

    悦影科技
  • 不用AI的彩妆店不是好专柜?

    人工智能赋能美妆早已不是新鲜事,经过前几年的“试水”,AI+彩妆似乎已在美妆行业形成一种风潮,逐渐改变了化妆品营销手段与产品研发的走向。而目前市场发展最成...

    用户2908108
  • 「唯物」“刷脸”没能进入消费领域,但“刷眼”也许可以

    前一段时间,有司机冒充赵薇老公到公证处通过人脸识别技术办理了委托公证证明,以委托人的身份卖掉了赵薇家一处价值千万的豪宅。这条新闻不禁让人们对于人脸识别的准确性和...

    AI研习社
  • Neuron:背侧流中θ振荡的选择性夹带可提高听觉工作记忆表现

    已经证实背侧流(Dorsal Stream)在工作记忆中操作听觉信息的作用。然而,该网络中的振荡动力学及其与行为的因果关系仍未明确。通过同步使用MEG/EEG...

    用户1279583
  • NeuroImage:经颅直流电刺激(tDCS)如何影响脑功能连接?

    经颅直流电刺激(tDCS)是一种无创的非侵入式神经调控技术,其可以通过微弱的直流电调控皮层神经元的兴奋性。大量的动物和人体实验已经表明tDCS可以引起极性特定的...

    悦影科技
  • PaddleWeekly | 超低代码!高性能部署方案PPQI正式开源

    开源发展至今,越来越多的开发者共享免费代码的同时,也将自己的项目和代码大方骄傲地分享出来。使用者自由的获得项目成果,贡献者找到成就和价值,然后,更多的开发者加入...

    用户1386409
  • 别再SOTA了,那叫“微调”!Science发文炮轰论文灌水

    为了一探究竟,来自MIT的研究人员,便对81种AI算法做了横测,结果令人大跌眼镜:

    Amusi
  • keras实现图像预处理并生成一个generator的案例

    接下来,给出我自己目前积累的代码,从目录中自动读取图像,并产生generator:

    砸漏
  • 别再SOTA了,那叫“微调”!Science发文炮轰论文灌水

    为了一探究竟,来自MIT的研究人员,便对81种AI算法做了横测,结果令人大跌眼镜:

    量子位
  • 思影科技功能磁共振(fMRI)数据处理业务

    随着技术的进步,功能磁共振成像(fMRI)已成为脑疾病、认知神经科学等领域的重要研究手段。思影科技紧随潮流,推出了一系列fMRI数据处理培训课程,广受相关领域...

    用户1279583
  • 定制化IDE选型笔记

    把IDE这样庞大的黑盒掀开一角,妄图进行深度定制,看起来那可真蠢,写写插件不好吗?之所以这样做,主要有2个原因:

    ayqy贾杰
  • 机器人也来写稿了,媒体记者、编辑的饭碗还端得稳吗?

    人工智能在传媒领域的实践已从最初的数据搜集,延展到内容生产、渠道分发等各环节。未来,在传媒业,人工智能可能取代人力吗,它会给这个行业带来哪些改变和影响? 作者 ...

    企鹅号小编
  • 伊顿调整双品牌销售体系,定制化成业务新亮点

    在花费数月时间与合作伙伴及专业咨询机构沟通探讨后,伊顿2016年已将“伊顿”与“山特”双品牌的销售体系完全独立;同时,其双品牌策略将保持不变。伊顿希望以此获得最...

    IT创事记
  • NeuroImage:脑网络分析揭示社交焦虑症患者的大脑功能环路异常

    社交焦虑症(SAD)是最常见的精神疾病之一,其通常伴随有精神共病症,严重的社交功能障碍,以及持续的情绪、认知和行为障碍。SAD的特点是焦虑加剧,对负面社会刺激的...

    悦影科技
  • 开源!mathAI手写拍照自动能解高数题,还不快试试?

    让我们不妨先来盘点下从 2016 年起过去三年间 Google I/O 开发者大会亮相的重磅 AI 产品:

    AI科技大本营

扫码关注腾讯云开发者

领取腾讯云代金券