基于Transformer架构的扩散模型
Scalable Diffusion Models with Transformers
本文介绍一篇发表于2023年国际计算机视觉大会(ICCV)的研究论文,该论文提出了一种基于Transformer架构的扩散模型,称为Diffusion Transformers (DiTs)。 通过用Transformer替代传统的U-Net架构,训练了一种作用于潜在图像块的扩散模型。 DiTs在大规模图像生成任务中展现出卓越的性能,成功实现了在ImageNet 256x256和512x512图像生成任务中的性能突破,表明了Transformer在扩散模型中的巨大潜力。
原文:W. Peebles and S. Xie, “Scalable Diffusion Models with Transformers,” 2023 IEEE/CVF International Conference on Computer Vision (ICCV), Paris, France, 2023, pp. 4172-4182, doi: 10.1109/ICCV51070.2023.00387.
Introduction
近年来,基于大规模数据集的深度学习模型训练显著推动了图像生成和处理领域的发展。特别是Transformer架构,凭借其在自然语言处理和高层次视觉任务中的成功,被迅速应用于生成模型领域。然而,现有扩散模型通常采用U-Net作为主干网络,对生成质量和扩展性存在一定限制。
本篇论文提出了一种基于Transformer的新型扩散模型,称为Diffusion Transformers (DiTs),旨在突破传统方法的瓶颈。该模型通过用Transformer替代U-Net,在潜在图像空间中直接建模,实现了以下创新与突破:
- 卓越的生成质量:在ImageNet 256×256类别条件生成基准测试中,最优模型DiT-XL/2取得了当前最优的Fréchet Inception Distance (FID)值2.27;
- 良好的扩展性:研究表明,通过增加Transformer深度/宽度或输入Token数量,模型的生成质量随着Gflops(前向计算复杂度)的提升而显著提高;
- 高效的计算性能:相比传统U-Net架构扩散模型,DiTs在计算成本更低的情况下达到了更优质的图像生成效果。
本论文的研究不仅验证了Transformer架构在低层次图像生成任务中的潜力,还为未来在大规模生成模型(如文本到图像生成)的应用提供了新的设计思路。
Diffusion Transformers
DiT架构总览
DiT整体架构
图中展示了**Diffusion Transformer (DiT)**的整体设计架构及其核心模块。
- 左侧部分:展示了完整的潜变量扩散模型(Latent Diffusion Transformer)流程,输入的潜变量首先通过patchify模块切分为小块,并转换为Token序列,随后通过多个DiT块进行处理,最终通过线性解码器恢复出噪声预测结果。
- 右侧部分:详细展示了不同类型的DiT块,包括自适应层归一化(adaLN-Zero)、交叉注意力(Cross-Attention)、以及上下文条件输入(In-Context Conditioning)三种变种的内部结构。
1.从输入到Token化:Patchify 模块
输入
Diffusion Transformer (DiT) 的输入是一组多通道潜变量特征图(Noised Latent),通常大小为 32×32×4。这些潜变量由前一时间步的噪声预测生成。在进入Transformer模型之前,潜变量需要经过Patchify模块的处理。
Patchify 模块的核心在于将图像或特征分割成小块(Patch),类似将一幅画分割成小块拼图。每个Patch大小由参数 p 决定,例如8×8或16×16。随后,这些Patch通过线性变换(Embed)被转化为一维Token序列,供Transformer进一步处理。
此外,时间步信息(Timestep ttt)和类别标签(Class Label ccc)作为条件信息,通过嵌入操作转化为向量Token,并直接拼接到输入Token序列中,为模型提供额外的上下文信息。
通过这种方式,Patchify 实现了从图像空间到序列空间的高效转换,为后续的Transformer建模奠定了基础。
2.DiT模块设计:条件信息的高效建模
在Diffusion Transformer中,DiT模块承担了条件信息融合和序列建模的核心任务。为了实现更灵活、更高效的条件建模,论文提出了四种模块设计:
- 上下文条件模块(In-context Conditioning) 这一设计最为直接,将条件信息(时间步 ttt 和类别标签 ccc)的向量嵌入作为额外的Token拼接到输入序列中,并与图像Token一并通过标准Transformer块处理。在最终输出前,这些条件Token会被移除。这种方法计算开销最低,但对复杂条件信息的表达能力相对有限。
- 交叉注意力模块(Cross-attention Block) 在这一设计中,条件信息被编码为独立的Token序列,与图像Token序列分离。Transformer块在多头自注意力(Multi-head Self-Attention)层后加入了一个多头交叉注意力层(Cross-attention),用于深度融合条件信息和主序列特征。尽管这种设计显著增强了条件信息的建模能力,但它也增加了约15%的计算复杂度。
- 自适应层归一化模块(adaLN Block) adaLN模块通过自适应层归一化动态调整每个维度的缩放和偏移参数 γ\gammaγ 和 β\betaβ,这些参数由条件信息向量的和回归而来。该模块在不增加太多计算开销的情况下,显著提高了条件信息的利用效率,是生成质量最佳的选择。
- 零初始化自适应层归一化模块(adaLN-Zero Block) 在adaLN的基础上,增加了零初始化策略:将残差连接之前的缩放参数初始化为零。这一改动使得每个残差块在初始阶段接近恒等映射,从而显著优化了训练的收敛速度。 通过这四种设计,DiT模块能够在生成质量和计算效率之间实现灵活权衡,并适应不同的任务需求。
3.模型规模:探索性能与效率的极限
model size
DiT 的设计空间还涵盖了模型规模的调整。具体来说,模型通过调整Transformer块的数量 NNN、隐藏维度大小 ddd 和注意力头数,实现对性能和复杂度的控制。
论文中提供了四种模型配置:DiT-S(小型)、DiT-B(中型)、DiT-L(大型) 和 DiT-XL(超大型)。这些配置的计算复杂度(FLOPs)范围从 0.3 Gflops 到 118.6 Gflops,覆盖了从轻量级任务到高分辨率生成的广泛需求。
实验表明,随着模型规模的扩大,生成质量显著提升,但计算开销也相应增加。
4. Transformer 解码器:从Token到清晰图像
在经过Transformer模块的处理后,Token序列需要还原为完整的图像。这一过程由线性解码器(Linear Decoder)完成。具体来说,解码器对每个Token应用线性变换,将其映射为大小为 p×p×2C的张量,其中 C 是输入图像的通道数。解码后的Token会被重新排列为原始的空间布局,从而生成噪声预测(Noise Prediction)和协方差预测(Covariance Prediction)。
在扩散过程中,模型逐步减少图像中的噪声,直到还原出高清图像。这一解码过程高度依赖于条件信息和Transformer模块的高质量建模,使得生成的每一帧都与输入条件信息保持一致。
Experiments
为了验证 Diffusion Transformer (DiT) 模型的性能和扩展性,论文设计了一系列实验,涵盖从不同模块设计到模型规模与计算效率的综合评估。以下是实验的详细分析与结果。
DiT模块设计性能对比
论文首先评估了四种不同的DiT模块设计(In-context Conditioning、Cross-attention、adaLN 和 adaLN-Zero)的性能。实验选择了最高复杂度的 DiT-XL/2 模型(118.6 Gflops)进行测试,并通过生成质量指标 FID-50K 随训练迭代的变化进行对比。
质量指标跟迭代次数关系
实验结果表明:
- adaLN-Zero 模块的表现最佳,其生成质量显著优于其他设计。在400K训练步数时,adaLN-Zero的FID值几乎是In-context Conditioning的一半。
- Cross-attention 虽然增强了条件信息融合能力,但计算复杂度增加了15%。
- In-context Conditioning 是最轻量级的设计,但对复杂条件的表达能力有限。
这些结果进一步证明了条件输入机制对生成质量的关键作用,而 adaLN-Zero 模块由于其高效的初始化策略(残差块初始为恒等映射)成为性能最佳的选择。
DiT模型扩展性能分析:模型规模与Patch大小的影响
为了研究模型规模和输入Patch大小对生成质量的影响,论文训练了12个不同配置的DiT模型,涵盖 DiT-S、DiT-B、DiT-L 和 DiT-XL 四种规模,以及Patch大小为 8、4、2 的组合。
扩展性能分析
实验结果总结如下:
- 模型规模扩展:如图上半部分所示,在保持Patch大小不变的情况下,随着模型规模从DiT-S逐渐增加到DiT-XL,生成质量(FID)在所有训练阶段均显著提升。
- Patch大小缩小:如图下半部分所示,在保持模型规模不变的情况下,减小Patch大小(即增加Token数量)同样显著提升了生成质量。
可视化扩展效果
论文通过对比不同DiT模型的生成图像,直观展示了扩展模型规模和计算复杂度的效果。
图像样本质量
在400K训练步数时,所有模型使用相同的噪声和类别标签生成样本。结果显示:
- 增加模型深度和宽度,或增加输入Token数量,均能显著提升生成图像的视觉质量。
- 生成样本在细节和纹理上更加逼真,体现了模型扩展的有效性。
与现有先进方法的对比
论文进一步在ImageNet 256×256和512×512数据集上评估了DiT-XL/2模型的性能,并与当前最先进的生成模型进行对比。
ImageNet 256×256
- 在ImageNet 256×256基准测试中,DiT-XL/2-G(cfg=1.50)实现了 2.27 FID,显著优于之前的最佳方法(LDM-4-G, FID=3.60)。
ImageNet 512 * 512
- 在ImageNet 512×512分辨率下,DiT-XL/2-G(cfg=1.50)的FID为 3.04,同样超越了所有先前模型,包括StyleGAN-XL和ADM。
实验结果表明,DiT-XL/2不仅生成质量优于基于U-Net的扩散模型,还具有更高的计算效率。例如,在相同任务中,DiT-XL/2的计算复杂度仅为524.6 Gflops,而ADM模型的计算复杂度高达1983 Gflops。
Conclusion
本文提出了 Diffusion Transformers (DiTs),一种基于Transformer的扩散模型主干网络。相比传统的U-Net模型,DiT展现出更强的性能,同时继承了Transformer架构在扩展性上的显著优势。
实验表明,DiT能够在多种生成任务中显著提升生成质量,并具备在更大模型规模和更多Token数量下持续提升性能的潜力。
如何学习AI大模型?
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。
相关文章:
基于Transformer架构的扩散模型
Scalable Diffusion Models with Transformers 本文介绍一篇发表于2023年国际计算机视觉大会(ICCV)的研究论文,该论文提出了一种基于Transformer架构的扩散模型,称为Diffusion Transformers (DiTs)。 通过用Transformer替代传统的…...
服务器上部署前端页面-实现IP+端口/index.html在线访问你的网页
首先一点,不管是那个框架开发的网页前端,最后都需要Build,构建完毕以后都是原始的HTML CSS JS 三样文件! 所以不管用原始的三剑客(HTML CSS JS)开发的前端还是用各类框架开发的前端界面(只是让开发简单…...
2024年华中杯数学建模B题使用行车轨迹估计交通信号灯周期问题解题全过程文档及程序
2024年华中杯数学建模 B题 使用行车轨迹估计交通信号灯周期问题 原题再现 某电子地图服务商希望获取城市路网中所有交通信号灯的红绿周期,以便为司机提供更好的导航服务。由于许多信号灯未接入网络,无法直接从交通管理部门获取所有信号灯的数据&#x…...
【C语言】SWP 文件:临时缓存文件
SWP 文件:临时缓存文件(紧急保护机制) 在 Linux 系统(包括 Ubuntu)中,SWP 文件是一种临时缓存文件,主要用于在编辑器(如 Vim)中紧急保护未保存的工作内容。当系统或编辑…...
【日常记录-Git】git switch
1. 简介 git switch是Git 2.23.0版本引入的一个新命令,用于切换分支和恢复工作树文件。其旨在提供一个更清晰、更直观的分支切换体验,以替代git checkout命令中用于分支切换的部分功能。 2. 常规操作 2.1 切换到已存在的分支 git switch <分支名>…...
Qt学习笔记第51到60讲
第51讲 记事本实现打开功能 回到第24个功能文件Notepad,给UI中的各个控件添加槽函数。 ①开始按钮 void Widget::on_btnOpen_clicked() {QString fileNameQFileDialog::getOpenFileName(this,tr("Open File"),"E:\\6_Qt Projects\\24_Notepad\\fi…...
灵途科技亮相2024世界传感器大会 分享光纤光源技术突破
12月1日至2日,2024世界传感器大会(WSS)在郑州国际会展中心隆重举办,泛自动驾驶领域光电感知专家灵途科技受邀参加“光纤传感器与激光雷达”分论坛,并在大会上带来《激光雷达用一体化光纤光源》专题演讲,同与…...
LeetCode刷题 -- 分治快排
目录 颜色分类题目解析算法原理代码 排序数组题目解析算法原理代码 数组中第K个最大元素题目解析算法原理代码 LCR 159. 库存管理 III题目解析算法原理代码 颜色分类 题目链接 题目解析 数组分为三块 算法原理 1.如果nums[i] 0,left, i下标对应元素交换,…...
pyqtgraph绘制实时更新数据的图
PyQtGraph是一个基于PyQt和NumPy的Python库,它专为实时数据可视化而设计。以绘制0~2π范围的ysin(x)为例,基本用法的代码如下: # codingutf-8import pyqtgraph as pg from pyqtgraph.Qt import QtGui, QtCore import numpy as np# pyqtgraph…...
使用 MATLAB 绘制三维散点图:根据坐标和距离映射点的颜色和大小
在数据可视化中,三维散点图是一种非常直观的方式来展示数据的分布。MATLAB 提供了强大的 scatter3 函数,可以用来绘制三维散点图,而通过调整点的颜色和大小,可以进一步增强图形的表现力。 在本篇博客中,我们将逐步讲解…...
ubuntu离线安装docker
首先下载对应的版本amd64 就是x86的 https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/需要挑选其他版本 https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/下载之后上传到服务器目录,分别执行以下文件 sudo dpkg -…...
iOS如何操作更新推送证书
最近收到一份邮件,应该如何操作呢,证书还是跟以前一样冲钥匙串直接申请吗 Hello, As we announced in October, the Certification Authority (CA) for Apple Push Notification service (APNs) is changing. APNs will update the server certificates in sandbox on January…...
# issue 8 TCP内部原理和UDP编程
TCP 通信三大步骤: 1 三次握手建立连接; 2 开始通信,进行数据交换; 3 四次挥手断开连接; 一、TCP内部原理--三次握手 【第一次握手】套接字A∶"你好,套接字B。我这儿有数据要传给你,建立连接吧。" 【第二次…...
【Linux】-学习笔记08
第五章、DNS域名解析服务器 目录 第五章、DNS域名解析服务器 1.简介 1.1DNS简介 1.2因特网的域名结构 1.3域名服务器的类型划分 1.4DNS域名解析的过程 递归查询(左侧) 迭代查询(右侧) 2.DNS服务器配置 2.1关于服务端 …...
RFdiffusion Denoise类解读
Denoise 类为蛋白质结构扩散模型的实现提供了核心功能,通过灵活的噪声调度、潜力场引导和子结构对齐,使得模型可以生成物理合理的结构序列,并在每个时间步迭代更新蛋白质的坐标和结构信息。 源代码: def get_next_frames(xt, px0, t, diffuser, so3_type, diffusion_mask,…...
HTML5 拖拽 API 深度解析
一、HTML5 拖拽 API 深度解析 1.1 背景与发展 HTML5 的拖拽 API 是为了解决传统拖拽操作复杂而设计的。传统方法依赖鼠标事件和复杂的逻辑计算,而 HTML5 提供了标准化的拖拽事件和数据传递机制,使得开发者能够快速实现从一个元素拖拽到另一个元素的交互…...
Vue 的生命周期钩子函数是什么?常见的生命周期钩子有哪些?
Vue 的生命周期钩子函数 Vue 的生命周期钩子函数是 Vue 组件在不同生命周期阶段自动调用的函数。生命周期分为创建、挂载、更新和销毁等阶段。理解这些钩子函数对于开发和调试 Vue 应用至关重要,因为它们使我们能够在组件生命周期的不同阶段执行特定的操作。 目录…...
uniapp中导入uview或者uview plus
关于SCSS uview-plus依赖SCSS,您必须要安装此插件,否则无法正常运行。 如果您的项目是由HBuilder X创建的,相信已经安装scss插件,如果没有,请在HX菜单的 工具->插件安装中找到"scss/sass编译"插件进行安…...
3D 生成重建017-StyleGaussian用文本或图像对你的3DGS内容进行风格迁移
3D 生成重建017-StyleGaussian用文本或图像对你的3DGS内容进行风格迁移 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 论文 “StyleGaussian: Instant 3D Style Transfer with Gaussian Splatting” 介绍了一种新颖的3D风格迁移方法 StyleGaussian,该方法通…...
【adb】iqoo系统精简垃圾内置应用
免责声明 这个得谨慎点,虽然我验证过两部手机和不同版本的系统,但是总会有特殊的存在、 本教程来自于互联网搜集整理, 按照本教程造成的用户设备硬件或数据损失,本人概不承担任何责任,如您不同意此协议,请不…...
Golang 字符串字面量表示方法
文章目录 1.普通字符串字面量(Double-Quoted String Literals)2.原始字符串字面量(Raw String Literals)3.字节字符串字面量(Byte Slice Literals)4.码值表示字符串字面量Unicode 转义序列UTF8 转义序列十六…...
【uni-app 微信小程序】新版本发布提示用户进行更新
知识准备 uni.getUpdateManager文档介绍 不支持APP与H5,所以在使用的时候要做好平台类型的判断,如何判断,参考条件编译处理多端差异 代码参考 export const updateApp () > {const updateManager uni.getUpdateManager()updateManag…...
Leetcode 739-每日温度
请根据每日 气温 列表 temperatures ,请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。 题解(单调递减栈) 什么时候用单调栈呢? 通常是一维数组,要寻找任…...
Gitee配置以及如何将本地项目提交到远程仓库
文章目录 准备远程仓库配置注册新建仓库 配置git 生成ssh,输入以下命令,然后连敲三次回车键配置公钥本地代码上传 准备 1.本地下载git 2.注册远程仓库账号 远程仓库配置 注册 官网:https://gitee.com 完成注册 新建仓库 头像->设置-…...
爬虫项目基础知识详解
文章目录 Python爬虫项目基础知识一、爬虫与数据分析1.1 Python中的requests库Requests 库的安装Requests 库的 get() 方法爬取网页的通用代码框架HTTP 协议及 Requests 库方法Requests 库主要方法解析 1.2 python中的json库1.3 xpath学习之python中lxml库html了解html结构html…...
【Leetcode Top 100 - 扩展】876. 链表的中间结点
问题背景 给你单链表的头结点 h e a d head head,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 数据约束 链表的结点数范围是 [ 1 , 100 ] [1, 100] [1,100] 1 ≤ N o d e . v a l ≤ 100 1 \le Node.val \le 100 1≤…...
16-01、JVM系列之:内存与垃圾回收篇(一)
JVM系列之:内存与垃圾回收篇(一) ##本篇内容概述: 1、JVM结构 2、类加载子系统 3、运行时数据区之:PC寄存器、Java栈、本地方法栈一、JVM与JAVA体系结构 JAVA虚拟机与JAVA语言并没有必然的联系,它只是与特…...
经典蓝牙(BT/EDR)蓝牙配对与连接
经典蓝牙的连接过程包括跳频,扫描,配置交换等过程。对ACL链路以及sco的连接过程也做详细的分析。 1. 为什么不配对便无法建立连接? 任何无线通信技术都存在被监听和破解的可能,蓝牙SIG为了保证蓝牙通信的安全性,采用…...
用 Python 从零开始创建神经网络(十四):L1 和 L2 正则化(L1 and L2 Regularization)
L1 和 L2 正则化(L1 and L2 Regularization) 引言1. Forward Pass2. Backward pass到此为止的全部代码: 引言 正则化方法旨在降低泛化误差。我们首先讨论的正则化形式是L1正则化和L2正则化。L1和L2正则化用于计算一个数值(称为惩…...
特殊的数学性质
一个数模9的结果等于它的每一位数相加和模9...
最长递增子序列&什么是继承性?C++中如何实现继承?继承的好处和注意事项有哪些?
最长递增子序列 方法一:暴力二维dp,初始状态:每个元素至少和自己构成一个上升序列,大小为1,状态转移:找到前面结尾数字小于当前数组元素的最长序列,当前位置的长度就是lenpre1. class Solutio…...
汽车IVI中控开发入门及进阶(三十五):架构QML App Architecture Best Practices
在Qt/QML工程的架构中,架构很重要,虽然本身它有分层,比如QML调用资源文件(图片等)显示GUI界面,后面的CPP文件实现界面逻辑,但是这个分类还有点粗。在实际开发中,界面逻辑也就是基于类cpp的实现,也开始使用各种面向对象的设计模式,实现更加优秀的开发架构,这点尤其在…...
面试题整理(二)
芯冰乐知识星球入口:芯冰乐...
编码及其代码
编码 形成文字所需bit点------有相应代号(编码---有好多种8/16/24/32)都已提前形成好,放哪哪就会形成那个文字 同一个文字在不同编码存的码不一样 用一种编码存的话,如果用另一种编码解析就会出现乱码 Windows默认编码为ANSI …...
python selenium(4+)+chromedriver最新版 定位爬取嵌套shadow-root(open)中内容
废话不多说,直接开始 本文以无界作为本文测试案例,抓取shadow-root(open)下的内容 shadow Dom in selenium: 首先先讲一下shadow Dom in selenium 版本的区别,链接指向这里 在Selenium 4版本 以及 chrom…...
AutoClass加载预训练实例
AutoClass 由于 Transformer 架构种类繁多,AtuoClass可以创建一个你想要的做模型架构。作为 🤗 Transformer 核心理念的一部分,使库易于使用、简单且灵活,可以AutoClass从给定的检查点自动推断和加载正确的架构。该from_pretrain…...
在 CentOS 上安装 NFS 服务器
文章目录 1. 在 CentOS 上安装 NFS 服务器1.1 安装 NFS 服务器软件包1.2 配置 NFS 共享目录1.3 配置 NFS 导出文件1.4 启动并启用 NFS 服务1.5 导出共享目录1.6 配置防火墙1.7 检查 NFS 状态 2. 在 CentOS 上安装 NFS 客户端2.1 安装 NFS 客户端软件包2.2 挂载 NFS 共享2.3 配置…...
utf8mb4_unicode_ci、utf8mb4_general_ci、utf8mb4_0900_ai_ci; Mysql 排序字符集的优缺点和选择
标题内容 Mysql的排序字符集真让人头疼,如果两个表的排序字符集不一致,还会导致在进行字段比较的时候直接报错。下面分析几个常用的字符集的优劣和选择。 utf8mb4_unicode_ci 特点 Unicode 标准兼容性高:它是基于 Unicode 标准的排序规则&a…...
星宸SSC8836Q/SSC8836Q-H
SSC8836Q产品是高度集成的多媒体片上系统(SoC)产品,适用于汽车和运动/运动相机等高分辨率智能视频录制和播放应用。 该芯片包括64位双核RISC处理器,先进的图像信号处理器(ISP),高性能的H.265/H。264/MJPEG视频编解码器,智能处理单…...
rk3576 , android14 , 编译, 卡死,android.bp , ninja
问题:我在 编译 android14 的时候, 卡死再 analysing android.bp 这里 ,卡了 3,4 个小时。肯定是有问题的。 如图&…...
3、.Net UI库:MaterialSkin - 开源项目研究文章
MaterialSkin 是一个开源的 WinForms 第三方库,提供了许多仿谷歌设计风格的组件,使得 WinForms 窗体程序更加美观。以下是 MaterialSkin 的一些关键特点和使用方法: 主要特点: 仿谷歌设计风格:MaterialSkin 提供了大量…...
2024年构建PHP应用开发环境
文章目录 前言选择合适的PHP版本安装与配置PHP环境Windows平台Linux平台macOS平台 集成Web服务器数据库连接与管理使用Composer进行依赖管理调试工具的选择代码质量管理部署与持续集成安全性考虑参考资料结语 前言 随着互联网的发展,PHP作为一门成熟的服务器端编程…...
苹果手机iPad投屏到安卓电视,不只有AirPlay一种方法,还可以无线远程投屏!
苹果品牌的设备一般都可以使用airplay功能,将一个屏幕投射到另一个屏幕上。如果是跨品牌或跨系统投屏,airplay就未必能够适应。 提供无线投屏和airplay投屏两种方式的AirDroid Cast已经推出TV版本。苹果手机或iPad可以选择无线(远程ÿ…...
什么是内网什么是外网?区别是什么
内网和外网是计算机网络中的两个基本概念,它们在定义、特点和使用场景上有显著的区别。虎观代理小二将带大家详细了解内网与外网的定义以及它们之间的主要差异,帮助读者更好地理解和应用这两种网络。 内网(局域网,LAN࿰…...
基于Springboot+Vue的在线答题闯关系统
基于SpringbootVue的在线答题闯关系统 前言:随着在线教育的快速发展,传统的教育模式逐渐向互联网教育模式转型。在线答题系统作为其中的一个重要组成部分,能够帮助用户通过互动式的学习方式提升知识掌握度。本文基于Spring Boot和Vue.js框架&…...
html css 图片背景透明
html css图标背景透明 css属性: background-color:transparent; mix-blend-mode: multiply; 完整HTML代码: <html><head><title>Test</title></head><body><div id"test" style"background-col…...
Servlet
一 Servlet Servlet (server applet) 是运行在服务端(tomcat)的Java小程序,是sun公司提供一套定义动态资源规范; 从代码层面上来讲Servlet就是一个接口 用来接收、处理客户端请求、响应给浏览器的动态资源。在整个Web应用中,Servlet主要负责接收处理请求…...
MySQL用法---MySQL Workbench创建数据库和表
1. 连接数据库 打开软件,点击左下角卡片,输入设置的数据库密码,勾选单选框 2. 了解主页面的组成部分 3. 创建数据库 先点击工具栏的创建按钮 再输入数据库名称 点击 Apply 创建 4. 创建数据表 展开数据库,在Tables上右键&…...
WordPress Elementor Page Builde 任意文件读取漏洞复现(CVE-2024-9935)
0x01 产品描述: WordPress Elementor Page Builder 是一款 WordPress 插件,它允许用户以可视化方式创建和编辑网页。0x02 漏洞描述: WordPress 的 Elementor Page Builder 插件的 PDF 生成器插件在 1.7.5 之前的所有版本中都容易受到路径遍历的攻击,包括 1.7.5 rtw_pgaepb_…...
静态链接和动态链接的特点
静态链接 链接方式:在编译时,所有依赖的库代码被直接打包到生成的可执行文件中。这意味着在程序运行时,不需要再加载任何外部库文件。 优点: 独立性强:生成的可执行文件可以在没有依赖库的系统上直接运行&am…...