当前位置: 首页 > 编程日记 > 正文

无需成对示例、无监督训练,CycleGAN生成图像简直不要太简单

640?wx_fmt=jpeg


作者 |  Jason Brownlee

译者 |  Freesia,Rachel

编辑 |  夕颜

出品 | AI科技大本营(ID: rgznai100)


【导读】图像到图像的转换技术一般需要大量的成对数据,然而要收集这些数据异常耗时耗力。因此本文主要介绍了无需成对示例便能实现图像转换的 CycleGAN 图像转换技术。文章分为五部分,分别概述了:图像转换的问题;CycleGAN 的非成对图像转换原理;CycleGAN 的架构模型;CycleGAN 的应用以及注意事项。

图像到图像的转换涉及到生成给定图像的新的合成版本,并进行特定的修改,例如将夏季景观转换为冬季。

训练图像到图像的转换模型通常需要一个大的成对数据集。这些数据集准备起来既困难又昂贵,而且在某些情况下是不可行的,比如已故许久的艺术家的画作照片。

CycleGAN 是一种无需成对示例便可自动进行图像到图像转换的技术。这些模型是采用一批无需关联的来自源域和目标域的图像,以一种无监督的方式训练的。

这一简单的技术非常强大,在一系列应用领域中取得了令人印象深刻的视觉效果,最著名的便是将马的照片转换成斑马(或相反)。

在这篇文章中,你将了解非成对的 CycleGAN 图像到图像的转换技术。

读完这篇文章,你将了解到:


  • 图像到图像翻译涉及到对图像的受控修改,需要大量成对图像的数据集,这些数据集很复杂,准备起来很麻烦,有时甚至不存在。

  • CycleGAN 是一种通过 GAN 架构训练的无监督图像翻译模型的技术,采用来自 GAN 两个不同领域的非成对的图像集合。

  • CycleGAN 已经有了一系列应用,包括季节转换、物体变形、风格转换和将照片转化为画作。


在我关于 GANs 的新书中,我将通过 29 步的教程和完整的源代码教你如何开发 DCGAN,有条件 GANs,Pix2Pix,CycleGANs 等更多深度学习模型。

我们这就开始吧。

640?wx_fmt=png      CycleGAN简介(图片为  Trish Hartmann 拍摄,保留部分版权)


概览:


这一教程分为五部分,分别为


  1. 图像到图像转换的问题

  2. CycleGAN 的非成对图像转换

  3. 何为 CycleGAN 架构模型

  4. CycleGAN 的应用

  5. CycleGAN 的操作建议


图像到图像转换的问题


图像到图像的转换是一个图像合成任务,它要求生成一个对给定图像受控修改后的新图像。

图像到图像的转换是一种视觉图形问题,其目的是使用对齐图像对的训练集,学习输入图像和输出图像之间的映射。

— Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks, 2017. (https://arxiv.org/abs/1703.10593)

图像到图像转换的示例包括:

  • 将夏季景观转换为冬季景观(或相反)。

  • 把画作转换成照片(或相反)。

  • 把马转换成斑马(或相反)。


传统意义上,训练图像到图像的转换模型需要一个由成对示例组成的数据集。这个大型数据集要包含一张输入图片 X (如夏季景观),以及带有预期修改的可作为输出预期图像 Y 的照片(如冬季景观)。

训练时数据集必须要成对这一要求是其局限性所在。这些数据集具有挑战性,准备成本也很高,例如不同条件下不同场景的照片。

在许多情况下,数据集根本不存在,比如名画和它们对应的照片。

然而,获取成对的训练数据是困难和昂贵的。[…]为图形任务(如艺术风格化)获取输入-输出对可能更加困难,因为所需的输出非常复杂,通常需要艺术创作。对于许多任务,例如物体变形(例如,斑马<->马),所需的输出甚至没有很好的定义。

— Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks, 2017. (https://arxiv.org/abs/1703.10593)

因此,我们需要一种不需要成对示例的图像到图像翻译系统训练技术。具体来说,这种技术可以使用任意两个不相关图像的集合,并从每个集合中提取一般特征,并用于图像转换过程。

例如,首先应用大量夏季景观照片集合和大量场景和位置都不相关的冬季景观照片集合,要求能够将特定的照片从一组转换到另一组。

这就是所谓的非成对的图像到图像的转换问题。


CycleGAN 非成对图像转换


CycleGAN 是一种成功的非成对图像到图像的转换方法。

CycleGAN 是一种利用生成对抗网络,或者说 GAN 模型架构训练图像到图像转换模型的方法。

我们提出了一种方法,可以学习[捕获]一个图像集的特性,并找出如何在没有任何成对训练示例的情况下,将这些特征转换为另一个图像集。

— Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks, 2017.(https://arxiv.org/abs/1703.10593)

GAN 架构是一种训练图像合成模型的方法,它由两个模型组成:发生器模型和判别器模型。生成器将来自潜在空间的一个点作为输入,并从域中生成新的可信图像,判别器将图像作为输入,并预测它是真的(来自数据集)还是假的(生成的)。在游戏中训练这两个模型,这样生成器可以不断更新以更好地 “欺骗” 判别器,判别器也会不断更新以更好地检测生成的图像。

CycleGAN 是 GAN 架构的一个分支,它可以同时进行两个生成器模型和两个判别器模型训练。

一个生成器从第一个域获取图像作为第二个域的输入和输出图像,另一个生成器从第二个域获取图像作为输入图像并从第一个域生成图像。然后使用判别器模型确定生成的图像的合理性,并相应地更新生成器模型。

仅此扩展就足以在每个域中生成可信的图像,但不足以生成输入图像的转换图像。

单独的对抗性损耗不能保证习得的函数可以将单个输入 xi  映射到期望的输出 yi  。

— Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks, 2017.(https://arxiv.org/abs/1703.10593)

CycleGAN 对架构的扩展之处在于使用了循环一致性。第一个生成器输出的图像可以用作第二个生成器的输入图像,第二个生成器的输出图像应与原始图像匹配。相反地,第二个生成器的输出图像可以作为第一个生成器的输入图像,结果应该与第二个生成器的输入图像相匹配。

循环一致性是机器翻译的一个概念,指从英语翻译成法语的短语同样可以从法语翻译回英语,语意不变。反之亦然。

我们遵循翻译应该具有“循环一致性”的性质,即如果我们把一句话从英语翻译成法语,然后再把它从法语翻译成英语,就应该得到原来的句子。

— Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks, 2017.(https://arxiv.org/abs/1703.10593)

CycleGAN 通过增加额外的损耗来测量第二个生成器生成的输出图像与原始图像之间的差异,来强化循环一致性,反之亦然。这是对生成模型的规范化,这引导着新领域中的图像生成过程走向图像转换过程。


何为 CycleGAN 架构模型?


初识 CycleGAN,其架构似乎很复杂。

让我们花点时间来逐步了解所有涉及的模型及其输入和输出。

来考虑一下我们在完成从夏天到冬天及从冬天到夏天的图像转换中需要关注的问题。

我们有两组不成对的图像,这意味着它们是在不同时间不同地点的照片;冬季和夏季的图像中没有完全相同的场景。


  • 集合1:夏季景观图像。

  • 集合2:冬季景观图像。

我们将开发一个包含两个 GANs 的架构,每个 GANs 都有一个判别器和一个生成器模型,这意味着架构中总共有四个模型。

第一个 GAN 可以根据夏天的图像生成冬天的图像,第二个 GAN 会根据冬天的图像生成夏天的图像。


  • GAN 1: 把夏季图像(集合1)转换成冬季图像(集合2)。

  • GAN 2: 将冬季图像(集合2)转换成夏季图像(集合1)。


每个 GAN 都有一个有条件的生成器模型,该模型将合成给定的输入图像。每个 GAN 都有一个判别器模型来预测生成的图像来自目标图像集合的可能性。GAN 的判别器和生成器模型就像标准 GAN 模型一样,在正常的对抗损耗下训练。

我们可以将 GAN 1 的生成器和判别器模型总结如下:


  • 生成器模型 1:

    • 输入:选取夏季图像 ( 集合1 ).

    • 输出:  生成冬季图像 ( 集合2 ).

  • 判别器模型 1:

    • 输入: 从集合 2 选取冬季图像,从生成器 1 输出。

    • 输出: 图像来自集合 2 的可能性。


同样,我们可以将 GAN2 的生成器和判别器模型总结如下:


  • 生成器模型 2:

    • 输入:选取冬季图像 ( 集合2 ).

    • 输出:生成夏季图像 ( 集合1 ).

  • 判别器模型 2:

    • 输入: 从集合 1 选取夏季图像,从生成器 2 输出。

    • 输出: 图像来自集合 1 的可能性。


到目前为止,这些模型足以在目标域中生成可信的图像,但不能转换输入图像。

每个 GAN 也根据循环一致性损耗进行更新。这是为了强化目标域中由输入图像转换而来的合成图像。

循环一致性损耗将输入照片与 Cycle GAN 的生成照片进行比较,并计算两者之间的差异,例如使用 L1 范数或像素值的绝对差之和。

有两种方法计算循环一致性损耗,并用于更新每个训练迭代的生成器模型。

第一个 GAN (GAN 1) 将获取夏季景观的图像,生成冬季景观的图像,该图像作为第二个 GAN (GAN 2) 的输入,又将生成夏季景观的图像。循环一致性损耗计算了 GAN 1 的图像输入和 GAN 2 的图像输出之间的差异,并相应地更新了生成模型,以减少图像中的差异。

这是一个循环一致性损耗的正向循环。同样的过程在生成器 2 到生成器 1 的反向循环一致性损耗时会逆转过来,还会将冬季原始照片与冬季生成照片进行比较。


  • 正向循环一致性损耗:

    • 向 GAN 1 中输入夏季图像(集合 1 )

    • 从 GAN 1 中输出冬季图像

    • 从 GAN 1 向 GAN 2 输入冬季图像

    • 从 GAN 2 中输出夏季图像

    • 将夏季图像(集合 1 )与 GAN 2 中的夏季图像作对比

  • 反向循环一致性损耗:

    • 向 GAN 2 中输入冬季图像(集合 2 )

    • 从 GAN 2 中输出夏季图像

    • 从 GAN 2 向 GAN 1 输入夏季图像

    • 从 GAN 1中输出冬季图像

    • 将冬季图像(集合 2 )与 GAN 1 中的冬季图像作对比


CycleGAN 的应用


CycleGAN 有许多有趣的应用。本部分中介绍了五类具体的应用,以展示 CycleGAN 这一技术的应用能力。


风格转换


风格转换指学习一个领域的艺术风格并将该艺术风格应用到其他领域,一般是将绘画的艺术风格迁移到照片上。

下图展示了使用 CycleGAN 学习莫奈、梵高、塞尚、浮世绘的绘画风格,并将其迁移到风景照上的结果。

640?wx_fmt=png       风格转换示例,使用 CycleGAN 将名画的艺术风格迁移到风景照上。


物体变形


物体变形指将物体从一个类别转换到另一个类别,例如将狗转换为猫。在下面的示例中, CycleGAN 实现了斑马和马的照片间的相互转换。由于马和斑马除了在皮肤颜色上有所差异外,其大小和身体结构都很相似,因此这种转换是有意义的。

640?wx_fmt=png       物体变形示例,使用 CycleGAN 实现马和斑马之间的相互转换。

在下面的示例中,CycleGAN 将图片中的苹果和橘子进行了相互的转换。与上一个示例的相同之处在于,苹果和橘子的大小和结构相似,因此这一转换同样合理。

640?wx_fmt=png       物体变形示例,使用 CycleGAN 实现苹果和橘子之间的相互转换。

季节转换


季节转换指将在某一季节拍摄的照片转换为另一个季节的照片,例如将夏季的照片转换为冬季。在下面的示例中, CycleGAN 实现了冬天和夏天拍摄的风景照之间的相互转换。

640?wx_fmt=png       季节转换示例,使用 CycleGAN 对冬夏风景照进行相互转换。

使用绘画生成照片


使用绘画生成照片指使用给定的绘画合成像照片一样逼真的图片,一般使用著名画家的画作或著名的风景画进行生成。在下面的示例中, CycleGAN 将莫奈的一些名画合成为了类似照片的图片。

640?wx_fmt=png       绘画翻译示例,使用 CycleGAN 将莫奈的绘画转换为近似照片的图片。

图像增强


图像增强指通过某种方式对原图片质量进行提升。下面的示例通过增加景深对近距离拍摄的花卉照片进行了增强。

640?wx_fmt=png       照片增强示例,使用 CycleGAN 增加绘画照片的景深以增强图片。


使用 CycleGAN 的注意事项


CycleGAN 的论文给出了一些使用 CycleGAN 时需要注意的内容。

在 CycleGAN 中,生成器的使用基于 Justin Johnson 在2016年发表的关于风格迁移的论文,论文名称为:

“Perceptual Losses for Real-Time Style Transfer and Super-Resolution”(https://arxiv.org/abs/1603.08155)。

CycleGAN 的生成器使用深度卷积 GAN 进行构建,该结构使用了多个残差块。鉴别器使用PatchGAN 进行构建, PatchGAN 的具体内容可参考 Phillip Isola 等人在2016年发表的论文:

“Image-to-Image Translation with Conditional Adversarial Networks”(https://arxiv.org/abs/1611.07004)。


鉴别器的作用为判断当前 n*n 的 patch 为真或假。我们在整个图片上卷积地使用这个鉴别器,并求所有结果的平均值作为 D 的最终输出。


在鉴别器中使用 PatchGAN 的目的是对输入图片中大小为 70*70 的 patch 进行判断,查看是否属于当前领域或是一个生成的图片。模型对每一个 patch 的计算结果求均值,并作为最终输出。

CycleGAN 中的对抗损失的构建基于一个最小二乘损失函数,该函数的具体内容可参考 Xudong Mao 等人在2016年发表的论文“Least Squares Generative Adversarial Networks”。

本文提出了最小二乘生成对抗网络(LSGANs),该网络的鉴别器使用了使用最小二乘损失函数。其原理为,最小二乘函数对距离正确一侧较远的样本施加惩罚,以使假样本向决策边界移动。

——“Least Squares Generative Adversarial Networks”,2016

另外, CycleGAN 增加了一个大小为50的生成图片缓冲器而不是直接将生成图片输出,该缓冲器用于对鉴别器模型进行更新,具体可参考 Ashish Shrivastava 在2016年发表的论文:

“Learning from Simulated and Unsupervised Images through Adversarial Training”(https://arxiv.org/abs/1612.07828)。

本文介绍了一个提升对抗训练稳定性的方法,该方法通过使用经过加工的图片训练鉴别器,而不再使用原始图片。

——“Learning from Simulated and Unsupervised Images through Adversarial Training”,2016

CycleGAN 的训练使用了 Adam 随机梯度下降,首先使用较小的学习速率进行100个 epoch 的学习,之后再进行100个 epoch 的学习并使学习率逐渐衰减,在每一个图片处理完成后对模型进行更新。

CycleGAN 的更多细节可参考论文附录中关于每个数据集的说明,该说明对模型的架构进行了详细解释。


拓展阅读


本部分提供了一些相关文章,可作为参考。


论文

  • Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks, 2017.(https://arxiv.org/abs/1703.10593)

  • Perceptual Losses for Real-Time Style Transfer and Super-Resolution, 2016.(https://arxiv.org/abs/1603.08155)

  • Image-to-Image Translation with Conditional Adversarial Networks, 2016.(https://arxiv.org/abs/1611.07004)

  • Least squares generative adversarial networks, 2016.(https://arxiv.org/abs/1611.04076)

  • Learning from Simulated and Unsupervised Images through Adversarial Training, 2016.(https://arxiv.org/abs/1612.07828)


文章

  • Understanding and Implementing CycleGAN in TensorFlow

(https://hardikbansal.github.io/CycleGANBlog/)

  • CycleGAN Project (official), GitHub

    (https://github.com/junyanz/CycleGAN/)

  • CycleGAN Project Page (official)

(https://junyanz.github.io/CycleGAN/)


原文链接:

https://machinelearningmastery.com/what-is-cyclegan/?fbclid=IwAR0DBMSN4nTQTdH8F4F3jSEEw9yxNpKKUZUEVBmcN2x8HBOT0Cdd9JlyGPs


(*本文为 AI科技大本营原创文章,转载请联系微信 1092722531)


福利时刻



入群参与每周抽奖~

扫码添加小助手,回复:大会,加入福利群,参与抽奖送礼!

640?wx_fmt=jpeg

AI ProCon 2019 邀请到了亚马逊首席科学家@李沐,在大会的前一天(9.5)亲授「深度学习实训营」,通过动手实操,帮助开发者全面了解深度学习的基础知识和开发技巧。还有 9大技术论坛、60+主题分享,百余家企业、千余名开发者共同相约 2019 AI ProCon!距离5折优惠票结束还有4天!

640?wx_fmt=jpeg


推荐阅读

  • 从不温不火到炙手可热:语音识别技术简史

  • ImageNet错误率小于4%,数据量依然不够,N-Shot Learning或是终极解决之道?

  • NLP机器翻译深度学习实战课程基础 | 深度应用

  • 重磅!全球首个可视化联邦学习产品与联邦pipeline生产服务上线

  • 用Python的算法工程师们,编码问题搞透彻了吗?

  • Python冷知识,不一样的技巧带给你不一样的乐趣

  • 90 后程序员健康现状:掉头发、油腻、腰椎间盘突出……| 程序员有话说

  • 真相了!AI 程序员:我们根本没有 80w 年薪好么?

  • CSDN & 火星财经, 联手发起Libra超级节点竞选!

  • 干货!学霸用12个决策模型告诉你,如何判断你到底需不需要区块链!

640?wx_fmt=png

你点的每个“在看”,我都认真当成了喜欢

相关文章:

Git使用常见问题解决方法汇总

1. 在Ubuntu下使用$ git clone时出现server certificate verification failed. CAfile:/etc/ssl/certs/ca-certificates.crt CRLfile: none 解决方法&#xff1a;在执行$ git clone 之前&#xff0c;在终端输入&#xff1a; export GIT_SSL_NO_VERIFY1 2. 在Windows上更新了…

服务器监控常用命令

在网站性能优化中&#xff0c;我们经常要检查服务器的各种指标&#xff0c;以便快速找到害群之马。大多情况下&#xff0c;我们会使用cacti、nagois或者zabbix之类的监控软件&#xff0c;但是这类软件安装起来比较麻烦&#xff0c;在一个小型服务器&#xff0c;我们想尽快找到问…

Ubuntu下内存泄露检测工具Valgrind的使用

在VS中可以用VLD检测是否有内存泄露&#xff0c;可以参考http://blog.csdn.net/fengbingchun/article/details/44195959&#xff0c;下面介绍下Ubuntu中内存泄露检测工具Valgrind的使用。Valgrind目前最新版本是3.11.0&#xff0c; 可以从http://www.valgrind.org/ 通过下载源码…

数据为王的时代,如何用图谱挖掘商业数据背后的宝藏?

这是一个商业时代&#xff0c;一个数据为王的时代&#xff0c;也是一个 AI 迎来黄金发展期的时代。据史料记载&#xff0c;商业在商朝已初具规模。斗转星移&#xff0c;时光流转&#xff0c;到 2019 年&#xff0c;商业形式已发生翻天覆地的变化&#xff0c;但是商业的本质——…

旋转卡壳——模板(对踵点)

这东西学了我大概两天吧。。其实不应该学这么久的&#xff0c;但是这两天有点小困&#xff0c;然后学习时间被削了很多\(QwQ\) 说几个坑点。 - 对于题目不保证有凸包的情况&#xff0c;要选用左下角的点&#xff0c;而非单纯的最下边的点构造凸包。 - 对于凸包中只有\(1/2\)个点…

SNMP 协议 OID的使用

为什么80%的码农都做不了架构师&#xff1f;>>> SNMP 协议 OID的使用 SNMP&#xff08;Simple Network Management Protocol简单网络管理&#xff09;协议 是现在网络管理系统&#xff08;NMS&#xff09;监控网络设备状态的协议&#xff0c;是现在网管事实上的标准…

颜色空间YUV简介

YUV概念&#xff1a;YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL&#xff0c;Phase Alternation Line)&#xff0c;是PAL和SECAM模拟彩色电视制式采用的颜色空间。其中的Y、U、V几个字母不是英文单词的组合词&#xff0c;Y代表亮度&#xff0c;其实Y就是图像的灰度值…

基于RNN的NLP机器翻译深度学习课程 | 附实战代码

作者 | 小宋是呢来源 | CSDN博客深度学习用的有一年多了&#xff0c;最近开始NLP自然处理方面的研发。刚好趁着这个机会写一系列 NLP 机器翻译深度学习实战课程。本系列课程将从原理讲解与数据处理深入到如何动手实践与应用部署&#xff0c;将包括以下内容&#xff1a;&#xf…

trash-cli设置Linux 回收站

trash-cli 设置 Linux 回收站 trash-cli是一个使用 python 开发的软件包&#xff0c;包含 trash-put、restore-trash、trash-list、trash-empty、trash-rm等命令&#xff0c;我们可以通过这条命令&#xff0c;将文件移动到回收站&#xff0c;或者还原删除了的文件。 trash-cli的…

磁盘有时也不可靠

实验服务器的磁盘是最近买的&#xff0c;当卖家问我要普通的还是高级的&#xff0c; 我选择了普通&#xff0c;现在追悔莫及。今天的分析更加详细。首先发现每次实验&#xff0c;出错的文件都不一样&#xff0c;所以应该不是临界条件的问题。下表总结了出错的位置&#xff0c;原…

从原理到落地,七大维度详解矩阵分解推荐算法

作者 | gongyouliu编辑丨Zandy来源 | 大数据与人工智能 &#xff08; ID: ai-big-data&#xff09;导语&#xff1a;作者在《协同过滤推荐算法》这篇文章中介绍了 user-based 和 item-based 协同过滤算法&#xff0c;这类协同过滤算法是基于邻域的算法(也称为基于内存的协同过…

libyuv库的使用

libyuv是Google开源的实现各种YUV与RGB之间相互转换、旋转、缩放的库。它是跨平台的&#xff0c;可在Windows、Linux、Mac、Android等操作系统&#xff0c;x86、x64、arm架构上进行编译运行&#xff0c;支持SSE、AVX、NEON等SIMD指令加速。下面说一下libyuv在Windows7VS2013 x6…

封装 vue 组件的过程记录

在我们使用vue的开发过程中总会遇到这样的场景&#xff0c;封装自己的业务组件。 封装页面组件前要考虑几个问题&#xff1a;1、该业务组件的使用场景 2、在什么条件下展示一些什么数据&#xff0c;数据类型是什么样的&#xff0c;及长度颜色等 3、如果是通用的内容&#xff0c…

Service的基本组成

Service与Activity的最大区别就是一有界面&#xff0c;一个没有界面。 如果某些程序操作很消耗时间&#xff0c;那么可以将这些程序定义在Service之中&#xff0c;这样就可以完成程序的后台运行&#xff0c; 其实Service就是一个没有界面的Activity&#xff0c;执行跨进程访问也…

BP神经网络公式推导及实现(MNIST)

BP神经网络的基础介绍见&#xff1a;http://blog.csdn.net/fengbingchun/article/details/50274471&#xff0c;这里主要以公式推导为主。BP神经网络又称为误差反向传播网络&#xff0c;其结构如下图。这种网络实质是一种前向无反馈网络&#xff0c;具有结构清晰、易实现、计算…

AI应用落地哪家强?CSDN AI Top 30+案例评选等你来秀!

人工智能历经百年发展&#xff0c;如今迎来发展的黄金时期。目前&#xff0c;AI 技术已涵盖自然语言处理、模式识别、图像识别、数据挖掘、机器学习等领域的研究&#xff0c;在汽车、金融、教育、医疗、安防、零售、家居、文娱、工业等行业获得了令人印象深刻的成果。 在各行业…

安利Mastodon:属于未来的社交网络

我为Mastodon开发了一款安卓客户端&#xff0c;v1.0版本已经发布&#xff0c;欢迎下载使用 源码在这里&#xff1a;https://github.com/shuiRong/Gakki ??? 正文 Mastodon(长毛象)是什么&#xff1f; 是一个免费开源、去中心化、分布式的微博客社交网络&#xff0c;是微博、…

通过案例练习掌握SSH 的整合

1. SSH整合_方案01 ** 整合方案01 Struts2框架 Spring框架 在Spring框架中整合了Hibernate&#xff08;JDBC亦可&#xff09; 一些业务组件&#xff08;Service组件&#xff09;也可以放入Spring框架中迚行管理&#xff08;昨天的例子&#xff09; 1. 请求&#xff0…

tiny-cnn开源库的使用(MNIST)

tiny-cnn是一个基于CNN的开源库&#xff0c;它的License是BSD 3-Clause。作者也一直在维护更新&#xff0c;对进一步掌握CNN很有帮助&#xff0c;因此下面介绍下tiny-cnn在windows7 64bit vs2013的编译及使用。 1. 从https://github.com/nyanp/tiny-cnn下载源码&#xff1…

玩嗨的2亿快手“老铁”和幕后的极致视觉算法

作者 | Just出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;创立八年&#xff0c;短视频平台快手目前已经有超过两亿人在每天登陆使用&#xff0c;每天还有超过 1500 万条短视频被制作和上传&#xff0c;每天的累计观看数更是达到 150 亿。拥有如此庞大的用户数&…

lsmod命令详解

基础命令学习目录首页 原文链接&#xff1a;http://blog.sina.com.cn/s/blog_e6b2465d0101fuev.html lsmod——显示已载入系统的模块 lsmod 其实就是list modules的缩写&#xff0c;即 列出所有模块. 功能说明&#xff1a;显示已载入系统的模块。 语法&#xff1a;lsmod 说明&a…

javascript模块化、模块加载器初探

最常见网站的javascript架构可能是这样的&#xff1a; 一个底层框架文件&#xff0c;如jQuery一个网站业务框架文件&#xff0c;包含整站公用业务模块类(如弹框、ajax封装等)多个业务文件&#xff0c;包含每个具体页面有关系的业务代码为了减少一个HTTP请求&#xff0c;我们可能…

tiny-cnn执行过程分析(MNIST)

在http://blog.csdn.net/fengbingchun/article/details/50573841中以MNIST为例对tiny-cnn的使用进行了介绍&#xff0c;下面对其执行过程进行分析&#xff1a;支持两种损失函数&#xff1a;(1)、mean squared error(均方差)&#xff1b;(2)、cross entropy(交叉熵)。在MNIST中使…

关于element的select多选选择器,数据回显的问题

关于element的select多选&#xff0c;数据回显的问题 在工作中遇到这样一个问题&#xff0c;新建表单时用element的select多选以后&#xff0c;在编辑的时候打开表单发现其他数据能正常显示&#xff0c;多选却无法正常回显。在网上找了很多后&#xff0c;终于解决了这个问题&am…

360金融发布Q2财报:净利6.92亿,同比增长114%,大数据与AI加持的科技服务是新亮点?

8月23日&#xff0c;360金融发布未经审计的2019年第二季度业绩报告。财务数据显示&#xff0c;2019年第二季度&#xff0c;360金融实现收入22.27亿元人民币&#xff0c;较2018年二季度9.79亿元增长128%&#xff1b;净利润为6.18亿元&#xff0c;而去年同期为净亏损1.42亿元&…

SPRING3.X JSON 406 和 中文乱码问题

2019独角兽企业重金招聘Python工程师标准>>> 简要 最近使用Spring3.2.3 版本 在使用 JSON message convertion 的时候&#xff0c;老是出现406 返回类型不匹配的问题&#xff0c;去网上google 了一番 也没有一个明确的说法&#xff0c;只能自己去调试。 Maven 依…

VLFeat开源库介绍及在VS2013中的编译

VLFeat是一个开源的计算机视觉算法库&#xff0c;内容主要包括feature detectors、feature extractors、k-means clustering、randomized kd-tree matching、super-pixelization。它是跨平台的&#xff0c;能够应用在Linux、Mac、Windows平台。它的License是BSD。 在VS2013中编…

人工智能写手,好用吗?

作者 | 王树义来源 | 玉树芝兰&#xff08;ID&#xff1a;nkwangshuyi&#xff09;1、印象之前给学生上课的时候&#xff0c;我介绍过利用循环神经网络&#xff0c;仿照作家风格进行创作的机器学习模型。不过&#xff0c;那模型写出来的东西嘛……我的评价是&#xff1a;望之&a…

表单系列之input number总结

各浏览器表现 <input type"number" /> chrome 除数字字符&#xff0c;只可输入e和.IE 除数字字符&#xff0c;其他字符均可输入&#xff0c;无报错Firefox 除数字字符&#xff0c;其他字符均可输入&#xff0c;但会报错移除箭头 //谷歌去除箭头 input::-webki…

Android中Service深入学习

概述 1、当用户在与当前应用程序不同的应用程序时&#xff0c;Service可以继续在后台运行。 2、Service可以让其他组件绑定&#xff0c;以便和它交互并进行进程间通信。 3、Service默认运行在创建它的应用程序的主线程中。 Service的使用主要是因为应用程序里面可能需要长时间地…