生成对抗网络项目:6~9(5)

简介: 生成对抗网络项目:6~9(5)

生成对抗网络项目:6~9(4)https://developer.aliyun.com/article/1426900

这些步骤使用两个网络(生成器网络和判别器网络)创建对抗模型。 对抗模型的整个代码如下:

def build_adversarial_model(generator, discriminator):
    """
 Create an adversarial model """  input_image_dim = (256, 256, 1)
    patch_dim = (256, 256)
    # Create an input layer
  input_layer = Input(shape=input_image_dim)
    # Use the generator network to generate images
  generated_images = generator(input_layer)
    # Extract patches from the generated images
  img_height, img_width = input_img_dim[:2]
    patch_height, patch_width = patch_dim
    row_idx_list = [(i * patch_height, (i + 1) * patch_height) for i in range(int(img_height / patch_height))]
    column_idx_list = [(i * patch_width, (i + 1) * patch_width) for i in range(int(img_width / patch_width))]
    generated_patches_list = []
    for row_idx in row_idx_list:
        for column_idx in column_idx_list:
            generated_patches_list.append(Lambda(lambda z: z[:, column_idx[0]:column_idx[1], row_idx[0]:row_idx[1], :],
  output_shape=input_img_dim)(generated_images))
    discriminator.trainable = False    # Pass the generated patches through the discriminator network
  dis_output = discriminator(generated_patches_list)
    # Create a model
    model = Model(inputs=[input_layer], outputs=[generated_images, dis_output])
    return model

现在,我们已经成功地为生成器网络,判别器网络和对抗模型创建了模型。 我们准备训练 pix2pix。 在下一部分中,我们将在 Facades 数据集中训练 pix2pix 网络。

训练 pix2pix 网络

像任何其他 GAN 一样,训练 pix2pix 网络是一个两步过程。 第一步,我们训练判别器网络。 在第二步中,我们训练对抗网络,最终训练生成器网络。 让我们开始训练网络。

执行以下步骤来训练 SRGAN 网络:

  1. 首先定义训练所需的超参数:
epochs = 500 num_images_per_epoch = 400 batch_size = 1 img_width = 256 img_height = 256 num_channels = 1 input_img_dim = (256, 256, 1)
patch_dim = (256, 256)
# Specify dataset directory path
dataset_dir = "pix2pix-keras/pix2pix/data/facades_bw"
  1. 接下来,定义通用优化器,如下所示:
common_optimizer = Adam(lr=1E-4, beta_1=0.9, beta_2=0.999,  
                        epsilon=1e-08)

对于所有网络,我们将使用Adam优化器,其中learning rate等于1e-4beta_1 等于 0.9, beta_2等于 0.999,并且epsilon等于1e-08

  1. 接下来,构建并编译 PatchGAN 判别器网络,如下所示:
patchgan_discriminator = build_patchgan_discriminator()
patchgan_discriminator.compile(loss='binary_crossentropy', optimizer=common_optimizer)

要编译判别器模型,请使用binary_crossentropy作为损失函数,并使用common_optimizer作为训练优化器。

  1. 现在,构建并编译生成器网络,如下所示:
unet_generator = build_unet_generator()
unet_generator.compile(loss='mae', optimizer=common_optimizer)

要编译判别器模型,请使用 mse 作为损失函数,并使用 common_optimizer 作为训练优化器。

  1. 接下来,构建并编译对抗模型,如下所示:
adversarial_model = build_adversarial_model(unet_generator, patchgan_discriminator)
adversarial_model.compile(loss=['mae', 'binary_crossentropy'], loss_weights=[1E2, 1], optimizer=common_optimizer)

要编译对抗模型,请使用损失列表 ['mse', 'binary_crossentropy']common_optimizer 作为训练优化器。

  1. 现在,按如下所示加载训练,验证和测试数据集:
training_facade_photos, training_facade_labels = load_dataset(data_dir=dataset_dir, data_type='training',img_width=img_width, img_height=img_height)
test_facade_photos, test_facade_labels = load_dataset(data_dir=dataset_dir, data_type='testing',img_width=img_width, img_height=img_height)
validation_facade_photos, validation_facade_labels = load_dataset(data_dir=dataset_dir, data_type='validation',img_width=img_width, img_height=img_height)

load_dataset函数是“数据准备”部分中定义的 。 每一组包含所有图像的一组ndarray。 每组的大小将为(#total_images, 256, 256, 1)

  1. 添加 tensorboard 以可视化训练损失并可视化网络图:
tensorboard = TensorBoard(log_dir="logs/".format(time.time()))
tensorboard.set_model(unet_generator)
tensorboard.set_model(patchgan_discriminator)
  1. 接下来,创建一个for循环,该循环应运行的次数由周期数指定,如下所示:
for epoch in range(epochs):
    print("Epoch:{}".format(epoch))
  1. 创建两个列表来存储所有小批量的损失:
dis_losses = []
gen_losses = []
# Initialize a variable
batch_counter = 1
  1. 接下来,在周期循环内创建另一个循环,并使它运行num_batches指定的次数,如下所示:
num_batches = int(training_facade_photos.shape[0] / batch_size) for index in range(int(training_facade_photos.shape[0] / batch_size)):
print("Batch:{}".format(index))

我们用于判别器网络和对抗网络训练的整个代码将在此循环内。

  1. 接下来,对训练和验证数据进行小批量采样,如下所示:
train_facades_batch = training_facade_labels[index * batch_size:(index + 1) * batch_size]
        train_images_batch = training_facade_photos[index * batch_size:(index + 1) * batch_size]
        val_facades_batch = validation_facade_labels[index * batch_size:(index + 1) * batch_size]
        val_images_batch = validation_facade_photos[index * batch_size:(index + 1) * batch_size]
  1. 接下来,生成一批假图像并从中提取补丁。 如下使用generate_and_extract_patches函数:
patches, labels = generate_and_extract_patches(train_images_batch, train_facades_batch, unet_generator,batch_counter, patch_dim)

generate_and_extract_patches函数定义如下:

def generate_and_extract_patches(images, facades, generator_model, batch_counter, patch_dim):
    # Alternatively, train the discriminator network on real and generated images
  if batch_counter % 2 == 0:
        # Generate fake images
  output_images = generator_model.predict(facades)
        # Create a batch of ground truth labels
  labels = np.zeros((output_images.shape[0], 2), dtype=np.uint8)
        labels[:, 0] = 1    else:
        # Take real images
  output_images = images
        # Create a batch of ground truth labels
  labels = np.zeros((output_images.shape[0], 2), dtype=np.uint8)
        labels[:, 1] = 1    patches = []
    for y in range(0, output_images.shape[0], patch_dim[0]):
        for x in range(0, output_images.shape[1], patch_dim[1]):
            image_patches = output_images[:, y: y + patch_dim[0], x: x + patch_dim[1], :]
            patches.append(np.asarray(image_patches, dtype=np.float32))
    return patches, labels

前面的函数使用生成器网络生成伪图像,然后从生成的图像中提取补丁。 现在,我们应该有一个补丁列表及其基本真理值。

  1. 现在,在生成的补丁上训练判别器网络:
d_loss = patchgan_discriminator.train_on_batch(patches, labels)

这将在提取的补丁和地面真相标签上训练判别器网络。

  1. 接下来,训练对抗模型。 对抗性模型将训练生成器网络,但冻结判别器网络的训练。 使用以下代码:
labels = np.zeros((train_images_batch.shape[0], 2), dtype=np.uint8)
        labels[:, 1] = 1   # Train the adversarial model        g_loss = adversarial_model.train_on_batch(train_facades_batch, [train_images_batch, labels])
  1. 每个小批量完成后增加批计数器:
batch_counter += 1
  1. 在每个微型批量上完成一次迭代(循环)后,将损失存储在名为dis_lossesgen_losses的列表中:
dis_losses.append(d_loss)
gen_losses.append(g_loss)
  1. 另外,将平均损失存储到 TensorBoard 以进行可视化。 既存储损失,也要存储生成器网络的平均损失和判别器网络的平均损失:
write_log(tensorboard, 'discriminator_loss', np.mean(dis_losses), 
          epoch)
write_log(tensorboard, 'generator_loss', np.mean(gen_losses), epoch)
  1. 每 10 个周期后,使用生成器网络生成一组图像:
# After every 10th epoch, generate and save images for visualization if epoch % 10 == 0:
        # Sample a batch of validation datasets
  val_facades_batch = validation_facade_labels[0:5]
        val_images_batch = validation_facade_photos[0:5]
        # Generate images
  validation_generated_images = unet_generator.predict(val_facades_batch)
        # Save images
  save_images(val_images_batch, val_facades_batch, validation_generated_images, epoch, 'validation', limit=5)

将前面的代码块放入周期循环中。 每隔 10 个时间段,它将生成一批伪图像并将其保存到结果目录。 这里,save_images()是如下定义的效用函数:

def save_images(real_images, real_sketches, generated_images, num_epoch, dataset_name, limit):
    real_sketches = real_sketches * 255.0
  real_images = real_images * 255.0
  generated_images = generated_images * 255.0    # Save some images only
  real_sketches = real_sketches[:limit]
    generated_images = generated_images[:limit]
    real_images = real_images[:limit]
    # Create a stack of images
  X = np.hstack((real_sketches, generated_images, real_images))
    # Save stack of images
  imwrite('results/X_full_{}_{}.png'.format(dataset_name, num_epoch), X[0])

现在,我们已经成功地在立面数据集上训练了 pix2pix 网络。 对网络进行 1000 个周期的训练,以获取高质量的生成器网络。

保存模型

在 Keras 中保存模型只需要一行代码。 要保存生成器模型,请添加以下行:

# Specify the path for the generator model
unet_generator.save_weights("generator.h5")

同样,通过添加以下行来保存判别器模型:

# Specify the path for the discriminator model
patchgan_discriminator.save_weights("discriminator.h5")

可视化生成的图像

在将网络训练了 20 个时间段后,网络将开始生成体面的图像:让我们看一下由生成器网络生成的图像。

在 20、50、150 和 200 个周期(从左到右) 之后,图像如下所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8HrdlmdA-1681652906152)(https://gitcode.net/apachecn/apachecn-dl-zh/-/raw/master/docs/gan-proj/img/81830986-deb9-4db9-9dba-518aa6313466.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JVbB29zD-1681652906152)(https://gitcode.net/apachecn/apachecn-dl-zh/-/raw/master/docs/gan-proj/img/515bff70-925a-4f3b-a995-470637fd676e.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZEsITef0-1681652906152)(https://gitcode.net/apachecn/apachecn-dl-zh/-/raw/master/docs/gan-proj/img/550e5193-b6a1-49ba-81eb-cd1fe71c7634.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uU7kghsi-1681652906153)(https://gitcode.net/apachecn/apachecn-dl-zh/-/raw/master/docs/gan-proj/img/277d3877-16f5-4ce5-b5f0-2703bc2d3075.png)]

每个块均包含垂直堆叠的外观标签,生成的照片和实际图像。 我建议您将网络训练 1000 个周期。 如果一切顺利,则在 1000 个周期之后,生成器网络将开始生成逼真的图像。

可视化损失

要可视化训练损失,请启动 TensorBoard 服务器,如下所示:

tensorboard --logdir=logs

现在,在浏览器中打开localhost:6006。 TensorBoard 的标量部分包含两种损失的图表,如以下屏幕截图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ok2VTMOc-1681652906153)(https://gitcode.net/apachecn/apachecn-dl-zh/-/raw/master/docs/gan-proj/img/ff705572-5fb8-4216-883c-63bbfb809286.png)]

TensorBoard 的标量部分

这些图将帮助您决定是继续还是停止训练。 如果损失不再减少,您就可以停止训练,因为没有改善的机会。 如果损失持续增加,则必须停止训练。 尝试使用超参数,然后选择一组您认为可以提供更好结果的超参数。 如果损失逐渐减少,请继续训练模型。

可视化图

TensorBoard 的GRAPHS部分包含两个网络的图。 如果网络表现不佳,这些图可以帮助您调试网络。 它们还显示了每个图中的张量流和不同的操作:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wMvwcI7i-1681652906153)(https://gitcode.net/apachecn/apachecn-dl-zh/-/raw/master/docs/gan-proj/img/7c0476a9-d31c-4ef3-b3b3-2193680e7c0c.png)]

张量流和每个图内部的不同操作

pix2pix 网络的实际应用

pix2pix 网络有很多应用。 其中包括:

  • 将像素级分割转换为真实图像
  • 要将白天图像转换为夜间图像,反之亦然
  • 将卫星平面图像转换为地图图像
  • 将草图转换为照片
  • 将黑白图像转换为彩色图像,反之亦然

以下是从指定的官方文件中拍摄的图像。 它显示了 pix2pix 网络的不同用例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f9ZXLqxl-1681652906153)(https://gitcode.net/apachecn/apachecn-dl-zh/-/raw/master/docs/gan-proj/img/beb77a0a-2316-4a3e-9bf9-dead211714b4.png)]

使用条件对抗网络的图像到图像翻译,来源:arXiv:1611.07004 [cs.CV]

总结

在本章中,我们了解了 pix2pix 网络是什么,并探讨了其架构。 我们从数据加载开始,准备要训练的数据集,然后准备了项目,并研究了 pix2pix 网络的 Keras 实现。 之后,我们研究了训练 pix2pix 网络的目标函数。 然后,我们在立面数据集上训练了 pix2pix 网络,并探索了 pix2pix 网络的一些实际应用。

在下一章中,我们将预测 GAN 的未来。 我们将研究 GAN 领域在不久的将来会发生什么,以及它将如何改变我们的行业和我们的日常生活。

九、预测 GAN 的未来

如果您已完成本书各章中的所有练习,则为学习和编码生成对抗网络GAN)进行了很长的路要走。 世界应用。 GAN 有可能在许多不同行业中造成破坏。 科学家和研究人员开发了各种可用于构建商业应用的 GAN。 在本书中,我们探索并实现了一些最著名的 GAN 架构。

因此,让我们回顾一下到目前为止所学到的东西:

  • 我们从对 GAN 的简要介绍开始,学习了各种重要概念。
  • 然后,我们探索了 3D-GAN,这是一种可以生成 3D 图像的 GAN。 我们训练了 3D-GAN,以生成现实世界对象的 3D 模型,例如飞机桌子
  • 在第三章中,我们探索了用于人脸老化的条件 GAN。 我们学习了如何使用条件 GAN 将处于年龄的的人脸图像转换为同一张脸的图像。 我们还讨论了 Age-cGAN 的各种实际应用。
  • 之后,我们探索了深度卷积生成对抗网络DCGANs),该网络用于生成动漫人物的面孔。
  • 在第五章中,我们探讨了超分辨率生成对抗网络SRGAN),该网络可用于从低分辨率图像生成高分辨率图像。 之后,我们讨论了 SRGAN 如何解决一些非常有趣的现实问题。
  • 然后,我们探索了 StackGAN,我们将其用于执行文本到图像的合成任务。 我们在训练 StackGAN 之前先探索了一个数据集,然后通过讨论 StackGAN 的实际应用来结束本章。
  • 在第七章中,我们探索了 CycleGAN,这是一次图像到图像的翻译任务。 我们的目标是将绘画变成照片。 我们还讨论了 CycleGAN 的实际应用
  • 最后,在第八章中,我们探讨了 pix2pix 网络,这是一种条件 GAN。 我们训练了 pix2pix 网络,以根据建筑标签生成立面图像。 像其他章节一样,我们通过讨论 pix2pix 网络的实际应用来结束本章。

在本章中,我们将介绍以下主题:

  • 我们对 GAN 未来的预测
  • GAN 的潜在未来应用
  • 可以探索 GAN 的其他区域

我们对 GAN 未来的预测

我认为,GAN 的未来将具有以下特点:

  • 研究团体公开接受 GAN 及其应用。
  • 令人印象深刻的结果-到目前为止,GAN 在使用常规方法难以执行的任务上显示出非常令人印象深刻的结果。 例如,将低分辨率图像转换为高分辨率图像以前是一项艰巨的任务,通常是使用 CNN 进行的。 GAN 架构(例如 SRGAN 或 pix2pix)显示了 GAN 在此应用中的潜力,而 StackGAN 网络已被证明对文本到图像的合成任务很有用。 如今,任何人都可以创建 SRGAN 网络并将其训练在自己的图像上。
  • 深度学习技术的进步。
  • GAN 用于商业应用。
  • GAN 训练过程的成熟。

改善现有的深度学习方法

监督式深度学习方法需要大量数据来训练模型。 获取该数据既昂贵又费时。 有时,无法获得数据,因为它不是公开可用的,或者如果它是公开可用的,则数据集的大小可能很小。 这是 GAN 可以营救的地方。 一旦使用相当小的数据集进行了训练,便可以部署 GAN 来从同一域生成新数据。 例如,假设您正在处理图像分类任务。 您有一个数据集,但是它不足以完成您的任务。 我们可以在现有映像上训练 GAN,然后将其部署到同一域中以生成新映像。 尽管 GAN 目前存在训练不稳定性的问题,但一些研究人员表明,可以生成逼真的图像。

GAN 商业应用的演变

未来几年,我们将看到 GAN 的更多商业应用。 GAN 的许多商业应用已经开发,并给人留下了积极的印象。 例如,移动应用 Prisma 是 GAN 最早获得广泛成功的应用之一。 我们可能会在不久的将来看到 GAN 的民主化,一旦我们这样做了,我们将开始看到 GAN 改善了我们的日常生活。

GAN 训练过程的成熟

自 2014 年成立以来,四年后,GAN 仍然遭受训练不稳定问题的困扰。 有时,GAN 根本无法收敛,因为两个网络都偏离了它们的训练路径。 在编写本书时,我多次遭受这个问题的困扰。 研究人员为稳定 GAN 的训练做出了许多努力。 我预测,随着深度学习领域的进步,该过程将日趋成熟,并且我们很快将能够毫无问题地训练模型。

GAN 的潜在未来应用

GAN 的未来是光明的! 我认为在不久的将来有可能会使用 GAN:

  • 从文本创建图表
  • 生成网站设计
  • 压缩数据
  • 药物发现与开发
  • 生成文字
  • 生成音乐

从文本创建图表

设计图表是一个漫长的过程。 这需要数小时的劳动并且需要特定的技能。 在市场营销和社会促销中,信息图表的魅力十足。 它们是社交媒体营销的主要成分。 有时,由于漫长的创建过程,公司不得不采用效率较低的策略来解决。 AI 和 GAN 可以帮助设计师进行创作。

生成网站设计

同样,设计网站是一个手动的,创造性的过程,需要熟练的手动工作,并且需要很长时间。 GAN 可以通过提供可以用作灵感的初始设计来协助设计师,从而节省大量金钱和时间。

压缩数据

互联网使我们能够将大量数据传输到任何位置,但这是有代价的。 GAN 使我们能够提高图像和视频的分辨率。 我们可以将低分辨率的图像和视频传输到它们所需的位置,然后可以使用 GAN 来提高数据质量,而这需要更少的带宽。 这带来了很多可能性。

药物发现与开发

使用 GAN 进行药物开发可能听起来像是一个梦想,但考虑到所需的化学和生物学特性,GAN 已被用于生成分子结构。 制药公司在新药的研发上花费了数十亿美元。 用于药物开发的 GAN 可以大大降低该成本。

用于生成文本的 GAN

GAN 已被证明对图像生成任务很有用。 GAN 中的大部分研究目前集中在高分辨率图像生成,文本到图像合成,样式迁移,图像到图像翻译以及其他类似任务上。 目前,对于使用 GAN 生成文本的研究还不多。 这是因为 GAN 旨在生成连续的值,因此训练 GAN 以获得离散值确实具有挑战性。 将来, 预测将在文本生成任务中进行更多的研究。

用于生成音乐的 GAN

使用 GAN 进行音乐生成是另一个尚未得到充分探索的领域。 音乐创作的过程充满创造力,非常复杂。 GAN 具有改变音乐产业的潜力,如果发生这种情况,我们可能很快就会聆听 GAN 创建的曲目。

探索 GAN

您可以探索的其他 GAN 架构包括:

研究人员还开发了数百种其他 GAN 架构。

总结

在本书中,我的目的是让您了解 GAN 及其在世界上的应用。 你的想象力是唯一的限制。 有大量可用的不同 GAN 架构,并且它们正在变得越来越成熟。 GAN 仍有很长的路要走,因为它们仍然存在诸如训练不稳定性和模式崩溃之类的问题,但是现在已经提出了各种解决方案,包括标签平滑,实例规范化和小批量区分。 我希望这本书对您实现 GAN 有所帮助。 如果您有任何疑问,请给我发送电子邮件到 ahikailash1@gmail.com

相关文章
|
1月前
|
机器学习/深度学习 算法 TensorFlow
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
73 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
|
1月前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
96 22
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
8天前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
23 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
1月前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
74 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
1月前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
74 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
1月前
|
机器学习/深度学习 人工智能 算法
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台。果蔬识别系统,本系统使用Python作为主要开发语言,通过收集了12种常见的水果和蔬菜('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜'),然后基于TensorFlow库搭建CNN卷积神经网络算法模型,然后对数据集进行训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地文件方便后期调用。再使用Django框架搭建Web网页平台操作界面,实现用户上传一张果蔬图片识别其名称。
45 0
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
2月前
|
计算机视觉
在yolov5项目中如何使用自带摄像机不用网络摄像机进行实时检测?
这篇文章讨论了在yolov5项目中,如何避免使用网络摄像机而改用自带的本地摄像机进行实时目标检测,并提供了解决摄像头打开错误的具体步骤和代码示例。
在yolov5项目中如何使用自带摄像机不用网络摄像机进行实时检测?
|
2月前
|
数据采集 资源调度 JavaScript
Node.js 适合做高并发、I/O密集型项目、轻量级实时应用、前端构建工具、命令行工具以及网络爬虫和数据处理等项目
【8月更文挑战第4天】Node.js 适合做高并发、I/O密集型项目、轻量级实时应用、前端构建工具、命令行工具以及网络爬虫和数据处理等项目
50 5
|
2月前
|
Java Android开发 Kotlin
Android项目架构设计问题之要在Glide库中加载网络图片到ImageView如何解决
Android项目架构设计问题之要在Glide库中加载网络图片到ImageView如何解决
30 0
|
2月前
|
Java Android开发 开发者
Android项目架构设计问题之使用Retrofit2作为网络库如何解决
Android项目架构设计问题之使用Retrofit2作为网络库如何解决
50 0

热门文章

最新文章