标签: generative-adversarial-network

在keras中将类信息添加到Generator模型

我想使用条件GAN,目的是为一个域生成图像(标记为domain A),并通过输入来自第二个域(标记为domain B)的图像和类信息.两个域都与相同的标签信息链接(域A的每个图像都链接到图像到域B和特定标签).到目前为止我在Keras的发电机如下:

def generator_model_v2():

   global BATCH_SIZE
   inputs = Input((IN_CH, img_cols, img_rows))   
   e1 = BatchNormalization(mode=0)(inputs)
   e2 = Flatten()(e1)
   e3 = BatchNormalization(mode=0)(e2)
   e4 = Dense(1024, activation="relu")(e3)
   e5 = BatchNormalization(mode=0)(e4)
   e6 = Dense(512, activation="relu")(e5)
   e7 = BatchNormalization(mode=0)(e6)
   e8 = Dense(512, activation="relu")(e7)
   e9 = BatchNormalization(mode=0)(e8)
   e10 = Dense(IN_CH * img_cols *img_rows, activation="relu")(e9)
   e11  = Reshape((3, 28, 28))(e10)
   e12 = BatchNormalization(mode=0)(e11)
   e13 = Activation('tanh')(e12)

   model = Model(input=inputs, output=e13)
   return model
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的生成器将来自domain A(以及输出图像的范围)的图像作为输入domain B.我想以某种方式输入输入域A的类的信息,其范围为域B生成相同类的图像.如何在展平后添加标签信息.因此,而不必输入大小1x10241x1025 …

python artificial-intelligence machine-learning keras generative-adversarial-network

6
推荐指数
1
解决办法
187
查看次数

当网络训练更多时,为什么GAN生成的图像变得更暗?

我创建了一个DCGAN具有6层的简单图层,并在CelebA数据集上对其进行了训练(其中一部分包含30K图像)。
我注意到我的网络生成的图像看起来是暗淡的,并且随着网络的训练越来越多,明亮的颜色逐渐变成暗淡的颜色!

这是一些示例:
这是CelebA图像的样子(用于训练的真实图像):
在此处输入图片说明

这些是生成的,这些数字显示了纪元编号(他们最终被训练了30个纪元):
在此处输入图片说明

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

造成这种现象的原因是什么?
我尝试完成所有与GANs 有关的常规技巧,例如在-1和1之间重新缩放输入图像,或者不在BatchNorm的第一层使用Discriminator,对于的最后一层不Generator使用LeakyReLU(0.2),或在DiscriminatorReLU中使用Generator。但我不知道为什么图像太暗/太暗!
这是因为训练图像减少了吗?
还是由网络缺陷引起的?如果是这样,这种缺陷的根源是什么?
这些网络的实现方式如下:

def conv_batch(in_dim, out_dim, kernel_size, stride, padding, batch_norm=True):
    layers = nn.ModuleList()
    conv = nn.Conv2d(in_dim, out_dim, kernel_size, stride, padding, bias=False)
    layers.append(conv)
 if batch_norm:
        layers.append(nn.BatchNorm2d(out_dim))
 return nn.Sequential(*layers)

class Discriminator(nn.Module):
    def __init__(self, conv_dim=32, act = nn.ReLU()):
        super().__init__()

        self.conv_dim = conv_dim 
        self.act = act
        self.conv1 = conv_batch(3, conv_dim, 4, 2, 1, False)
        self.conv2 = conv_batch(conv_dim, conv_dim*2, …
Run Code Online (Sandbox Code Playgroud)

python pytorch generative-adversarial-network gan

6
推荐指数
1
解决办法
132
查看次数

为生成对抗网络添加约束,例如没有两个头的狗

在 GAN 框架中,生成器违反图像中未明确表示的真实分布的硬约束的情况并不罕见,例如狗很少有超过一个头或 4 条腿。

鉴于没有头或腿计数神经元,并且人们对使用领域知识来挖掘这些规范并将其用作判别器的输入不感兴趣,那么在 GAN 或约束的背景下挖掘和执行此类规范的方法有哪些优化问题。

在我自己的例子中,数据由钢琴卷帘组成,也就是说,一个轴代表时间 T,另一个轴代表音符 N。规范的一些示例可以是: A) 对于 T 中的每个 t,只有一个正值 N,即每个时间步长一个音符 B) 仅当音符轴中正值直接和间接邻居的计数等于或大于 2 时,才存在正值 N。

例如

Invalid 
10110110 
11001101

Valid 
00000000 
11101111
Run Code Online (Sandbox Code Playgroud)

非常欢迎意见或建议!低级图像特征控制的一个例子。 https://arxiv.org/pdf/1611.07865.pdf

mathematical-optimization neural-network deep-learning generative-adversarial-network

5
推荐指数
0
解决办法
719
查看次数

python 中的 mtcnn 中未定义名称“MTCNN”

我安装了mtcnn包,可以看到:

# confirm mtcnn was installed correctly
import mtcnn
# print version
print(mtcnn.__version__)
Run Code Online (Sandbox Code Playgroud)

结果:

0.0.9
Run Code Online (Sandbox Code Playgroud)

然后我使用以下内容:

# prepare model
model = MTCNN()
# detect face in the image
faces = model.detect_faces(pixels)
# extract details of the face
x1, y1, width, height = faces[0]['box']
Run Code Online (Sandbox Code Playgroud)

结果:

1 # prepare model
----> 2 model = MTCNN()
      3 # detect face in the image
      4 faces = model.detect_faces(pixels)
      5 # extract details of the face

NameError: name 'MTCNN' is not defined
Run Code Online (Sandbox Code Playgroud)

python-2.7 conv-neural-network generative-adversarial-network

5
推荐指数
2
解决办法
7634
查看次数

如果我们可以在 WGAN 中裁剪梯度,为什么还要费心使用 WGAN-GP?

我正在研究 WGAN,并希望实现 WGAN-GP。

在其原始论文中,由于 1-Lipschitiz 约束,WGAN-GP 是通过梯度惩罚来实现的。但是像 Keras 这样的包可以将梯度范数限制为 1(根据定义,这相当于 1-Lipschitiz 约束),那么为什么我们要费心去惩罚梯度呢?为什么我们不直接裁剪渐变呢?

machine-learning gradient-descent generative-adversarial-network

5
推荐指数
1
解决办法
2043
查看次数

崩溃后继续训练 style-gan 2 网络

我一直在尝试使用自定义数据集训练 style-gan2 网络。不幸的是,我当前运行计算的服务器有点不稳定,导致它在训练三天后崩溃。有什么方法可以让我使用网络崩溃前的最后一个快照继续训练网络吗?我看到了一些关于继续训练网络的参考,但 style-gan 或 style-gan2 github 页面都没有提到它。

nvidia machine-learning generative-adversarial-network

5
推荐指数
1
解决办法
2538
查看次数

Stylegan2 Tensorflow 训练在 Google Colab 中一分钟后中断

我正在尝试在 Google Colab 中训练 stylegan2 模型。我一直在使用stylegan2-colab笔记本。然而,当我尝试训练模型时,它突然停止了。正如您在输出末尾看到的那样,这似乎是键盘中断(^C),所以我想知道这是否可能是内存问题。有一次当它崩溃时,它问我是否想增加内存限制,我照做了。我最初尝试使用 1028x1028 图像,但没有切换到 256x256,这没有帮助。知道会发生什么吗?

!python run_training.py --data-dir='/content/drive/My Drive/kaggle/datasets' \
    --config=config-f --dataset=abstract-256 --result-dir='/content/drive/My Drive/kaggle/snapshots'
Run Code Online (Sandbox Code Playgroud)

###输出

Local submit - run_dir: /content/drive/My Drive/kaggle/snapshots/00006-stylegan2-abstract-256-1gpu-config-f
dnnlib: Running training.training_loop.training_loop() on localhost...
Streaming data using training.dataset.TFRecordDataset...
tcmalloc: large alloc 4294967296 bytes == 0x866e000 @  0x7fea77378001 0x7fea73dc4765 0x7fea73e28dc0 0x7fea73e2ac5f 0x7fea73ec1238 0x50ac25 0x50d390 0x508245 0x509642 0x595311 0x54a6ff 0x551b81 0x5a067e 0x50d966 0x508245 0x58958c 0x5a067e 0x50d966 0x508245 0x58958c 0x5a067e 0x50d966 0x509d48 0x50aa7d 0x50c5b9 0x509d48 0x50aa7d 0x50c5b9 0x508245 0x58958c 0x5a067e
tcmalloc: large alloc …
Run Code Online (Sandbox Code Playgroud)

python tensorflow google-colaboratory generative-adversarial-network

5
推荐指数
1
解决办法
1132
查看次数

如何在我自己的数据集上使用Tensorflow的cycleGAN

我试图在我自己的数据上使用那里的代码:https ://www.tensorflow.org/tutorials/generative/cyclegan 。

在本教程中,使用以下代码创建 Dataset 对象:

dataset, metadata = tfds.load('cycle_gan/horse2zebra',
                          with_info=True, as_supervised=True)

train_horses, train_zebras = dataset['trainA'], dataset['trainB']
test_horses, test_zebras = dataset['testA'], dataset['testB']
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何从我自己的数据创建类似的对象,这些数据位于如下文件夹中:

data/trainA
data/trainB
data/testA
data/testB
Run Code Online (Sandbox Code Playgroud)

是否有一种类似于 flow_from_directory 方法的方法,以便以与 tfds.load(...) 相同的格式加载我的数据

看起来像的东西

train_horses = foo("data/trainA")
Run Code Online (Sandbox Code Playgroud)

tensorflow generative-adversarial-network

5
推荐指数
1
解决办法
807
查看次数

GAN 仅仅因为种子分布而在一批中生成完全相同的图像,为什么?

我训练了一个 GAN 来重现类似 CIFAR10 的图像。最初,我注意到生成器生成的跨一批图像看起来总是相同的,如下图所示:\n在此输入图像描述

\n

经过几个小时的调试和与教程的比较,这对于初学者来说是一个很好的学习资源(https://machinelearningmastery.com/how-to-develop-a-generative-adversarial-network-for-a-cifar-10-small- object-photographs-from-scratch/),我只需在原始代码上添加一个字母,生成的图像就开始看起来正常(每个批次中的每个人都开始看起来彼此不同),如下图所示:\n在此输入图像描述

\n

代码上神奇的一个字符更改是进行以下更改:

\n

更改自:

\n
def generate_latent_points(self, n_samples):\n        return np.random.rand(n_samples, self.latent_dim)\n
Run Code Online (Sandbox Code Playgroud)\n

到:

\n
def generate_latent_points(self, n_samples):\n        return np.random.randn(n_samples, self.latent_dim)\n
Run Code Online (Sandbox Code Playgroud)\n

希望这个非常微妙的细节可以帮助那些花费数小时绞尽脑汁进行 GAN 训练过程的人。

\n

np.random.rand给出均匀分布[0, 1)

\n

np.random.randn给出均值 0 和方差 1 的单变量 \xe2\x80\x9cnormal\xe2\x80\x9d (高斯)分布

\n

那么,为什么生成器的潜在种子分布差异会表现得如此不同呢?

\n

python neural-network conv-neural-network generative-adversarial-network

5
推荐指数
1
解决办法
2368
查看次数

如何将图像投影到StyleGan2中的潜在向量(非官方实现)?

我从头开始实现了 StyleGan2 的自定义版本。

现在我想获得特定图像的潜在向量。我查看了原始 github StyleGan2 存储库,了解如何将图像投影到潜在空间,但没有解释用于实现这一目标的代码。

据我所知,我们必须使用模型的生成器部分来生成图像并将其与所需图像进行比较以创建损失值并运行梯度下降来更新输入潜在向量,以最小化损失。

但是我们如何更新输入向量呢?据我所知输入向量不可训练?有任何想法吗?

keras tensorflow generative-adversarial-network

5
推荐指数
0
解决办法
352
查看次数