当前位置: 首页 > article >正文

Python创意:AI图像生成

1. 基本概念

AI 图像生成通常基于以下几种方法:

一.生成对抗网络 (GAN)

生成对抗网络(GAN,Generative Adversarial Network)是一种深度学习框架,主要用于生成新的、类似于训练数据的样本。自2014年由Ian Goodfellow及其同事提出以来,GAN 已在许多领域得到了广泛应用。

1. GAN 的基本构架

GAN的基本构架包括两个主要组件:

  1. 生成器(Generator)

    • 生成器是一个神经网络,其任务是从一种随机噪声中生成看起来像真实数据的样本。
    • 生成器通过训练优化其参数,以生成能够欺骗判别器的图像。
  2. 判别器(Discriminator)

    • 判别器同样是一个神经网络,其任务是区分输入数据是真实的(来自训练数据)还是伪造的(由生成器生成的)。
    • 判别器通过输入真实样本和生成样本来学习,以提高其判断的准确性。

这两个组件在训练过程中相互竞争,生成器不断改进其生成的样本,而判别器也在不断提高区分真实与虚假样本的能力。

2. GAN 的工作原理

GAN 的训练过程可以分为以下几个步骤:

  • 初始化:生成器和判别器的网络结构被建立,并初始化参数。

  • 训练过程

    1. 首先,使用真实数据训练判别器,使其能够辨别真实数据和生成数据。
    2. 然后,生成器使用随机噪声生成虚假样本,并训练判别器去识别这些样本。生成器的目标是使判别器无法正确分辨。
    3. 判别器预测生成样本的真实性,并根据结果更新其参数。
    4. 最后,根据判别器的反馈更新生成器的参数,以生成更真实的样本。
  • 迭代:上述步骤交替进行,直到达到预定的训练轮数或生成样本的质量达到标准。

3. GAN 的损失函数

GAN 的损失函数可以解释为两个网络之间的对抗过程:

  • 判别器的损失函数 @D:

D(x)=−log⁡(D(x))−log⁡(1−D(G(z)))D(x)=−log(D(x))−log(1−D(G(z)))

其中,D(x)D(x) 是判别器对真实样本 xx 的输出,G(z)G(z) 是生成的虚假样本,zz 是随机噪声。

  • 生成器的损失函数 @G:

G(z)=−log⁡(D(G(z)))G(z)=−log(D(G(z)))

生成器的目标是最大化判别器对生成样本 G(z)G(z) 预测的概率。

4. GAN 的变种

随着 GAN 的发展,研究者们提出了多种变体,以适应不同的应用需求,常见的包括:

  • 条件 GAN (Conditional GAN):在生成过程中引入条件信息,使生成样本可以根据特定条件生成(例如,生成特定类型的图像)。

  • 深度卷积 GAN (DCGAN):利用卷积神经网络(CNN)来构建生成器和判别器,提高生成图像的质量。

  • 渐进式 GAN (Progressive GAN):通过逐步增加生成器和判别器的复杂度,使生成的图像更加精细。

  • CycleGAN:允许在没有配对训练数据的情况下进行风格转换,例如将马的图像转换为斑马的图像。

5. 应用领域

生成对抗网络在许多领域具有广泛的应用,包括但不限于:

  • 图像生成:生成高分辨率的图像,广泛用于艺术创作、照片编辑等。

  • 超分辨率重建:将低分辨率图像转换为高分辨率图像,提高图像质量。

  • 图像风格迁移:将一种艺术风格应用于照片或视频,例如将照片转化为梵高风格。

  • 数据增强:在计算机视觉任务中,生成更多的训练样本以提高模型的泛化能力。

  • 生成文本:在某些变种中,GAN也被应用于生成自然语言文本。

6. 挑战与未来方向

尽管 GAN 取得了显著成就,但也面临一些挑战:

  • 不稳定性:训练过程中生成器和判别器往往难以收敛,可能导致训练不稳定。

  • 模式崩溃:生成器可能只生成有限的样本类型,失去多样性。

  • 评估标准:缺乏统一的标准来量化生成图像的质量。

未来的研究可能集中在提高训练的稳定性、减轻模式崩溃以及开发更有效的评估指标上。

7. 结论

生成对抗网络是当前深度学习和机器学习领域的重要研究方向,凭借其强大的图像生成能力, GAN 在多个应用场景中展现出巨大潜力。随着技术的不断进步,成为AI生成内容的重要工具。

二. 变分自编码器 (VAE)

变分自编码器(Variational Autoencoder,简称 VAE)是一种生成模型,结合了概率图模型与深度学习的优势,用于生成新数据样本。自2013年由D. P. Kingma和M. Welling提出以来,VAE已成为生成建模的一个重要工具。以下是对 VAE 的详细介绍。

1. VAE 的基本概念

变分自编码器是一种自编码器,它允许从潜在空间中生成样本。VAE的主要构架包括两个部分:

  • 编码器(Encoder): 该网络将输入数据映射到潜在空间的参数(通常是均值和方差)。

  • 解码器(Decoder):该网络将从潜在空间采样得到的点映射回原始数据空间,以生成新样本。

VAE 的核心在于其利用变分推理来优化生成模型的参数,这使得它可以有效生成多样化的样本。

2. VAE 的工作原理

VAE 的工作原理可以分为以下步骤:

2.1 编码过程
  1. 输入数据:将输入数据 xx 传递给编码器。

  2. 潜在空间表示:编码器输出用于形成潜在分布的两个参数:均值 μμ 和对数方差 log⁡(σ2)log(σ2)。

q(z∣x)=N(z;μ,σ2)q(z∣x)=N(z;μ,σ2)

这里的 zz 是在潜在空间中的表示,NN 表示高斯分布。

  1. 重参数化技巧:为避免在反向传播中出现不连续性,从标准正态分布中随机采样:

z=μ+σ⋅ϵ,ϵ∼N(0,I)z=μ+σ⋅ϵ,ϵ∼N(0,I)

2.2 解码过程
  1. 生成样本:将潜在样本 zz 输入到解码器中,生成输出样本 x^x^:

p(x∣z)=N(x;x^,σx2)p(x∣z)=N(x;x^,σx2​)

其中,x^x^ 是重构的数据。

3. 损失函数

VAE 的损失函数由两部分组成,通常称为重构误差Kullback-Leibler(KL)散度

L=Eq(z∣x)[log⁡p(x∣z)]−DKL(q(z∣x)∣∣p(z))L=Eq(z∣x)​[logp(x∣z)]−DKL​(q(z∣x)∣∣p(z))

  • 重构误差:衡量生成样本与真实样本之间的差异,一般使用均方误差(MSE)或二元交叉熵。

  • KL 散度:衡量编码器生成的潜在分布 q(z∣x)q(z∣x) 与先验分布 p(z)p(z)(通常为一个标准正态分布)之间的差异。

4. VAE 的优势

  • 高效生成:VAE 能够通过参数化的方式来描述潜在空间,允许对新样本进行高效生成。

  • 连续性:由于潜在空间是通过正态分布进行描述,VAE 能够有效生成多样化的样本。

  • 推理能力:具有生成模型的特性,可用于推理新样本并进行数据回归分析。

5. VAE 的变种

随着研究的深入,许多变种的 VAE 出现,以适应不同的任务和需求:

  • 条件 VAE (Conditional VAE):通过条件变量来控制生成样本的特定属性,适用于生成特定类别的数据。

  • 离散 VAE:用于处理离散数据(如文本),通过变分推理结合离散变量。

  • 深度 VAE:增加网络的深度与复杂性,能够生成更复杂的样本。

  • β-VAE:在损失函数中引入超参数 β,以平衡重构误差和 KL 散度,从而提高生成样本的多样性。

6. 应用领域

变分自编码器在多个领域均有广泛的应用,包括:

  • 图像生成:VAE 被广泛用于生成新的图像,例如人脸、手写数字等。

  • 数据增强:通过生成新样本增强训练数据集,提高模型的泛化能力。

  • 缺失数据填充:在数据不完整的情况下,VAE 能够生成合理的填充数据。

  • 异常检测:通过学习正常数据的分布,VAE 可以有效识别与众不同的数据点。

7. 挑战与未来方向

尽管 VAE 在生成建模中具有许多优点,但仍面临一些挑战:

  • 生成质量:相比于 GAN,VAE生成的图像质量通常较低,有时出现模糊现象。

  • KL 散度的选择:如何选择合适的先验分布和超参数仍是研究的热点。

未来的研究方向可能集中在改进生成质量、处理高维数据和将 VAE 应用于更复杂的任务等方面。

8. 结论

变分自编码器是生成模型中的一个重要工具,集生成与编码于一体,具备生成新样本的潜力。随着研究的深入,VAE 的应用范围不断扩大,为各类任务提供了新的解决方案。

三. 扩散模型

扩散模型(Diffusion Models)是一类新兴的生成模型,近年来在图像生成领域取得了显著成功。这种模型最早是通过模拟物理过程(如扩散和去噪)来生成数据样本,尤其在生成高质量图像方面表现出色。以下是对扩散模型的详细介绍。

1. 扩散模型的基本概念

扩散模型的核心思想是通过逐步添加噪声,然后反向去噪来生成数据样本。该模型由两个主要过程组成:

  • 正向扩散过程(Forward Diffusion Process):向真实数据样本逐渐添加噪声,最终将其转化为纯噪声。
  • 反向扩散过程(Reverse Diffusion Process):从噪声开始,逐步去除噪声以生成新的样本。

2. 扩散过程

2.1 正向扩散过程

在正向扩散过程中,原始样本 x0x0​ 经过 T 个时间步骤 tt 加入噪声,生成中间样本 xtxt​:

xt=αtxt−1+1−αtϵxt​=αt​​xt−1​+1−αt​​ϵ

其中:

  • ϵϵ 是来自某个已知分布(如标准正态分布)的噪声。
  • αtαt​ 是一个逐渐减小的超参数,控制着噪声的添加。

最终,通过多次这样的扩散过程,真实样本 x0x0​ 变成接近于随机噪声的 xTxT​。

2.2 反向扩散过程

在反向扩散过程中,模型旨在通过来自噪声 xTxT​ 的样本进行重建,逐步去除噪声以生成新的样本 x~0x~0​。

反向过程中可以表达为:

xt−1=1αt(xt−1−αt1−αt−1ϵθ(xt,t))xt−1​=αt​​1​(xt​−1−αt−1​​1−αt​​​ϵθ​(xt​,t))

这里的 ϵθϵθ​ 是我们要训练的神经网络,负责预测在时间步骤 tt 添加到样本中的噪声。

3. 损失函数

扩散模型通常使用均方误差(MSE)作为损失函数,以使得网络预测的噪声与实际噪声相对应。损失函数可以表示为:

L(θ)=Et,x0,ϵ[∥ϵ−ϵθ(xt,t)∥2]L(θ)=Et,x0​,ϵ​[∥ϵ−ϵθ​(xt​,t)∥2]

4. 扩散模型的优点

扩散模型相较于传统生成模型(如 GAN 和 VAE)具有一些显著的优点:

  • 生成质量:扩散模型能够生成高质量的图像,尤其是在细节和纹理上表现突出。

  • 模式崩溃问题:扩散模型不易发生模式崩溃,这是 GAN 中常见的问题。

  • 样本多样性:通过多步噪声去除,扩散模型产生的样本通常具有更高的多样性。

5. 应用领域

扩散模型在多个领域显示出广泛的应用潜力:

  • 图像生成:如 DALL-E 2 和 Stable Diffusion 等都是基于扩散模型的高质量图像生成工具。

  • 图像修复与超分辨率:应用于低质量图像的修复和提升图像分辨率。

  • 文本到图像生成:通过给定文本描述生成对应图像,已广泛应用于创意行业。

  • 医学图像生成:在医学成像中用于生成合成样本,改善数据稀缺问题。

6. 当前研究方向与挑战

尽管扩散模型在生成任务中取得了显著进展,但仍有一些挑战和研究方向:

  • 效率问题:扩散模型通常需要多个步骤才能生成样本,这导致计算速度相对较慢。研究者们正在探索如何加速生成过程。

  • 推理能力:改进模型的推理能力,使其能够更好地处理复杂任务,如条件生成。

  • 可调性与控制:通过调整模型的参数或引入先验知识,提高生成结果的可控性和可靠性。

7. 结论

扩散模型是一种值得关注的生成建模方法,展示了与其他生成模型相比的优势。随着研究的深入,该模型在图像生成及其他领域的应用潜力将不断扩大。

2. 常用工具和库

在机器学习和深度学习领域,有许多常用的工具和库可供研究和开发使用。以下是一些流行的工具和库,以及它们的主要功能和应用场景。

1. TensorFlow

概述
  • 开发者:Google
  • 语言:Python(支持多种语言)
主要功能
  • 深度学习框架,支持构建和训练各种类型的神经网络。
  • 提供高效的计算图机制和自动微分功能。
  • 支持分布式训练和多 GPU 计算。
  • 具有丰富的工具集,如 TensorBoard(可视化工具)、TensorFlow Serving(模型服务)等。
应用场景
  • 图像识别、自然语言处理、时间序列预测等。

2. PyTorch

概述
  • 开发者:Facebook(Meta)
  • 语言:Python
主要功能
  • 动态计算图,允许灵活地构建和修改模型。
  • 丰富的社区支持,有许多现成的模型和库可供使用。
  • 集成了 TorchScript 用于在生产环境中高效执行模型。
应用场景
  • 学术研究、计算机视觉、语言处理、生成模型(如 GAN 和 VAE)。

3. Keras

概述
  • 开发者:François Chollet(后并入 TensorFlow)
  • 语言:Python
主要功能
  • 高级神经网络 API,易于使用,适合初学者。
  • 可以在 TensorFlow 或 Theano 后端上运行。
  • 提供简单的模型构建、训练和评估接口。
应用场景
  • 快速原型开发、教育和简单的深度学习模型实现。

4. Scikit-learn

概述
  • 开发者:社区驱动
  • 语言:Python
主要功能
  • 提供简单易用的机器学习工具,支持多种算法,包括分类、回归、聚类等。
  • 包含数据预处理、特征选择、模型选择和评估工具。
  • 易于与 NumPy 和 Pandas 等库结合使用。
应用场景
  • 传统机器学习算法的实现,如决策树、支持向量机、随机森林等。

5. OpenCV

概述
  • 开发者:OpenCV.org(社区驱动)
  • 语言:C++,Python,Java
主要功能
  • 计算机视觉库,提供实时图像处理函数。
  • 支持图像和视频的读取、写入、处理和分析。
  • 包含机器视觉、特征检测、目标跟踪等高级功能。
应用场景
  • 图像和视频处理、人脸识别、物体检测等。

6. Hugging Face Transformers

概述
  • 开发者:Hugging Face
  • 语言:Python
主要功能
  • 提供用于自然语言处理的预训练模型和工具,支持 BERT、GPT、T5 等多种架构。
  • 支持模型的快速部署和微调。
  • 提供易于使用的接口,适合初学者和研究者。
应用场景
  • 问答系统、文本生成、语言翻译、情感分析等。

7. FastAPI

概述
  • 开发者:Sebastián Ramírez
  • 语言:Python
主要功能
  • 高性能的 Python Web 框架,适合快速构建 API 和微服务。
  • 采用异步编程,支持高并发。
  • 自动生成 OpenAPI 文档,便于前后端协作。
应用场景
  • 部署机器学习模型的 API、数据服务和微服务。

8. NVIDIA CUDA 和 cuDNN

概述
  • 开发者:NVIDIA
  • 语言:低级 API(C/C++),Python 可通过 TensorFlow 和 PyTorch 等框架使用
主要功能
  • CUDA:并行计算平台和 API,支持 GPU 加速计算。
  • cuDNN:针对深度学习的 GPU 加速库,加速卷积神经网络的训练和推理。
应用场景
  • 从 GPU 加速的深度学习训练,提高大规模模型的计算效率。

9. Jupyter Notebook

概述
  • 开发者:开源社区
  • 语言:Python(支持多种语言)
主要功能
  • 交互式计算环境,支持数据分析、可视化和动态代码执行。
  • 支持 Markdown,便于创建文档和报告。
应用场景
  • 数据探索、模型实验、文档编写和分享。

10. Matplotlib 和 Seaborn

概述
  • 开发者:社区驱动
  • 语言:Python
主要功能
  • Matplotlib:用于创建静态、动态和交互式可视化的基础库。
  • Seaborn:基于 Matplotlib 的绘图库,提供更美观的统计图表和简单的接口。
应用场景
  • 数据可视化、模型评估和结果展示。

结论

以上这些工具和库为机器学习和深度学习研究提供了强大的支持,涵盖了数据处理、建模、训练、推理和可视化的方方面面。根据具体的项目需求和个人的技术背景,选择合适的工具和库可以大大提高工作效率。

3. 应用案例

在机器学习和深度学习领域,应用案例涵盖了从图像生成到自然语言处理等众多方向。以下是一些具体的应用案例,展示了各种模型(如 GAN、VAE 和扩散模型)在实际生活和行业中的应用场景。

1. 图像生成与编辑

应用案例:艺术创作
  • 模型:GAN、VAE、扩散模型
  • 描述:使用 GAN 或扩散模型生成新的艺术作品,根据提示或风格输入生成图像。例如,OpenAI 的 DALL-E 和 Stable Diffusion 模型可以基于用户输入的自然语言描述生成图像。
  • 实例
    • DALL-E:可接受用户的文本输入,如“一个穿着宇航服的猫”,并生成相应的图像。
    • Artbreeder:利用变分自编码器允许用户混合不同风格的图像,创建新的艺术作品。

2. 文本生成与处理

应用案例:自然语言处理
  • 模型:BERT、GPT、Transformers
  • 描述:使用预训练的语言模型生成文本、进行文本补全或翻译。GPT-3 可以生成连贯的段落或回答问题。
  • 实例
    • ChatGPT:用于智能客服、教育辅导和内容创作,通过自然对话生成合适的响应。
    • Google Translate 和 DeepL:通过对比大量语言对的样本进行翻译,提高翻译的流畅性和准确性。

3. 图像分类与识别

应用案例:计算机视觉
  • 模型:卷积神经网络(CNN)
  • 描述:使用深度学习模型对图像进行分类和对象识别,例如自动标记照片中的人物或物体。
  • 实例
    • ImageNet:通过大量标注的图片训练深度学习模型,提高图像分类的准确率。
    • YOLO(You Only Look Once):可以实时检测和识别物体,广泛应用于无人驾驶、安防监控等领域。

4. 医学影像分析

应用案例:医疗诊断
  • 模型:深度学习模型(如 CNN)、VAE
  • 描述:利用深度学习模型分析医学影像,如 MRI 或 CT 扫描,以帮助医生进行疾病诊断。
  • 实例
    • 肺结节检测:通过深度学习模型分析 CT 扫描图像,自动检测肺结节的存在。
    • 病理图像分类:对切除的组织样本进行分类,帮助检测癌症等疾病。

5. 自动化与机器人

应用案例:自主导航
  • 模型:强化学习、深度学习
  • 描述:使用强化学习训练机器人或无人机,通过环境反馈进行自主导航。
  • 实例
    • 无人驾驶汽车:通过深度学习模型分析传感器数据,识别路况和行人,实现自主驾驶。
    • 机器人手臂:通过学习在特定任务(如装配、抓取)中的操作,优化动作序列。

6. 情感分析与舆情监测

应用案例:社交媒体分析
  • 模型:循环神经网络(RNN)、BERT
  • 描述:使用情感分析模型评估用户在社交媒体上的评论情绪。
  • 实例
    • 品牌监测:通过分析社交媒体帖子,评估人们对某品牌或产品的情感倾向。
    • 市场调研:分析顾客反馈,帮助公司改进产品和服务。

7. 推荐系统

应用案例:个性化推荐
  • 模型:协同过滤、深度学习
  • 描述:根据用户的历史行为数据(如观看历史、购买记录)为其推荐商品或内容。
  • 实例
    • Netflix:通过分析用户观看历史,推荐可能感兴趣的电影和电视剧。
    • Amazon:根据用户的购买记录和偏好,推荐相关商品。

4. 发展趋势

机器学习和深度学习领域正在快速发展,随着新技术和方法的不断涌现,许多发展趋势正在形成。以下是一些主要的发展趋势,涵盖了模型架构、应用、数据处理和伦理等方面。

1. 新的模型架构与算法

1.1 长短期记忆网络 (LSTM) 和 Transformer
  • 趋势:Transformer 结构(如 BERT 和 GPT 系列)的成功促使更多研究者探索基于此的模型。相较于 RNN,Transformer 处理长程依赖和并行计算更为高效,已被广泛应用于自然语言处理。
  • 实例:GPT-4、BERT、T5 等。
1.2 自监督学习
  • 趋势:自监督学习方法越来越多,允许模型通过未标注的数据学习特征,降低对人工标注数据的需求。
  • 实例:SimCLR、BYOL 和 MoCo 等自监督学习方法用于图像和表示学习。
1.3 多模态学习
  • 趋势:研究者越来越关注将图像、文本、音频等不同模态的数据结合,以提高理解和生成能力。
  • 实例:CLIP(Contrastive Language-Image Pretraining)可以将文本和图像配对。

2. 计算与基础设施的发展

2.1 边缘计算
  • 趋势:随着 IoT 设备和边缘设备的普及,更多的模型开始在边缘计算环境中运行,以减少延迟和带宽消耗。
  • 实例:使用轻量级模型(如 MobileNet、SqueezeNet)在智能手机和工业设备上实时处理数据。
2.2 TPU 和 GPU 的演进
  • 趋势:计算硬件的快速发展(如 TPU、GPU 和 FPGA)为训练深度学习模型提供了更高的性能,提高了模型的训练速度和效率。
  • 实例:Google Cloud 提供的 TPU 可以处理大规模深度学习任务,提高训练和推理的速度。

3. 数据利用与处理

3.1 数据增强
  • 趋势:数据增强技术在减少过拟合的同时,提升模型的鲁棒性和性能,得到了广泛研究。
  • 实例:使用对抗性训练、颜色变换、旋转等技术增强图像数据集。
3.2 强化学习与数据生成
  • 趋势:通过生成对抗网络(GAN)、变分自编码器(VAE)和扩散模型,生成新的训练数据,尤其在数据稀缺的情况下。
  • 实例:合成医学图像、生成文本等场景的应用。

4. 应用领域的扩展

4.1 人工智能在医学领域的应用
  • 趋势:机器学习和深度学习技术逐渐被应用于医疗影像分析、个性化医疗、药物发现等领域,能提高诊断的准确率和效率。
  • 实例:使用深度学习模型检测肺癌、白内障等疾病。
4.2 生成内容的使用
  • 趋势:随着生成模型的进步,如 DALL-E 和 ChatGPT,内容生成(图像、文本、音频等)正逐渐流行,影响媒体、广告、娱乐等行业。
  • 实例:AI 生成音乐、文章、艺术作品等。

5. 可解释性与伦理

5.1 模型可解释性
  • 趋势:随着 AI 应用在金融、医疗等关键领域中的普及,人们越来越关注 AI 模型的可解释性,以便信任和理解模型决策。
  • 实例:LIME、SHAP 等方法的应用,使得模型决策的透明度提高。
5.2 伦理与公平性
  • 趋势:对 AI 系统的伦理及社会影响的关注不断上升,例如数据隐私、算法偏见等问题。
  • 实例:企业和组织日益重视公平性,实施非歧视策略来缓解偏见。

6. 跨领域合作与开放科学

6.1 组织与社区合作
  • 趋势:越来越多的研究和开发都聚焦于跨学科合作,结合不同领域的知识和技术来解决复杂问题。
  • 实例:医疗、环境科学和社会科学领域的合作,利用 AI 技术应对全球性挑战。

5. 结论

AI 图像生成是一个充满创意和潜力的领域,Python 提供了强大的工具支持,使得开发者能够容易地实现复杂的模型。无论是艺术创作、游戏开发还是其他应用场景,AI 图像生成都在推动着技术的前沿。

相关文章:

Python创意:AI图像生成

1. 基本概念 AI 图像生成通常基于以下几种方法: 一.生成对抗网络 (GAN) 生成对抗网络(GAN,Generative Adversarial Network)是一种深度学习框架,主要用于生成新的、类似于训练数据的样本。自2014年由Ian Goodfellow及…...

[ctfshow web入门] web29

前置知识 eval: 把字符串按照 PHP 代码来执行,例如eval(“echo 1;”);这个函数拥有回显 system:使php程序执行系统命令,例如,system(“ls”);就是查看当前目录,这个拥有回显 preg_match:查找字符串是否匹配…...

5.JVM-G1垃圾回收器

一、什么是G1 二、G1的三种垃圾回收方式 region默认2048 三、YGC的过程(Step1) 3.1相关代码 public class YGC1 {/*-Xmx128M -XX:UseG1GC -XX:PrintGCTimeStamps -XX:PrintGCDetails -XX:UnlockExperimentalVMOptions -XX:G1LogLevelfinest128m5% 60%6.4M 75M*/private stati…...

Odrive0.5.1-FOC电机控制 arm_cos_f32.cpp arm_sin_f32.cpp代码实现(一)

01 查表法 在 our_arm_cos_f32 函数中,查表(Look-Up Table, LUT) 的核心是 预计算的正弦值表 sinTable_f32,通过巧妙利用余弦与正弦的相位关系实现快速余弦计算。以下是详细解析: 1. 查的是什么表? (1) 表内…...

机械臂只有位置信息是否可以进行手眼标定?

平常我在做手眼标定时,一般都是通过OpenCV的cv::calibrateHandEye函数进行求解,需要输入多组不同的机械臂位姿。今天遇到了一款舵机机器人,只能获取位置,得不到姿态信息,想着那就把姿态都设为0,结果求不出来…...

Python 数据分析01 环境搭建教程

Python 数据分析01 环境搭建教程 一、安装 Python 环境 访问 Python 官方网站 Python 官网,选择适合你操作系统的 Python 版本进行下载。下载完成后,运行安装程序。在安装过程中,建议选择“Add Python to PATH”选项,这样可以在…...

使用 Visual Studio 2022 (VS2022) 编译 FreeCAD 1.0.0 的详细教程

一、环境准备 官方教程:在 Windows 上编译 - FreeCAD Documentation Windows 10/11(推荐) git vs2022 cmake 3.26.4 Doxygen1.12 二、获取源码与依赖 版本关系 打开Git Bash或CMD,执行以下命令 git clone --recurse-sub…...

Java高性能并发利器-VarHandle

1. 什么是 VarHandle?​​ VarHandle 是 Java 9 引入的类,用于对变量(对象字段、数组元素、静态变量等)进行低级别、高性能的原子操作(如 CAS、原子读写)。它是 java.util.concurrent.atomic 和 sun.misc.…...

蓝桥杯单片机频率

long int Freq; unsigned int Timer_1000Ms; 加上 TMOD | 0x05; void Timer0Init(void) //0毫秒12.000MHz {AUXR & 0x7F; //定时器时钟12T模式TMOD & 0xF0; //设置定时器模式TMOD | 0x05;TL0 0x00; //设置定时初值TH0 0x00; //设置定时初值TF0 0; //清除TF0标…...

【Qt】【第三方库】spdlog日志模块的使用

版本 spdlog版本:1.5.0 采用1.5.0版本主要基于以下考虑:兼容Qt5.9.X版本和兼容C11。 spdlog 1.5.0下载地址:https://github.com/gabime/spdlog/releases/tag/v1.5.0 摘要 在Qt应用程序开发中,良好的日志系统至关重要。本文将介…...

elementui table禁用全选,一次限制勾选一项。

1、设置属性&#xff1a;selection-change“handleSelectionChange” <el-table:data"taskList"ref"tableDataRefs"selection-change"handleSelectionChange":header-cell-class-name"hideAllCheckbox">function handleSelecti…...

3.1多状态专题:LeetCode面试题17.16 按摩师

动态规划解决按摩师预约问题——以LeetCode面试题17.16为例 1.题目链接 LeetCode面试题17.16 按摩师 2.题目描述 一个有名的按摩师收到一系列的预约请求&#xff0c;每个预约都可以选择接受或不接受。但相邻的预约不能同时接受。给定一个包含各预约时长的数组 nums&#xf…...

遵循IEC 62304:构建安全可靠的医疗器械软件

目录 一、IEC 62304 标准概述 1. 标准定位与适用范围 二、核心内容与要求 1. 软件安全等级&#xff08;Software Safety Classification&#xff09; &#xff08;1&#xff09;分级标准 &#xff08;2&#xff09;分级依据 &#xff08;3&#xff09;验证要求 2. 软件…...

互联网三高-数据库高并发之分库分表

1 数据库概述 1.1 数据库本身的瓶颈 ① 连接数 MySQL默认最大连接数为100&#xff0c;允许的最大连接数为16384 ② 单表海量数据查询性能 单表最好500w左右&#xff0c;最大警戒线800w ③ 单数据库并发压力问题 MySQL QPS&#xff1a;1500左右/秒 ④ 系统磁盘IO、CPU瓶颈 1.2 数…...

UE5 在UE中创建骨骼动画

文章目录 创建动画的三种方式修改骨骼动画 创建动画的三种方式 方法一 打开一个已有的动画&#xff0c;左上角“创建资产/创建动画/参考姿势” 这将创建一个默认的A字形的骨骼&#xff0c;不建议这么做 方法二 打开一个已有的动画&#xff0c;左上角“创建资产/创建动画/当前…...

Day-01 前端 Web - HTMLCSS

目录 一、HTML 基础 1. HTML 简介 2. HTML 基本结构 3. 常用 HTML 标签 二、CSS 基础 1. CSS 简介 2. CSS 引入方式 3. 常用 CSS 选择器 4. 常用 CSS 属性 一、HTML 基础 1. HTML 简介 HTML&#xff08;HyperText Markup Language&#xff09;即超文本标记语言&…...

AWS出海合规解决方案:全球业务扩张的技术指南

1. 引言 随着企业加速全球化进程,出海业务面临的合规挑战日益复杂。AWS作为全球领先的云服务提供商,为企业提供了强大的工具和服务,以帮助它们满足各国的合规要求。本文将探讨如何利用AWS服务构建全面的出海合规解决方案。 2. 全球数据合规挑战 在开始讨论具体解决方案之…...

[ctfshow web入门] web38

信息收集 过滤多了php和file if(isset($_GET[c])){$c $_GET[c];if(!preg_match("/flag|php|file/i", $c)){include($c);echo $flag;}}else{highlight_file(__FILE__); }解题 更多解法参考 [ctfshow web入门] web37 我们选个最简单的。但是因为php被过滤了我们改用…...

汽车CAN总线采样点和采样率详解

写在前面 本篇文章主要讲解在汽车电子中CAN总线采样率的相关知识点,内容涉及CAN波特率、采样点、时间份额、同步跳转宽度以及采样率的计算。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) 1、CAN波特率 CAN波特率常规分为250kbps和500kbps,本文章主要以这两个波特率为…...

网络协议学习

最近在适配ESP32的网络驱动&#xff0c;借此机会先学习一下网络通信协议。 以太网帧、IP包及TCP与UDP的报文格式一文读懂网络报问中的检验和&#xff08;checksum&#xff09;—— 原理举例代码 提问腾讯元宝提示词&#xff1a; TCP窗口是干什么的拥塞窗口是什么的...

仙剑奇侠传98柔情版游戏秘籍

战斗秘技&#xff1a;在战斗中输入 “cheat”&#xff0c;然后输入 “v” 直接取胜&#xff1b;输入 “y” 敌人不攻击。另外&#xff0c;在战斗中按 “XJPXZ123” 加 “shift” 键&#xff0c;攻击力增加 1000&#xff05;。等级提升秘籍&#xff1a;当李逍遥等级到达 99 级时…...

Maven error:Could not transfer artifact

问题描述 当项目从私有仓库下载依赖时&#xff0c;Maven 报错&#xff0c;无法从远程仓库下载指定的依赖包&#xff0c;错误信息如下&#xff1a; Could not transfer artifact com.ding.abcd:zabk-java:pom from/to releases (http://192.1122.101/repory/mavenleases/): 此…...

pytorch 反向传播

文章目录 概念计算图自动求导的两种模式 自动求导-代码标量的反向传播非标量变量的反向传播将某些计算移动到计算图之外 概念 核心&#xff1a;链式法则 深度学习框架通过自动计算导数(自动微分)来加快求导。 实践中&#xff0c;根据涉及号的模型&#xff0c;系统会构建一个计…...

WindowsPE文件格式入门06.手写最小PE

https://bpsend.net/thread-346-1-1.html 实现目标 实现目标&#xff1a;手写实现不大于 200 Byte大小的PE文件&#xff08;又名&#xff1a;畸形PE/变形PE&#xff09;&#xff0c;要求MessageBox弹框显示一个字符串。实现要点&#xff1a;充分利用空间&#xff0c;在保证遵…...

并发编程--互斥锁与读写锁

并发编程–互斥锁与读写锁 文章目录 并发编程--互斥锁与读写锁1. 基本概念2. 互斥锁2.1 基本逻辑2.2 函数接口2.3示例代码12.4示例代码2 3. 读写锁3.1 基本逻辑3.2示例代码 1. 基本概念 互斥与同步是最基本的逻辑概念&#xff1a; 互斥指的是控制两个进度使之互相排斥&#x…...

记录第一次使用H5的WebBluetooth完成蓝牙标签打印机的(踩坑)过程

第1步 首先第一步&#xff0c;调试环境必须是https的&#xff0c;由于浏览器的强制安全策略&#xff0c;本地可以采用localhost 第2步 然后&#xff0c;如果打印需要服务UUID&#xff08;Service UUID&#xff09; 和 特征UUID&#xff08;Characteristic UUID&#xff09;&…...

2025 年“认证杯”数学中国数学建模网络挑战赛 A题 小行星轨迹预测

近地小行星&#xff08; Near Earth Asteroids, NEAs &#xff09;是轨道相对接近地球的小行 星&#xff0c;它的正式定义为椭圆轨道的近日距不大于 1.3 天文单位&#xff08; AU &#xff09;的小行星。 其中轨道与地球轨道最近距离小于 0.05A 且直径大于 140 米的小行星被…...

【WRF理论第十七期】单向/双向嵌套机制(含namelist.input详细介绍)

WRF运行的单向/双向嵌套机制 准备工作&#xff1a;WRF运行的基本流程namelist.input的详细设置&time_control 设置&domain 嵌套结构&bdy_control 配置部分 namelist 其他注意事项Registry.EM 运行 ARW 嵌套双向嵌套&#xff08;two-way nesting&#xff09;Moving …...

Spring Boot 3.4.3 和 Spring Security 6.4.2 结合 JWT 实现用户登录

在现代 Web 应用中&#xff0c;用户认证和授权是保障系统安全的核心环节。传统的 Session 认证方式在分布式系统或前后端分离场景下存在局限&#xff0c;而 JWT&#xff08;JSON Web Token&#xff09;作为一种无状态的认证机制&#xff0c;凭借其轻量、可扩展和跨服务的特性&a…...

Python 实现的运筹优化系统数学建模详解(0-1规划指派问题)

一、引言 在数学建模的广阔领域中&#xff0c;指派问题作为一类经典且重要的组合优化问题&#xff0c;频繁出现在各类实际场景里。例如&#xff0c;在人力资源管理中&#xff0c;如何将不同技能水平的员工高效地分配到各个项目&#xff0c;以实现项目成本最小化或收益最大化&am…...