0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

神经网络不喜欢明亮的颜色吗?

zhKF_jqr_AI 来源:未知 作者:李倩 2018-10-31 08:57 次阅读

当我们仔细观察神经网络生成的图像时,会经常看到棋盘样式的瑕疵。在一些特殊场景下这种现象更明显,尤其最近的模型。

更重要的是,这种棋盘伪影在颜色越鲜艳的区域越明显,这是为什么呢?难道神经网络不喜欢明亮的颜色吗?其实,造成这些伪影的原因很简单,不过想解决也很简单。

反卷积与重叠

当我们用神经网络生成图像时,通常会从低分辨率、高水平的描述中对其进行创造。网络可以表现粗略的图像并填充其中的细节。

为了做到这一点,我们需要将低分辨率的图像转换成高分辨率图像,这一过程通过反卷积操作进行。简单地说,反卷积图层可以让模型使用小图中的每个点来“绘制”一个更大的正方形。

但是,反卷积会很容易生成“不均匀的重叠”,使得某些区域比其他地方有更多抽象的结果。尤其是当核的尺寸(输出窗口的大小)不能被步长(顶部各点之间的距离)整除时,反卷积就会有不均匀的重叠。虽然理论上,网络可以通过权重避免这一现象,但实际上,神经网络想要完全消除这种现象是非常困难的。

重叠图案同样是二维的。两个轴上不均匀的重叠相乘,就能创造出不同程度的棋盘状伪影。

事实上,这种不均匀的重叠在两个维度上更明显,因为两个图案相乘,不均匀性是原来的平方。例如,在一维中,一个步长为2,尺寸为3的反卷积的输出是输入的两倍,但是在二维中就变成了四倍。

现在,神经网络在创造图像时通常使用多层的反卷积,经过迭代从低分辨率中创建更大尺寸的图像。虽然这些堆栈的反卷积可以消除伪影,但它们通常是混合的,会在多个尺度上产生棋盘伪影。

这些伪影在输出特殊颜色时会更加显眼,由于神经网络图层通常存在偏差(一种添加到输出中经过学习的值),很容易就输出平均色。如果一种颜色越偏离平均色,反卷积的作用就越大。

重叠和学习

理论上来说,我们的模型可以学习仔细写入不均匀重叠位置,从而让输出达到平衡。

但是要达到平衡有些难度,尤其是有多个通道的时候。想要避免伪影,就要严格限制可能用到的过滤器,牺牲模型部分性能。在实际中,神经网络要经过很长的学习才能完全避免这些伪影。

事实上,不仅仅是有着不均匀重叠的模型不会学习避免这种情况,那些有着均匀重叠的模型会经常学习核,也会造成相似的伪影。虽然对于不平均重叠来说这不是默认的情况,但对平均重叠卷积来说是很容易造成伪影的。

对过滤器来说,完全避免伪影仍然是非常重要的限制,实际上,伪影仍然会出现在这些模型中,虽然并不明显。

造成这一情况的可能有多种因素。例如,在生成对抗网络的情况下,一个关键要素可能是判别器和他的梯度,但是问题的主要还是反卷积。在最好的情况下,反卷积非常脆弱,因为它们很容易就表现出人工伪影,即使尺寸很小。最坏情况下,伪影的生成是反卷积的默认行为。

所以,还有其他上采样方法能避免伪影的出现吗?

更好的采样方法

为了避免这些瑕疵,我们想用另一种方法对反卷积进行规范。和反卷积不同,这种上采样方法不会将伪影的生成变为默认行为,理想情况下,它会进一步对抗这些伪影。

有一种方法可以确保你使用的核尺寸可以被步长整除,避免重叠。和“次像素卷积”相同,这种技术是最近提出的,在超分辨率图像上产生了巨大成功。但是,虽然这一方法有用,反卷积仍然会很容易地生成伪影。

另一种方法是将上采样分离后在更高分辨率的卷积上计算特征。例如,你可能会对图像尺寸进行改变,然后建立一个卷积层。这似乎是自然的做法,类似的方法在超分辨率图像上效果也很好。

反卷积和各种对卷积调整尺寸的方法都是线性操作,可以用矩阵解释,这也有助于我们了解它们之间的不同。

调整卷积层的尺寸可以用TensorFlow上的tf.image,resize_images( )实现,想得到最佳结果,在用tf.nn.conv2d( )进行卷积之前先使用tf.pad( )来避免边界上出现伪影。

图像生成结果

经过研究我们发现,用最近邻尺寸调整和一个卷积能在大部分语境下得出较好的结果。其中表现较好的是GAN,简单的对反卷积层进行调整,就能生成不同程度的伪影:

实际上,伪影的不同可以在训练之前就看到。如果我们看一张生成器输出的图像,初始权重是随机的,就能看到伪影。这说明伪影与生成图片的方法有关,与对抗训练无关。

另一种能够解释伪影并不是GAN独有的现象的原因是,我们将其放在另一种模型中时,调整卷积尺寸的上采样,仍然能发现这一现象。

结语

虽然用反卷积可以生成图像,但它也会导致伪影的出现。使用其他自然的替代方法可以消除这些棋盘伪影。同时,我们还提出了可以提高图像生成质量的神经网络方法,我们希望能帮助到多领域的研究者们。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4762

    浏览量

    100534
  • 图像
    +关注

    关注

    2

    文章

    1083

    浏览量

    40413

原文标题:用缩放CNN消除反卷积带来的棋盘伪影

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    神经网络教程(李亚非)

      第1章 概述  1.1 人工神经网络研究与发展  1.2 生物神经元  1.3 人工神经网络的构成  第2章人工神经网络基本模型  2.1 MP模型  2.2 感知器模型  2.3
    发表于 03-20 11:32

    神经网络简介

    神经网络简介
    发表于 08-05 21:01

    MATLAB神经网络

    MATLAB神经网络
    发表于 07-08 15:17

    神经网络基本介绍

    神经网络基本介绍
    发表于 01-04 13:41

    神经网络资料

    基于深度学习的神经网络算法
    发表于 05-16 17:25

    全连接神经网络和卷积神经网络有什么区别

    全连接神经网络和卷积神经网络的区别
    发表于 06-06 14:21

    卷积神经网络如何使用

    卷积神经网络(CNN)究竟是什么,鉴于神经网络在工程上经历了曲折的历史,您为什么还会在意它呢? 对于这些非常中肯的问题,我们似乎可以给出相对简明的答案。
    发表于 07-17 07:21

    【案例分享】ART神经网络与SOM神经网络

    今天学习了两个神经网络,分别是自适应谐振(ART)神经网络与自组织映射(SOM)神经网络。整体感觉不是很难,只不过一些最基础的概念容易理解不清。首先ART神经网络是竞争学习的一个代表,
    发表于 07-21 04:30

    人工神经网络实现方法有哪些?

    人工神经网络(Artificial Neural Network,ANN)是一种类似生物神经网络的信息处理结构,它的提出是为了解决一些非线性,非平稳,复杂的实际问题。那有哪些办法能实现人工神经网络呢?
    发表于 08-01 08:06

    什么是LSTM神经网络

    简单理解LSTM神经网络
    发表于 01-28 07:16

    如何构建神经网络

    原文链接:http://tecdat.cn/?p=5725 神经网络是一种基于现有数据创建预测的计算系统。如何构建神经网络神经网络包括:输入层:根据现有数据获取输入的层隐藏层:使用反向传播优化输入变量权重的层,以提高模型的预测
    发表于 07-12 08:02

    基于BP神经网络的PID控制

    最近在学习电机的智能控制,上周学习了基于单神经元的PID控制,这周研究基于BP神经网络的PID控制。神经网络具有任意非线性表达能力,可以通过对系统性能的学习来实现具有最佳组合的PID控制。利用BP
    发表于 09-07 07:43

    神经网络移植到STM32的方法

    神经网络移植到STM32最近在做的一个项目需要用到网络进行拟合,并且将拟合得到的结果用作控制,就在想能不能直接在单片机上做神经网络计算,这样就可以实时计算,不依赖于上位机。所以要解决的主要是两个
    发表于 01-11 06:20

    卷积神经网络模型发展及应用

    卷积神经网络模型发展及应用转载****地址:http://fcst.ceaj.org/CN/abstract/abstract2521.shtml深度学习是机器学习和人工智能研究的最新趋势,作为一个
    发表于 08-02 10:39

    什么是神经网络?什么是卷积神经网络

    在介绍卷积神经网络之前,我们先回顾一下神经网络的基本知识。就目前而言,神经网络是深度学习算法的核心,我们所熟知的很多深度学习算法的背后其实都是神经网络
    的头像 发表于 02-23 09:14 3348次阅读