• 自回归模型PixelCNN 的盲点限制以及如何修复


     

    前两篇文章我们已经介绍了自回归模型PixelCNNs,以及如何处理多维输入数据,本篇文章我们将关注 PixelCNNs 的最大限制之一(即盲点)以及如何改进以修复它。

    在前两篇文章中,我们介绍了生成模型PixelCNN 概念并研究了彩色 PixelCNN 的工作原理。PixelCNN 是一种学习像素概率分布的生成模型,未来像素的强度将由之前的像素决定。在以前的文章中,我们实现了两个 PixelCNN,并注意到性能并不出色。我们也提到提高模型性能的方法之一是修复盲点问题。在这篇文章中我们将介绍盲点的概念,讨论 PixelCNN 是如何受到影响的,并实现一种解决方案——Gated PixelCNN。

    盲点

    PixelCNN 学习图像中所有像素的条件分布并使用此信息进行预测。PixelCNN 将学习像素从左到右和从上到下的分布,通常使用掩码来确保“未来”像素(即正在预测的像素右侧或下方的像素)不能用于给定像素的预测。如下图A所示,掩码将当前被预测的像素(这对应于掩码中心的像素)“之后”的像素清零。但是这种操作导致并不是所有“过去”的像素都会被用来计算新点,丢失的信息会产生盲点。

    要了解盲点问题,让我们看上图B。在图B 中,深粉色点 (m) 是我们要预测的像素,因为它位于过滤器的中心。如果我们使用的是 3x3 掩码 (上图A.),像素 m 取决于 l、g、h、i。另一方面,这些像素取决于之前的像素。例如,像素g依赖于f、a、b、c,像素i依赖于h、c、d、e。从上图 B 中,我们还可以看到,尽管出现在像素 m 之前,但从未考虑像素 j 来计算 m 的预测。同样,如果我们想对 q、j、n、o 进行预测,则永远不会考虑(上图C橙色部分)。所以并非所有先前的像素都会影响预测,这种情况就被称为盲点问题。

    我们将首先看看pixelcnn的实现,以及盲点将如何影响结果。下面的代码片段展示了使用Tensorflow 2.0的PixelCNN实现掩码。

    观察原始PixelCNN的接收域(下图2中用黄色标记),我们可以看到盲点以及它是如何在不同层上传播的。在这本篇文章的第二部分,我们将使用改进版的PixelCNN,门控PixelCNN,它引入了一种新的机制来避免盲点的产生。

    图2:PixelCNN上盲点区域的可视化

    完整文章:

    自回归模型PixelCNN 的盲点限制以及如何修复

  • 相关阅读:
    decode(解码)与encode(编码)——python
    Appium环境准备(二)
    cannot bind to 127.0.0.1:5037解决方法
    使用adb命令获取包名
    cookie的弊端
    jquery点击弹出一个页面+点击X可关闭的部分
    实现AJAX的异步交互的步骤
    HTML5,jQuery,ajax基础面试
    js 基础面试题
    JavaScript,DOM经典基础面试题
  • 原文地址:https://www.cnblogs.com/deephub/p/15739676.html
Copyright © 2020-2023  润新知