webcam pix2pix tensorflow

2025-12-11 0 136

这是我最近在Twitter和Vimeo上发布的网络摄像头PIX2PIX演示的源代码和验证模型。它使用深度学习或投入一些流行语:深卷积有条件的生成对抗网络自动编码器

视频1

视频2

概述

此特定回购中的代码实际上与Pix2Pix,Gans甚至深度学习无关。它只是加载任何训练的TensorFlow模型(只要它符合一些约束),将其馈送为处理后的网络摄像头输入,并显示模型的输出。碰巧的是,我训练和使用的模型是Pix2Pix(下面的详细信息)。

即这些步骤可以总结为:

  1. 收集数据:刮擦网络以获取大量图像,预处理并准备培训数据
  2. 训练并导出模型
  3. 预处理和预测:负载预审预测的模型,为实时预处理摄像头输入馈电,显示结果。

1。数据

我从Wikimedia的Google Art Project中刮过了来自世界各地的艺术收藏。许多图像都是丰富的白色家伙的古典肖像,因此我只使用了大约150个收藏品,试图将数据保持在地理和文化上的多样性(我使用的完整列表)。但是数据仍然非常以欧元为中心,因为一个欧洲博物馆可能会有数百或数千次扫描,但只有8次来自阿拉伯博物馆的扫描。

我下载了图像的300px版本,然后运行了批处理过程:

  • 将它们重新列为256×256(不保留纵横比)
  • 运行AA简单的边缘检测过滤器(OpenCV Canny)

我还运行了一个批处理过程,从图像中取出了多个农作物(而不是不均匀的调整大小),但我还没有对此进行训练。我还开始研究XIE和TU(原始Pix2Pix Paper所使用的),而不是Canny Edge检测,而是研究了更好的“整体上巢边缘检测”(又名HED),但尚未对此进行培训。

这是由preprocess.py脚本完成的(对不起,没有命令行参数,编辑脚本以更改路径和设置,应该是相当自言自语的)。

可以在这里看到一小部分培训数据的样本 – 包括训练有素的模型的预测。右列是原始图像,最左列的列是预处理版本。这两个图像被送入Pix2Pix网络,作为要训练的“对”。中间列是该模型学会仅给定最左边的列产生的方法。 (图像显示了每个训练迭代 – 即从左侧的数字,从20,000到58,000,因此,您在页面上越越越逐渐变得更好)。

我还训练了无条件的gan(即在相同的培训数据上进行普通的dcgan。下面可以看到其输出的一个示例。(这是生成类似于训练数据的“完全随机”的图像)。

2。训练

训练和体系结构是由Isela等人(又称Pix2pix)直接向上“图像到图像的翻译”。我在@AffineLayer(Christopher Hesse)的Tensorflow端口训练,这也是近期传播传播的“ Skult-to-cat-demo”的动力。他还写了一个很好的教程,介绍了Pix2Pix的工作原理。非常感谢作者(以及他们构建的每个人)为制造代码开源的人!

我只对Tensorflow-Pix2Pix训练代码进行了一个无限的更改,也就是说,以人为可读的名称向发电机输入和输出添加TF.Identities ,以便我可以轻松地喂食和获取Tensors。因此,如果您想在此应用程序中使用自己的模型,则需要做同样的事情。 (或记下输入/输出张量名称,并相应地修改JSON,以下更多内容)。

您可以从“版本”选项卡中下载我验证的模型。

3。预处理和预测

该特定应用程序的作用是加载验证的模型,对网络摄像头输入进行实时预处理,然后将其馈送到模型。我使用OpenCV进行了旧式的基本计算机视觉的预处理。这确实非常最小和基本。您可以在下面看到GUI(GUI使用pyqtgraph)。

不同的场景需要不同的设置。

例如,对于“现场动作”,我发现Canny可以提供更好的(IMHO)结果,这就是我在首批视频中使用的。阈值(Canny_T1,Canny_T2)取决于场景,细节和所需的外观。

如果您的图像中有很多噪音,则可能需要添加一点点的pre_blurpre_median 。或与他们一起玩“艺术效果”。例如,在第一个视频中,在1:05-1:40左右,我添加了大量的中位数(值约为30-50)。

对于绘制场景(例如第二视频),我发现自适应阈值比Canny(即禁用Canny和启用自适应阈值)更有趣的结果,尽管您可能会不同意。

对于完全静态输入(即,如果您冻结捕获量,禁用相机更新),则输出可能会闪烁很小的量,因为该模型对同一输入做出了不同的预测 – 尽管这通常非常微妙。但是,对于现场摄像机供稿,输入中的噪声可能会在输出中闪烁很多,尤其是由于噪声较高或适应性阈值的敏感性很高,因此某些时间模糊可能会有所帮助。

在进入模型之前, Accum_W1accam_W2用于输入的时间模糊:new_image = old_image * w1 + new_image * w2(因此,理想情况下,它们应该加起来多达一个或接近)。

prediction.pre_time_lerppost_time_lerp也做时间平滑:new_image = old_image * xxx_lerp + new_image *(1- xxx_lerp)pre_time_lerp是在进入模型之前,并且post_time_lerp是在模型中出现的。

任何时间模糊的零都会使它们禁用它们。这些值取决于您的口味。对于上面的两个视频,我都设置了所有PRE_MODEL模糊(即Accam_W1,Accum_W2和pre_time_lerp),并设置为零,并使用不同的post_time_lerp设置播放,范围从0.0(非常闪烁和闪烁)到0.9(非常缓慢,淡淡,淡淡的和“梦想”)。通常,我最喜欢的范围约为0.5-0.8。

使用其他型号

如果您想使用其他模型,则需要设置类似于下面的json文件。这里的动机是,我实际上在应用程序/型号文件夹中有一堆JSON,我可以动态扫描和重新加载,并且模型数据在其他磁盘上存储在其他磁盘上,并且该应用程序可以自动在运行时和规模输入/输出等自动加载和交换模型。

{
	\"name\" : \"gart_canny_256\", # name of the model (for GUI)
	\"ckpt_path\" : \"./models/gart_canny_256\", # path to saved model (meta + checkpoints). Loads latest if points to a folder, otherwise loads specific checkpoint
	\"input\" : { # info for input tensor
		\"shape\" : [256, 256, 3],  # expected shape (height, width, channels) EXCLUDING batch (assumes additional axis==0 will contain batch)
		\"range\" : [-1.0, 1.0], # expected range of values 
		\"opname\" : \"generator/generator_inputs\" # name of tensor (\':0\' is appended in code)
	},
	\"output\" : { # info for output tensor
		\"shape\" : [256, 256, 3], # shape that is output (height, width, channels) EXCLUDING batch (assumes additional axis==0 will contain batch)
		\"range\" : [-1.0, 1.0], # value range that is output
		\"opname\" : \"generator/generator_outputs\" # name of tensor (\':0\' is appended in code)
	}
}

要求

  • Python 2.7(也可能与3.x一起使用)
  • Tensorflow 1.0+
  • OPENCV 3+(也可能与2.4+一起使用)
  • pyqtgraph(仅用0.10测试)

仅在Ubuntu 16.04上进行测试,但应在其他平台上工作。

我使用的是Anaconda Python发行版,它几乎带有您需要的所有内容,然后(希望)很简单:

  1. 从https://www.co*n*ti*nuum.io/downloads下载并安装Anaconda

  2. 安装TensorFlow https://www.**te*nsorflow.org/install/(如果您拥有Anaconda-,则通常很简单,因为包括大多数依赖关系)

  3. 安装openCV和pyqtgraph

    conda install -c menpo opencv3 conda安装pyqtgraph

致谢

无限再次感谢

  • Isla等人的Pix2Pix和@Affinelayer(Christopher Hesse)用于Tensorflow端口
  • Radford等人的DCGAN和 @carpedm20(Taehoon Kim)用于TensorFlow端口
  • Tensorflow团队
  • 无数其他人直接或间接地为上述贡献的人,或开放自己的研究,使上述研究成为可能
  • 我的妻子与我一起工作银行度假以清理我的代码并上传此存储库。

下载源码

通过命令行克隆项目:

git clone https://github.com/memoakten/webcam-pix2pix-tensorflow.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 建站资源 webcam pix2pix tensorflow https://www.zuozi.net/35437.html

DreamLayer
上一篇: DreamLayer
ai4artists
下一篇: ai4artists
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务