问题标签 [style-transfer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
conv-neural-network - ValueError:在pytorch中将张量转换为图像时,操作数无法与形状(50,50,512)(3,)(50,50,512)一起广播
我正在做神经风格迁移。我正在尝试重建 VGG19 网络的卷积层 conv4_2 的输出。
content_img_features 是一个包含每一层输出的字典。target_content 是一个形状张量torch.Size([1, 512, 50, 50])
这是我使用张量绘制图像的方法。它适用于输入图像以及最终输出。
但这会引发错误,
这是我在传递给 cnn 层之前对图像应用的初始转换,
我该如何解决?还有另一种方法可以从卷积层重建图像吗?
deep-learning - 如何决定在样式迁移中使用哪些层来处理内容和样式丢失?
当您选择一个预训练的网络进行样式迁移以确定样式和内容损失时,您需要确定哪些层最能代表感知的样式和内容,并使用它们来进行所述损失。如何选择这样的层?
python - 有人可以解释一下内容丢失功能吗?
我目前正在熟悉 TensorFlow 和机器学习。我正在做一些关于样式转换的教程,现在我有一部分示例代码我无法理解。
我想我明白了主要思想:有三个图像,内容图像,样式图像和混合图像。我们先说一下内容损失,因为如果我能理解这一点,我也会理解风格损失。所以我有内容图像和混合图像(从一些带有一些噪声的分布开始)和 VGG16 模型。
据我所知,我现在应该将内容图像输入到网络中的某个层,并查看该层对于内容图像输入的输出(特征图)是什么。
之后,我还应该将具有混合图像的网络提供给与之前相同的层,并查看混合图像输入该层的输出(特征图)是什么。
然后我应该从这两个输出中计算损失函数,因为我希望混合图像具有与内容图像相似的特征图。
我的问题是我不明白这是如何在网上找到的示例代码中完成的。
示例代码如下: http: //gcucurull.github.io/tensorflow/style-transfer/2016/08/18/neural-art-tf/
但几乎所有的例子都使用了相同的方法。
内容损失定义如下:
并且是这样调用的:
其中 content_out 是内容图像的输出,model 是使用的模型,C_LAYER 是对我们想要获得输出的层的引用,而 content_weight 是我们乘以的权重。
问题是我不知何故看不到这将混合图像提供给网络的位置。在我看来,“cont_loss”计算内容图像的输出与图层本身之间的均方根。
魔法应该在这里的某个地方:
但是我根本找不到这如何在给定层的内容图像的特征图和混合图像的特征图之间产生 RMS。
如果有人能指出我错在哪里并向我解释,内容损失是如何计算的,我将非常感激。
谢谢!
python - 如何修复 AttributeError:模块“tensorflow”没有属性“ConfigProto”
我是深度学习的新手,当我尝试运行我用来学习的教程中给出的图像样式转移命令时出现以下错误。
我安装了 scipy 1.1.0。(降级以修复问题 AttributeError: module 'tensorflow' has no attribute 'imread')。
我已经安装了 Tensorflow。我已经安装了枕头。
请注意,我没有编辑任何文件的知识,我只是复制命令以查看它是如何执行的。
tensorflow - 为什么 Gramian 矩阵适用于 VGG16,但不适用于 EfficientNet 或 MobileNet?
A Neural Algorithm of Artistic Style使用在ImageNet 上训练的 VGG16 分类网络的中间特征向量的Gramian 矩阵。那时,这可能是一个不错的选择,因为 VGG16 是表现最好的分类之一。如今,有更高效的分类网络在分类性能上超过 VGG,同时需要更少的参数和 FLOPS,例如 EfficientNet 和 MobileNetv2。
但是当我在实践中尝试这一点时,VGG16 特征的 Gramian 矩阵似乎代表了图像风格,因为它的风格相似图像的 L2 距离小于风格不相关图像的 L2 距离。对于根据 EfficientNet 和 MobileNetv2 特征计算的 Gramian 矩阵,情况似乎并非如此。非常相似的图像之间和非常不同的图像之间的 L2 距离仅变化约 5%。
从网络结构来看,VGG、EfficientNet、MobileNet都有卷积,中间有batch normalization和ReLU,所以构建块是一样的。那么哪种设计决策是 VGG 独有的,以便其 Gramian 矩阵捕捉风格,而 EfficientNet 和 MobileNet 却没有?
conv-neural-network - 有人能解释一下内容丢失、风格丢失和完全丢失会发生什么吗
所以我一直在阅读 Leon Gatys 在 2016 年发表的解释神经风格迁移的论文,但我仍然不明白在内容丢失、风格丢失或完全丢失方面发生了什么。有人可以简单地解释一下算法的这些步骤中发生了什么。
computer-vision - 大图像上的风格转移。(成块?)
我正在研究各种样式转换模型,我注意到它们的分辨率都有限(例如,在 Pixel 3 上运行时,我不能超过 1,024x1,024,否则会出现 OOM)。
我注意到一些应用程序(例如这个应用程序)似乎正在为高达 ~10MP 的图像进行样式转换,这些应用程序还显示进度条,我猜这意味着它们不只是调用单个 tensorflow“运行”方法对于整个图像,否则他们将不知道处理了多少。
我猜他们正在使用某种平铺,但是天真地将图像拆分为 256x256 会产生不一致的样式(不仅仅是在边框上)。
由于这似乎是一个明显的问题,我试图找到有关此的任何出版物,但我找不到任何出版物。我错过了什么吗?
谢谢!
python - 如何将 CNN 的输出剪辑到特定的颜色列表
典型图像 GAN 的输出形状(w,h,3)
为 0...1,然后缩放到 0...255 以表示彩色图像。
所以在每个 w,h 位置,我们得到 3 个值,它们共同代表 RGB 空间中的单一颜色。
我想以某种方式限制该输出以仅允许特定颜色作为输出。例如
理想情况下,允许的颜色将是输入的一部分,但考虑到任务的复杂性,我可以使用颜色作为网络架构的一部分开始网络的第一次迭代。
到目前为止,我尝试了很多方法都没有成功。我看到它可以完成的方式是使最后一层网络具有形状(w,h,number_of_allowed_colours)
,然后应用激活函数,以便将第三维映射到相应的颜色三元组。我试图扩展的一个想法是tf.argmax
结合使用类似tf.contrib.lookup.HashTable
. 我正在研究的另一个选择是使用常规(w,h,3)
形状层,但在激活内将其四舍五入到最接近的颜色匹配。这里的问题是缺乏渐变以及没有完美的算法来比较颜色。
编辑:损失函数必须使用生成的输出图像,因此解决方案必须完全可微。网络的输出必须是(w,h,3)
成形的图像。