热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pix2pix阅读笔记

介绍公式最起初GAN的代价函数:引入ConditionalGAN的代价函数:受到前人工作启发,在这基础上又加入了人L1代价函数ÿ
介绍公式

最起初GAN的代价函数:
在这里插入图片描述
引入Conditional GAN的代价函数:
在这里插入图片描述
受到前人工作启发,在这基础上又加入了人L1代价函数:

在这里插入图片描述
所以最终的目标函数就是:
在这里插入图片描述

为什么是conditional gan呢:

pix2pix对传统的GAN做了个小改动,它不再输入随机噪声,而是输入用户给的图片
在这里插入图片描述
但这也就产生了新的问题:我们怎样建立输入和输出的对应关系。此时G的输出如果是下面这样,D会判断是真图:
在这里插入图片描述
在这里插入图片描述

但如果G的输出是下面这样的,D拿来一看,也会认为是真的图片,也就是说,这样做并不能训练出输入和输出对应的网络G,因为是否对应根本不影响D的判断。

为了体现这种对应关系,解决方案也很简单,我们把G的输入和输出一起作为D的输入,于是现在的优化目标变成了这样:
在这里插入图片描述

为何使用L1范数而不是L2和L0范数:

L0范数本身是特征选择的最直接最理想的方案,其表示向量中所有非零元素的个数。正是L0范数的这个属性,使得其非常适合机器学习中稀疏编码,特征选择的应用。通过最小化L0范数,来寻找最少最优的稀疏特征项。但不幸的是,L0范数的最小化问题在实际应用中是NP难问题。因此实际应用中我们使用L1来得到L0的最优凸近似。L2相对于L1具有更为平滑的特性,在模型预测中,往往比L1具有更好的预测特性。当遇到两个对预测有帮助的特征时,L1倾向于选择一个更大的特征。而L2更倾向把两者结合起来。

稀疏编码起初是生物学家提出的,大致意思是我们看一个东西,这个画面是有上亿个像素的,但是每一副图像我们都只用很少的代价重建与存储,这就叫稀疏编码,即space coding。可以用0-1变量的思想理解,假设我们看这幅图像需要这个像素点,那这个像素的系数就为1,不需要就是0。L1和L0范数都可以实现,但是L2范数是不允许为0的,L2范数顶多说是趋于0。所以稀疏编码只有L0和L1可以。

L2范数通常是解决过拟合(overfitting,也称High variance)问题的。

文中的解释是:Using L1 distance rather than L2 as L1 encourages less blurring.
综合刚刚的介绍,我们可以知道,L2由于每一个都不会让他等于0,他把所有像素都糅合起来,而L0,L1就很干脆。

(这也是我自己的理解,如果有问题,还希望能告诉我)

Network architectures网络体系结构

1、Generator with skips

对于图像-图像问题传统生成器的网络结构Encoder-Decoder就是将输入的图像一步步下采样直到最底层(bottleneck layer)这层之后就会翻转,进行上采样,如左图左侧。但输入输出的图像有着很多的共享信息,比如说,输入一个轮廓图,输出着色图,这两张图片的轮廓就是共享的。我们应该用一个信息传输通道直接传输,而不是一层一层传输。于是就有了U-Net网络。为何这是“Generator with skips”,是因为直接跳过了底层。
在这里插入图片描述

2、Markovian discriminator (PatchGAN)

对于低频,L1可以处理很好,但是高频很模糊。因为只对高频建模,所以我们只要对于局部结构就行了,所以引入了一种鉴别器结构PatchGAN, PatchGAN和普通GAN判别器是有区别的,普通的GAN判别器是将输入映射成一个实数,即输入样本为真样本的概率.PatchGAN将输入映射为NxN的patch(矩阵)X,Xij的值代表每个patch为真样本的概率,将Xij求均值,即为判别器最终输出,X其实就是卷积层输出的特征图.从这个特征图可以追溯到原始图像中的某一个位置,可以看出这个位置对最终输出结果的影响.

评价标准

传统做法

每个像素的均方差MSE

本文做法


1、Amazon Mechanical Turk(AMT)

真人测试打分

2、FCN-score

(为此,我们采用流行的FCN-8s架构进行语义分割,并在cityscapes数据集上对其进行训练。然后,我们根据这些照片合成的标签进行分类准确性评分。)
介绍FCN:像素级别的分类,解决语义分割问题,他和CNN不同,CNN处理的图片的分类,他输入的是一个固定长度的特征向量,每一个值就表示属于哪一类图片的概率。FCN是不固定长度的,他从最底层的卷积层反卷积上采样,直到最后的图像和与原图尺寸相同为止。所以每个像素都产生了预测,最后在这个特征图上进行像素分类即可。
最终程序会输出相应的像素准确度、平均准确度、mean IU(均交并比)和频率加权交并比(frequency weighted IU)四个指标
(https://blog.csdn.net/lingzhou33/article/details/87901365对这几个指标的解释)

优点

pix2pix巧妙的利用了GAN的框架来为“Image-to-Image translation”的一类问题提供了通用框架。利用U-Net提升细节,并且利用PatchGAN来处理图像的高频部分。

缺点

训练需要大量的成对图片,比如白天转黑夜,则需要大量的同一个地方的白天和黑夜的照片。

pix2pix在线demo https://affinelayer.com/pixsrv/

以上是个人浅见,如有错误,还希望大家能够指出,谢谢大家。


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • 建立分类感知器二元模型对样本数据进行分类
    本文介绍了建立分类感知器二元模型对样本数据进行分类的方法。通过建立线性模型,使用最小二乘、Logistic回归等方法进行建模,考虑到可能性的大小等因素。通过极大似然估计求得分类器的参数,使用牛顿-拉菲森迭代方法求解方程组。同时介绍了梯度上升算法和牛顿迭代的收敛速度比较。最后给出了公式法和logistic regression的实现示例。 ... [详细]
author-avatar
小白一枚
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有