【人工智能笔记】第四十一节:TF2实现VITGAN对抗生成网络,Generator生成器 实现

TimeGAN:时间序列生成对抗网络(TimeGAN)的代码库-NeurIPS 2019 “时间序列生成对抗网络(TimeGAN)”的代码库 作者:尹成ung,丹尼尔·贾瑞特,米哈埃拉·范德沙尔 参考:Jinsung Yoon,Daniel Jarrett,Mihaela van der Schaar,“时间序列生成对抗网络”,神经信息处理系统(NeurIPS),2019年。 论文链接: : 联络人: 该目录包含使用一个合成数据集和两个真实数据集生成合成时间序列数据的TimeGAN框架的实现。 正弦数据:合成 股票数据: : 能源数据: : 要运行有关TimeGAN框架的培训和评估的管道,只需运行python3 -m main_timegan.py或在tutorial_timegan.ipynb中查看TimeGAN的jupyter-notebook教程。 注意,任何模型体系结构都可以用作生成器和鉴别器模型,例如RNN或Transformers。 代码说 立即下载

网络结构图
该章节介绍VITGAN对抗生成网络中,Generator生成器 部分的代码实现。

目录(文章发布后会补上链接):

  1. 网络结构简介
  2. Mapping NetWork 实现
  3. PositionalEmbedding 实现
  4. MLP 实现
  5. MSA多头注意力 实现
  6. SLN自调制 实现
  7. CoordinatesPositionalEmbedding 实现
  8. ModulatedLinear 实现
  9. Siren 实现
  10. Generator生成器 实现
  11. PatchEmbedding 实现
  12. ISN 实现
  13. Discriminator鉴别器 实现
  14. VITGAN 实现

Generator生成器 简介

Generator生成器
论文原文
上图是整个完整的 Generator生成器结构,由前面几章的模块组合而成。

代码实现

GeneratorEncoder代码实现

import tensorflow as tf

import sys

sys.path.append('')

from models.msa import MSA
from models.mlp import MLP
from models.sln import SLN


class GeneratorEncoderLayer(tf.keras.layers.Layer):
    def __init__(self, d_model, num_heads, dropout=0.0):
        super().__init__()
        self.d_model = d_model
        self.num_heads = num_heads
        self.sln1 = SLN(d_model)
        self.msa1 = MSA(d_model, num_heads, discriminator=False)
        self.sln2 = SLN(d_model)
        self.mlp1 = MLP(d_model, discriminator=False, dropout=dropout)

    def call(self, x, w, training):
        h = x
        x = self.sln1(h=x, w=w, training=training)
        x = self.msa1(v=x, k=x, q=x, mask=None)
        x = x + h
        h = x
        x = self.sln2(h=x, w=w, training=training)
        x = self.mlp1(x)
        x = x + h
        return x

class GeneratorEncoder(tf.keras.layers.Layer):
    def __init__(self, d_model, num_heads, num_layers, dropout=0.0):
        super().__init__()
        self.d_model = d_model
        self.num_heads = num_heads
        self.num_layers = num_layers
        self.encoder_layers = [GeneratorEncoderLayer(d_model, num_heads, dropout=dropout) for i in range(num_layers)]

    def call(self, x, w, training):
        for encoder_layer in self.encoder_layers:
            x = encoder_layer(x=x, w=w, training=training)
        return x

if __name__ == "__main__":
    # layer = EncoderLayer(256, 8)
    layer = GeneratorEncoder(256, 8, 4)
    x = tf.random.uniform([2,5,256], dtype=tf.float32)
    w = tf.random.uniform([2,5,256], dtype=tf.float32)
    o1 = layer(x, w, training=True)
    tf.print('o1:', tf.shape(o1))

Generator代码实现,不含博里叶位置编码

import tensorflow as tf
import sys

sys.path.append('')

from models.mapping_network import MappingNetwork
from models.generator_transformer_encoder import GeneratorEncoder
from models.coordinates_positional_embedding import CoordinatesPositionalEmbedding
from models.siren_test import Siren
from models.sln import SLN
from models.positional_embedding import PositionalEmbedding
from models.modulated_linear import ModulatedLinear
from models.mlp import MLP


class Generator(tf.keras.layers.Layer):
    """
    生成器
    """

    def __init__(
        self,
        image_size=224,
        patch_size=16,
        num_channels=3,
        d_model=768,
        dropout=0.0,
    ):
        super().__init__()
        self.image_size = image_size
        self.patch_size = patch_size
        self.num_channels = num_channels
        self.d_model = d_model
        self.dropout = dropout
        self.grid_size = image_size // patch_size
        self.num_patches = self.grid_size ** 2

        self.mapping_network = MappingNetwork(
            self.d_model,
            num_layers=8
        )

        # 输入位置编码
        self.patch_positional_embedding = PositionalEmbedding(
            sequence_length=self.num_patches,
            emb_dim=self.d_model,
        )

        self.generator_transformer_encoder = GeneratorEncoder(
            d_model,
            num_heads=8,
            num_layers=4,
            dropout=dropout,
        )
        self.sln1 = SLN(d_model)

        self.siren = Siren(
            hidden_dim=d_model,
            hidden_layers=2,
            out_dim=d_model,
            first_omega_0=30,
            hidden_omega_0=30,
            demodulation=True,
            outermost_linear=False
        )

    def call(self, x, training):
        batch_size = tf.shape(x)[0]
        w = self.mapping_network(x, training=training)
        # 输入位置编码
        x_pos = self.patch_positional_embedding()
        x = self.generator_transformer_encoder(x=x_pos, w=w, training=training)
        x = self.sln1(x, w, training=training)
        x = self.siren(x) # (B, L, E=P*P*C)
        x = tf.reshape(x, [batch_size, self.grid_size, self.grid_size, self.patch_size, self.patch_size, self.num_channels])
        x = tf.transpose(x, perm=[0,1,3,2,4,5])
        x = tf.reshape(x, [batch_size, self.image_size, self.image_size, self.num_channels])
        return x


if __name__ == "__main__":
    layer = Generator(
        image_size=224,
        patch_size=16,
        num_channels=3,
        d_model=768
    )
    x = tf.random.uniform([2,1,768], dtype=tf.float32)
    o1 = layer(x, training=True)
    tf.print('o1:', tf.shape(o1))
    o1 = layer(x, training=False)
    tf.print('o1:', tf.shape(o1))

Generator代码实现,包含博里叶位置编码。论文没描述该结构细节,这是一种猜测,试过无效,可能有误。

import tensorflow as tf
import sys

sys.path.append('')

from models.mapping_network import MappingNetwork
from models.generator_transformer_encoder import GeneratorEncoder
from models.coordinates_positional_embedding import CoordinatesPositionalEmbedding
from models.siren import Siren
from models.sln import SLN
from models.positional_embedding import PositionalEmbedding
from models.modulated_linear import ModulatedLinear
from models.mlp import MLP


class Generator(tf.keras.layers.Layer):
    """
    生成器
    """

    def __init__(
        self,
        image_size=224,
        patch_size=16,
        num_channels=3,
        d_model=768,
        dropout=0.0,
    ):
        super().__init__()
        self.image_size = image_size
        self.patch_size = patch_size
        self.num_channels = num_channels
        self.d_model = d_model
        self.dropout = dropout
        self.grid_size = image_size // patch_size
        self.num_patches = self.grid_size ** 2

        self.mapping_network = MappingNetwork(
            self.d_model,
            num_layers=8
        )

        # 输入位置编码
        self.patch_positional_embedding = PositionalEmbedding(
            sequence_length=self.num_patches,
            emb_dim=self.d_model,
        )

        self.generator_transformer_encoder = GeneratorEncoder(
            d_model,
            num_heads=8,
            num_layers=4,
            dropout=dropout,
        )
        self.sln1 = SLN(d_model)
        # 博里叶位置编码
        self.coordinates_positional_embedding = CoordinatesPositionalEmbedding(
            patch_size=patch_size,
            emb_dim=d_model,
            )

        self.siren = Siren(
            hidden_dim=d_model,
            hidden_layers=2,
            out_dim=num_channels,
            first_omega_0=30,
            hidden_omega_0=30,
            demodulation=True,
            outermost_linear=False
        )

        self.modulated_linear = ModulatedLinear(
            hidden_dim=d_model,
            output_dim=d_model,
            demodulation=True,
            use_bias=False,
            kernel_initializer=tf.initializers.GlorotNormal(),
        )

    def call(self, x, training):
        batch_size = tf.shape(x)[0]
        w = self.mapping_network(x, training=training)
        # 输入位置编码
        x_pos = self.patch_positional_embedding()
        x = self.generator_transformer_encoder(x=x_pos, w=w, training=training)
        x = self.sln1(x, w, training=training)
        # 博里叶位置编码
        e_fou = self.coordinates_positional_embedding(x)
        x = self.siren((e_fou, x)) # (B*L, P*P, E)
        x = tf.reshape(x, [batch_size, self.grid_size, self.grid_size, self.patch_size, self.patch_size, self.num_channels])
        x = tf.transpose(x, perm=[0,1,3,2,4,5])
        x = tf.reshape(x, [batch_size, self.image_size, self.image_size, self.num_channels])
        return x


if __name__ == "__main__":
    layer = Generator(
        image_size=224,
        patch_size=16,
        num_channels=3,
        d_model=768
    )
    x = tf.random.uniform([2,1,768], dtype=tf.float32)
    o1 = layer(x, training=True)
    tf.print('o1:', tf.shape(o1))
    o1 = layer(x, training=False)
    tf.print('o1:', tf.shape(o1))

Generator代码实现,包含博里叶位置编码。论文没描述该结构细节,这是另一种猜测,试过无效,可能有误。

import tensorflow as tf
import sys

sys.path.append('')

from models.mapping_network import MappingNetwork
from models.generator_transformer_encoder import GeneratorEncoder
from models.coordinates_positional_embedding import CoordinatesPositionalEmbedding
from models.siren import Siren
from models.sln import SLN
from models.positional_embedding import PositionalEmbedding
from models.modulated_linear import ModulatedLinear
from models.mlp import MLP


class Generator(tf.keras.layers.Layer):
    """
    生成器
    """

    def __init__(
        self,
        image_size=224,
        patch_size=16,
        num_channels=3,
        d_model=768,
        dropout=0.0,
    ):
        super().__init__()
        self.image_size = image_size
        self.patch_size = patch_size
        self.num_channels = num_channels
        self.d_model = d_model
        self.dropout = dropout
        self.grid_size = image_size // patch_size
        self.num_patches = self.grid_size ** 2

        self.mapping_network = MappingNetwork(
            self.d_model,
            num_layers=8
        )

        # 输入位置编码
        self.patch_positional_embedding = PositionalEmbedding(
            sequence_length=self.num_patches,
            emb_dim=self.d_model,
        )

        self.generator_transformer_encoder = GeneratorEncoder(
            d_model,
            num_heads=8,
            num_layers=4,
            dropout=dropout,
        )
        self.sln1 = SLN(d_model)
        # 博里叶位置编码
        self.coordinates_positional_embedding = CoordinatesPositionalEmbedding(
            patch_size=patch_size,
            emb_dim=d_model,
            )

        self.siren = Siren(
            hidden_dim=d_model,
            hidden_layers=2,
            out_dim=d_model,
            first_omega_0=30,
            hidden_omega_0=30,
            demodulation=True,
            outermost_linear=False
        )

        self.modulated_linear = ModulatedLinear(
            hidden_dim=d_model,
            output_dim=d_model,
            demodulation=True,
            use_bias=False,
            kernel_initializer=tf.initializers.GlorotNormal(),
        )
        self.mlp1 = MLP(d_model, discriminator=False, dropout=dropout)
        self.mlp2 = MLP(num_channels, discriminator=False, dropout=dropout)

    def call(self, x, training):
        batch_size = tf.shape(x)[0]
        w = self.mapping_network(x, training=training)
        # 输入位置编码
        x_pos = self.patch_positional_embedding()
        x = self.generator_transformer_encoder(x=x_pos, w=w, training=training)
        x = self.sln1(x, w, training=training)
        # 博里叶位置编码
        e_fou = self.coordinates_positional_embedding(x) # (B*L, P*P, E)
        e_fou = self.siren(e_fou) # (B*L, P*P, E)
        x = self.modulated_linear((e_fou, x)) # (B*L, P*P, E)
        x = self.mlp1(x, training=training)
        x = self.mlp2(x, training=training)
        x = tf.math.sin(x)
        x = tf.reshape(x, [batch_size, self.grid_size, self.grid_size, self.patch_size, self.patch_size, self.num_channels])
        x = tf.transpose(x, perm=[0,1,3,2,4,5])
        x = tf.reshape(x, [batch_size, self.image_size, self.image_size, self.num_channels])
        return x


if __name__ == "__main__":
    layer = Generator(
        image_size=224,
        patch_size=16,
        num_channels=3,
        d_model=768
    )
    x = tf.random.uniform([2,1,768], dtype=tf.float32)
    o1 = layer(x, training=True)
    tf.print('o1:', tf.shape(o1))
    o1 = layer(x, training=False)
    tf.print('o1:', tf.shape(o1))

参考资料:

大华/华睿工业相机(摄像头)链接电脑,并用OpenCV打开 睿科是大华旗下机器视觉子公司,现在工业相机一般是华睿在产,要下载驱动程序,要到华睿官网哪里下载。由于我的电脑没有摄像头,所以摄像头序列化为0,电脑的第一个摄像头默认为0,序列号是0,1,2,3……,你是什么接口连接的就选择什么, 建议直接全选。我这里选择第二个,下载后点击安装,的你要点击识别右侧设置,设置。这个过程很简单,故不赘述。打开你的设备会在右边显示。 阅读详情

相关推荐

CATIA CAA开发环境搭建避坑指南:从授权服务到VS配置全流程

本文提供了一份详尽的CATIA CAA开发环境搭建避坑指南,涵盖从授权服务(DSLS)安装、Visual Studio版本匹配与集成配置,到编译调试全流程。重点解析了授权服务无法连接、模块加载失败等典型问题的解决方案,强调版本严格对应与纯英文环境是成功搭建的关键。

redis7keeper的博客 573

【人工智能笔记】第四十五节:TF2实现VITGAN对抗生成网络,VITGAN主体 实现

【人工智能笔记】第四十五节:TF2实现VITGAN对抗生成网络,VITGAN主体 实现

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 701

2.2.1.3-移动平均线(python画k线、均线、5日线、买卖点图、python均线策略)

* 绘制一个k线图,也就是蜡烛图 * 计算5日均线值、10日均线值 * 在k线图上,绘制5日线和10日线图 * 在5日线上,绘制与10日线的交叉点(上穿、下穿时) python画k线、均线、5日线、买卖点图、python均线策略

KelvinLiu 3413

【人工智能笔记】第三十三节:TF2实现VITGAN对抗生成网络,Mapping NetWork 实现

该章节介绍VITGAN对抗生成网络中,Mapping NetWork 部分的代码实现。

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 776

别再纠结高侧低侧了!用INA199/INA219这类集成电流检测芯片,5分钟搞定精准电流测量

本文详细解析了使用INA199/INA219等集成电流检测芯片实现精准电流测量的高效方案。通过对比传统分立元件方案,突出集成芯片在精度、温度稳定性和设计简化方面的优势,并提供硬件设计避坑指南和软件实现最佳实践,帮助开发者快速掌握电流检测技术。

weixin_42685438的博客 471

Ubuntu虚拟机磁盘扩容实战:5分钟搞定gparted分区调整(附常见错误修复)

本文详细介绍了在Ubuntu虚拟机中使用gparted工具进行磁盘扩容的实战步骤。针对常见的交换分区阻碍问题,提供了从禁用交换空间、删除旧分区、调整主分区大小到重建交换分区并更新系统配置的完整解决方案,帮助用户在5-10分钟内安全高效地解决磁盘空间不足的难题。

1a2s3d4f5g的博客 670

【人工智能笔记】第二十节 efficientdet 目标检测模型,官方源码分析系列,BiFPN实现细节分析(二)

本章继续分析,BiFPN的实现部分。各种FPN结构如下: 如图,单个BiFPN有8个Node。在Efficientdet模型中,由如下类组成: FPNCells:按fpn_cell_repeats参数生成重复多个BiFPN。 FPNCell:代表单个BiFPN,包含8个Node。 FNode:将当前Node的多个输入融合,产生一个输出。 代码结构如下: FPNCells代码如下: class FPNCells(tf.keras.layers.Layer): .

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 4033

手撕代码系列:Conv2D

在实际的神经网络中,每个卷积核都会对应一个偏置值。这意味着如果网络有多个卷积核,每个卷积核的输出都可以加上对应的偏置。

qq_55794606的博客 910

Mask RCNN训练自己的数据集(修正及windows下使用labelme)

原文参考:https://blog.youkuaiyun.com/l297969586/article/details/79140840/ labelme编译并使用: 源码:https://github.com/tfwcn/labelme 源码已改成批量转Json的文件 Logs 2018/11/8 修改成自动保存到图片目录下到json文件夹中。需预先建立文件夹。 以前用过该工具的,请先删除C:...

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 3111

工程师必读一次性讲明白系列(十三)眼图、阻抗匹配、信号一致性、射频匹配、电磁感应

概念主要作用影响因素解决方法眼图评估信号质量,显示失真和噪声噪声、信号失真、时序抖动改善信号源、使用低噪声组件阻抗匹配避免信号反射,提高传输效率阻抗不匹配、传输线路特性使用匹配电路、适配器信号一致性保证信号稳定准确传输传输线路、噪声干扰使用屏蔽、滤波器,选择合适线路射频匹配确保射频信号高效传输天线设计、阻抗不匹配使用射频匹配器、调整天线设计电磁感应防止电磁干扰对信号的影响设备之间的电磁干扰(EMI)屏蔽、接地、滤波器。

weixin_43199439的博客 160

数据本体论如何指导数仓建模?

数据本体论指导数仓建模的核心在于构建业务语义与数据结构的桥梁。该方法从业务域中抽象标准化知识体系,包含核心概念、属性、关系和规则五大要素,并将其映射为分层数仓模型。通过"业务本体梳理→本体建模→模型映射→治理迭代"的流程,实现数仓从"结构存储"到"语义载体"的升级。相比传统建模,该方法能解决语义不一致、跨域融合难等问题,使数仓具备更好的可扩展性和业务对齐性。实践表明,以数据本体论为指导的数仓建模能显著提升数据资产的可理解性和复用价值。

石榴姐yyds 395

MaskRCNN RPN网络分析

在每个锚生成5种大小和3种形状的候选框(每层特征对应一种大小,每个锚点对应3种形状)。并进行两层卷积后,做前景与背景的分类,与候选框的偏移量回归。与目标重叠> = 0.7则为前景,与目标重叠<= 0.3则为背景,其余框去掉。 ############################################################ # Region Propos...

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 3019

【YOLOv11】070、YOLOv11异常检测:正常数据训练下的异常目标识别

本文探讨了如何利用YOLOv11模型进行工业异常检测,重点介绍了仅使用正常样本训练模型的创新方法。文章首先通过产线误报案例引出异常检测的核心问题,阐述了YOLOv11作为特征提取器的改造思路,包括正常数据训练、特征空间构建和异常度量等关键步骤。实战部分提供了精简代码示例,强调数据增强控制、特征层选择和自编码器应用等技巧。作者还总结了容易出错的细节,如特征选择、阈值设定和计算效率优化等,并给出实用建议:从简单方法入手、重视可视化、确保数据质量、部署时设置复核机制等。最后指出该方法虽能减少对异常样本的依赖,但需

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 235

jupyter 添加 Anaconda 环境

conda install notebook ipykernel # 添加环境,环境名为 py3 python -m ipykernel install --user --name py3 --display-name "Python (py3)"  

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 2392

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【人工智能笔记】第四节:基于TensorFlow 2.0实现CNN-RNN目标检测网络(自定义训练过程)

该文章使用WIDER FACE素材训练,下载地址: http://shuoyang1213.me/WIDERFACE/ 例子源码: https://github.com/tfwcn/AI/blob/master/CNN/face_detection.py 这次使用的网络由Encoder(编码器)与Decoder(解码器)组成。Encoder负责图片特征提取。再由Decoder循环输出...

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 2314

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【人工智能笔记】第二十七节 tensorflow 2.0 中保存模型的方式及注意事项

在 tensorflow2 中,保存模型有多种方法,方法都在tf.keras.models下面: 保存模型:save_model 或 model.save,读取模型:load_model。这里可保存成TensorFlow格式或者HDF5 文件。 只保存模型权重:model.save_weights,读取模型权重:model.load_weights。这里同样可以保存成TensorFlow格式或者HDF5 文件。 从配置读取模型结构:model.from_config(model.get_c...

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 2302

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【人工智能笔记】第八节:强化学习算法简介及DQN人工智能算法Tensorflow 2.0实现

强化学习算法 主要应用在游戏AI、自动驾驶、仿生机器人等场景。如在某个环境(游戏、驾驶路上),执行特定动作后,导致状态发生改变,产生不同结果(对应不同激励值,有正负),这种类型的场景都能使用强化学习。 其中 DQN 算法是由 Google 提出的,不久前 Google 的 AlphaGo (围棋机器人)就是由该算法演变产生。 传统强化学习方法 Q-learning Q-learning 属于 of...

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 2191

【人工智能笔记】第十九节 efficientdet 目标检测模型,官方源码分析系列,Backbone实现细节(一)

这次是根据官方源码,分析efficientdet模型实现细节。因官方代码基于谷歌的automl框架实现,有很多选项配置,该系列基于默认配置,只关注一些实现细节,一些简单的层会粗略带过,计划分为如下章节: Backbone实现细节分析 BiFPN实现细节分析 Box与Class回归细节分析 Loss计算分析 Optimizer梯度计算分析 efficientdet模型结构如下: 代码结构如下: 对应代码位于efficientdet/keras/efficientdet_keras.py:

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 2000

【人工智能笔记】第五节:基于TensorFlow 2.0进行股票预测(JIT与Eager双模式实现)

该模型是典型的数据预测模型。实现多参数输入含时序,预测多个结果数据。 输入维度(batch_size,历史数据长度,输入参数数量),这里取15个维度,包含:年、月、日、上证指数、深证指数与目标股票(开盘、最高、最低、收盘)*3。 输出维度(batch_size,预测数据长度,输出参数数量),这里取12个维度,包含:上证指数、深证指数与目标股票(开盘、最高、最低、收盘)*3。 训练流程,将数据...

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 1798

【人工智能笔记】第二十四节 tensorflow 2.0 自定义模型训练流程,采用动态学习速率加快训练过程

本节介绍如何在tenserflow2.0下自定义模型训练流程。首先我们先实现一个正常的训练流程,然后再改变训练流程,加快训练收敛速度。下面分开两部分讲解。 一、正常训练流程 通过重构模型里train_step(self,data)方法,可自定义训练流程。同理重构test_step(self,data)方法,可自定义测试流程。 正常训练流程: 拆分数据,根据dataset将输入x与label拆分开。 将x输入model,正向传播,获得结果y_pred。 label与结果计算loss。 通过l..

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 1765

【人工智能笔记】第十节 Tensorflow 2.0 实现指针仪表方向纠正及指针识别(上)

这次目标是实现指针仪表方向纠正及指针识别。这现实情况下,要做指针仪表识别,因为各种拍摄角度、光线与指针值的不同,通常需要标注大量素材,而且这种标注相对复制。因此为解决该问题,我使用了迁移学习的方法,下面将详细讲解。 这次将由三部分讲解整个过程: 搭建Django服务,利用ECharts报表生成虚拟仪表图,作为第一阶段的训练素材。 编写模型训练与识别代码,并利用虚拟图做预训练。 人手标注现实...

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 1712

【人工智能笔记】第一节:基于Keras的seq2seq聊天机器人实现

源码:https://github.com/tfwcn/AI Word.txt为用到的字符集,本文用的只包含训练集里的字。 ai.txt为训练素材,格式:问题1\t回答1\n问题2\t回答2\n LSTM原理图: σ代表:sigmoid函数 训练过程图: 代码如下: import keras as K import matplotlib.pyplot...

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 1711

【人工智能笔记】第二节:Mask R-CNN物体检测原理及结构分析

原论文地址:http://cn.arxiv.org/pdf/1703.06870v3 Mask R-CNN是在Faster R-CNN的物体检测基础上,增加了物体分割部分,并做了一些优化,下面会作具体描述。 下面为Faster R-CNN的网络结构图: 下面为Mask R-CNN的网络结构图: Mask R-CNN相对于Faster R-CNN改变如下: 1.使用ResNet1...

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 1677

【人工智能笔记】第三十一节:AutoML系列,用NNI框架进行神经网络架构搜索与超参调优(一)

本章节介绍AutoML框架NNI的安装及使用方法。NNI为微软开发的AutoML框架,支持多种模型的自动调参及架构搜索等功能。

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 1641

【人工智能笔记】第十二节 Tensorflow 2.0 实现指针仪表方向纠正及指针识别(下)

相关资料: 【人工智能笔记】第十节 Tensorflow 2.0 实现指针仪表方向纠正及指针识别(上) 【人工智能笔记】第十一节 Tensorflow 2.0 实现指针仪表方向纠正及指针识别(中) 这一节,会介绍如何使用现实素材继续训练模型,来完成真正的仪表识别。首先我们会使用标注工具对素材进行标注,然后使用实际标注素材进行训练,编写相应的训练代码。下面,我会逐步介绍如何实现。 一、使用标...

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 1617

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 255
上一篇: 【人工智能笔记】第三十三节:TF2实现VITGAN对抗生成网络,Mapping NetWork 实现
下一篇: 【人工智能笔记】第四十二节:TF2实现VITGAN对抗生成网络,PatchEmbedding 实现
PPHT-H
博客等级 码龄18年 6254粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PPHT-H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值