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

年终盘点文生图的狂飙之路,2023年文生图卷到什么程度了?

目录

  • 前言
  • 发展
    • 1月
    • 2月
    • 3月
    • 4月
    • 5月
    • 6月
    • 7月
    • 9月
    • 10月
    • 11月
    • 12月
  • 思考与总结
  • 参考文献

前言

说到文生图,可能有些人不清楚,但要说AI绘画,就有很多人直呼:

15777305065297

2022可以说是AI绘图大爆发的元年。

AI绘画模型可以分为扩散模型(Diffusion Model)自回归模型(变分自编码器,Autoregressive Model)、**生成对抗网络模型 **(GAN,Generative Adversarial Networks)三大路径。

扩散模型有代表的例如Midjorney,Stable Diffusion、DALL-E 2,自回归模型以DALL-E、parti等代表,GAN例如有StackGAN++等。

扩散模型(大家还可以看看huggingface的diffusers库,收集了很多Diffusion model)由于生成图像质量高(FID值小),开源等特点,成为当下技术的主流。

1

发展

那么2023年,文生图领域卷到哪里了呢?

提前说明一下:

  1. 这里只说模型架构,不谈应用,当然如果是没技术细节没论文我也随便说下,因为不保真,不知道是不是你真自研🥲。
  2. 不同于别人写的流水账,我不仅介绍发展,还会粗略地介绍技术,进行简单的抛砖引玉,希望能够激起大家的兴趣,不断学习,多看相关知识,看一篇是不能完全理解原理的。

好的,废话不多说,现在开始。

1月

23年1月左右,微软在21年发表的LoRA能够极少数据微调模型,瞬间在AI绘图中火起来,这是目前最流行的微调 SD 的方法之一。

Refer to caption

LoRA的示意图如上,对于预训练的权重矩阵,LoRA增加了A和B这两个低秩矩阵,其中A是采用高斯初始化,B的初始值是0,在训练时只更新A、B的参数,w被冻结,公式如下: h = w 0 x + Δ W x = w 0 x + α r B A x h=w_0x+\Delta Wx=w_0x+\frac{\alpha}{r} BAx h=w0x+ΔWx=w0x+rαBAx Δ W \Delta W ΔW称为微调权重, α \alpha α是个超参数,r是矩阵的秩。

其实这个原理,你可以认为,本来的预训练权重很大,这时候被冻结了,我们反而学习新的知识,但这个知识的大小是精华,量小而有效,我们就靠它来微调我们的模型,节省训练的代价。

17日,GLIGEN 模型由威斯康星大学麦迪逊分校、哥伦比亚大学和微软的研究人员和工程师创建。该方法能够在现有的预训练好的扩散模型的基础上,增加对定位输入的支持,从而实现开放集的基于定位语言的图像生成。

23日,来自英伟达等机构的研究者死活不服扩散模型如今地地位,试图表明GAN仍然具有竞争力,提出StyleGAN-T模型,只需0.1秒即可生成 512×512分辨率图像。

Refer to caption

该研究选择StyleGAN-XL作为基线架构,因为StyleGAN-XL在以类别为条件的ImageNet合成任务中表现出色。然后该研究依次从生成器、判别器和变长与文本对齐的权衡机制的角度修改 StyleGAN-XL。作者使用零样本MS COCO来衡量改动的效果,使用预训练的CLIP ViT-L/14文本编码器来嵌入文本提示,以此来代替类别嵌入,删除了用于引导生成的分类器。

2月

9日,UniPC是23年提出的调度器,受到同名的常微分方程求解法思路的影响。可以在5-10个步骤中实现高质量图像生成。

10日,张吕敏发布了ControlNet,那么什么是ControlNet呢?

我还记得在高铁上,突然刷到ControlNet(量子位发表的“四少女火爆外网…”),用户终于可以控制图片生成的稳定性,ControlNet 的核心思想是在文本描述之外添加一些额外条件来控制扩散模型(如 Stable Diffusion),从而更好地控制生成图像的人物姿态、深度、画面结构等信息。

img

我们可以看到使用controNet,它将神经网络块的权重复制为“locked”副本和“trainable可训练”副本。zero convolution是权重和偏差都初始化为零的 1×1 卷积。最后还会把零卷积后的可训练副本和冻结副本相加。

这样的好处是,锁定副本保留了原来模型能力,最后把训练出来的新知识进行相加,使得模型训练时候不会忘记自己今天来月球是来干什么的,哦,原来只要跨一小步就行了。零卷积会在训练中,逐渐成为具有非零权重的公共卷积层,并不断优化参数权重

16日,腾讯提出T2I-Adapter,*“挖掘”T2I 模型隐式学习的能力,然后显式地使用它们来更精细地控制生成。*学习简单且轻量级的 T2I 适配器,以将 T2I 模型中的内部知识与外部控制信号结合起来,同时冻结原始的大型 T2I 模型。

23日,谷歌提出一种通过人类反馈来改进文生图模型的图文一致性的方法,仅使用基于Reward的加权损失对文本到图像模型进行微调。

3月

2日,OpenAI提出了Consistency Models,它是一种支持快速one-step生成的模型,并且仍然允许few-step采样,以在计算量和样本质量之间做出权衡。它们还支持零样本数据编辑,例如图像修复、着色和超分辨率,而无需为这些任务进行具体训练。Consistency Models可以通过蒸馏预训练扩散模型的方式进行训练,也可以作为独立的生成模型进行训练。

9日,针对增加StyleGAN架构容量会导致不稳定的问题,来自浦项科技大学(韩国)、卡内基梅隆大学和Adobe研究院的研究人员提出了一种全新的生成对抗网络架构GigaGAN,打破了模型的规模限制,展示了GAN仍然可以胜任文本到图像合成模型。

img

GigaGAN生成器是由文本编码分支、风格映射网络、多尺度合成网络组成,并通过稳定注意力和自适应内核选择进行增强。在文本编码分支中,首先使用预训练的CLIP模型和学习的注意力层T来提取文本嵌入。然后将嵌入传递到样式映射网络M,以生成样式向量w,类似于StyleGAN。合成网络使用样式代码作为调制,使用文本嵌入作为注意力来生成图像金字塔。此外,引入样本自适应内核选择,根据输入文本条件自适应地选择卷积内核。

img

判别器由两个分支组成,一个处理图像条件,一个处理文本条件。图像分支接收图像金字塔并对每个图像尺度进行独立预测,并在下采样层的所有后续尺度上进行预测。此外,采用额外的损失来鼓励有效的收敛。

结果是比SD1.5更快,图像质量更好。

21日,Adobe 发布了Firefly(萤火虫),在6月,ps也能玩AI辅助了。由于是设计公司发布的,所以其输出的内容可以分层、精细化地进行修改,一切为了设计。由于是设计公司,真的一点细节都没有,真的论文也不露一手。所以我也不给你配图了!

4月

21日,谷歌实现了在 GPU 驱动的设备上运行 Stable Diffusion 1.4 ,达到 SOTA 推理延迟性能(在三星 S23 Ultra 上,通过 20 次迭代生成 512 × 512 的图像仅需 11.5 秒)。论文地址,此前,有研究者开发了一个应用程序,该应用在 iPhone 14 Pro 上使用 Stable Diffusion 生成图片仅需一分钟,使用大约 2GiB 的应用内存。谷歌为Group Norm 和 GELU设计了专用内核,优化softmax,提高注意力模块的效率,并且使用Winograd 卷积,Stable Diffusion 的主干在很大程度上依赖于 3×3 卷积层,于是使用4x4 tile大小的 Winograd进行优化。

23日,俄罗斯团队发布了Kandinsky2.1,这是继承了 Dall-E 2 和潜在扩散的最佳实践,同时引入了一些新的想法。作为文本和图像编码器,它使用 CLIP 模型和 CLIP 模式的潜在空间之间的扩散图像先验(映射)。这种方法提高了模型的视觉性能,并揭示了混合图像和文本引导图像操作的新视野。

kandinsky21

5月

x2

9日,面对当前预训练的扩散模型在处理简单叙述提示时,理解语义和进行常识推理方面存在限制,这会导致图像生成效果不理想的现状,国内中山大学HCP实验室提出了SUR-adapter,一种简单而有效的参数高效微调方法。

x3

他们引入了一个新数据集叫做SURD,它包含超过57,000个经过语义修正的图像和文本对。此外,他们还开发了一个名为SUR适配器的模块,该模块能够从基于关键字的复杂提示和大型语言模型中提取语义理解和推理知识。通过对SURD进行大量实验和严格评估,结果表明SUR适配器能够增强扩散模型的语义理解能力,同时不影响图像生成的质量。

12日,清华提出了UniDiffuser,采用称为U-ViT 的transformer主干,这也是首个基于Transformer的多模态扩散大模型,率先发布了对多模态生成式模型的一些探索工作,实现了任意模态之间的相互转化。除了单向的文生图,还能实现图生文、图文联合生成、无条件图文生成、图文改写等多种功能,大幅提升文图内容的生产效率,也进一步提升了生成式模型的应用想象力。

众所周知,Diffusion耗时最长的是Unet结构,所以天下苦卷积久矣,当它出来的时候,好家伙,研究了几年的Transformer,什么又回卷积了。

将diffusion unet换成transformer,这是我目前看到的第二篇,还有一篇是22年12月20提出的[Scalable Diffusion Models with Transformers,这是我目前看到的首个将UNet架构换成transformer(DIT),但是实践下来,提示词太限制了…效果没有U-ViT好。

17日,MIT提出了FastComposer是一种无需微调、个性化、多主题的文本到图像生成方法,它利用图像编码器提取的主题嵌入来增强扩散模型中的文本条件,在生成图像身份保持方面优于Stable Diffusion、Custom Diffusion、DreamBooth等。

24日,Salesforce公司开源了自己最新的文生图的研究成果:Blip-diffusion,源码1,源码2,通过BLIP-2 编码器来提取多模态主题表示,然后将其与文本提示一起用于扩散模型引导,使得生成图像既能捕获特定主题的视觉外观特征,又能很好地与文本提示对齐。

29日,商汤提出的绘画大模型RAPHAEL,也是基于扩散模型开发。

x3 (1)

(a) 每个块包含四个主要组件,包括自注意力层、交叉注意力层、空间 MoE 层和时间 MoE 层。空间 MoE 负责描述特定图像区域中的不同文本概念,而时间 MoE 处理不同的扩散时间步长。每个块都使用边缘监督交叉注意力学习来进一步提高图像质量。 (b) 显示了 space-MoE 的详细信息。例如,给定提示“天空下有毛茸茸的熊”,每个文本标记及其相应的图像区域(由二进制掩模给出)都通过不同的空间专家进行引导,即每个专家都学习一个区域的特定视觉特征。通过堆叠多个空间 MoE,我们可以轻松学习描述数千个文本概念。

6月

1日,Snap 研究院推出最新高性能 Stable Diffusion 模型-SnapFusion,主要是对 UNet 进行优化,还提出一种 CFG-aware 蒸馏损失函数,在 iPhone 14 Pro 上实现 2 秒出图(512x512),且比 SD-v1.5 取得更好的 CLIP score。

这也是目前在移动端出图最快的

同日,Wuerstchen被提出,其团队开发了一种潜在扩散技术,这种高度压缩的图像表示提供了更详细的指导,这显着降低了实现最先进结果的计算要求,能够以两倍以上的速度执行推理

19日,美图发布基于扩散模型的视觉大模型MiracleVision,运用零样本学习算法,利用类别的高维语义特征代替样本的低维特征,使得训练出来的模型具有迁移性。

7月

12日,Kandinsky 2.2 对其前身 Kandinsky 2.1 进行了重大改进,引入了新的、更强大的图像编码器 - CLIP-ViT-G 和 ControlNet 支持。

在去年,谷歌提出了DreamBooth,是我们微调SD的方法之一,时隔8月,谷歌在7月13日又提出了HyperDreamBooth,但开源工作还得靠大家。它能通过超网络和快速微调实现高效的个性化生成,减小模型大小并提高生成速度。

img

14日,Meta在官网公布了CM3leon,首个基于Transformer的多模态自回归模型。我们前面看到更改Transformer的扩散模型,而这里是自回归。CM3leon采用的是完全不同的方法,它利用注意力机制来权衡输入数据(无论是文本还是图像)的相关性。Transformer结构的好处是什么?并行啊,而且训练的计算量还比此前基于 Transformer 的方法少了五倍。

image-20231223224353082

从这张图可以看见,CM3leon赢麻了。要是开源就更好了!🥹🥹🥹🥹

CM3leon还使用SFT训练,SFT已在ChatGPT训练中得到认证。果然取经还得去NLP。


27日,Stability AI正式公布最新的开源绘图模型——SDXL1.0,其实最早在4月就发布,6月推出0.9的研究版本。Stable Diffusion XL已经超越了先前发布的各种版本的Stable Diffusion,并且与当前未开源的文生图SOTA模型(如midjorney)具有不相上下的效果。

Refer to caption

Stable Diffusion XL是一个二阶段的级联扩散模型,包括Base模型和Refiner模型。其中Base模型就是原来的SD,而原来的模型有时会产生局部质量较低的样本,因此接入了Refiner模型,在同一潜在空间中训练一个单独的 LDM,该 LDM 专门用于高质量、高分辨率数据并采用SDEdit在Base模型的样本上引入的噪声去噪过程。

SDXL使用了更大的backbone,参数量大约为之前版本的SD的3倍。

9月

9月,DALL-E 3基于DALL-E 2 和 ChatGPT的文生图模型,同时发布的还有GPT-4 Turbo,现在大家用的GPT4多模态功能中的绘图功能,没错,用的就是DALL-E 3。

在前面我们说过,DALL-E 3 模型架构基于扩散模型,它同时还继承transformer架构,使用 T5 XXL 文本编码器来处理输入文本。

此外,DALL-E 3 论文还提出一个定制的图像字幕生成器(image captioner)来为训练数据集生成改进的字幕,这显着增强了模型的提示跟踪能力。这有什么用呢?你可以想想,有时候你的提示词,真的生成了你想要的图片了吗?这个工作就是做了这方面的探索。

10月

6日,站在OpenAI的肩膀上,清华大学交叉信息研究院的研究者提出Latent Consistency Models(潜在一致性模型),采用一致性蒸馏Latent Consistency Distillation(LCD)的方法,在SD模型的基础上蒸馏加速后的基础模型或LoRA模型。

  • LCD在潜在空间中进行,利用自动编码器将高维图像数据转换为低维潜在向量,并通过解码重构图像来降低计算负担并合成高分辨率图像。
  • LCM集成了无分类器引导到其过程中,采用单阶段引导蒸馏方法,并使用跳步技术加速收敛。
  • LCF是一种微调方法,用于在定制化数据集上高效进行推断。
  • 此外,LCM中的采样算法与传统多步采样不同,它直接预测增强轨迹的起点,从而实现单步样本生成,以提高图像质量。

10日,Adobe的Firefly2(萤火虫2号)出场,提升了图像质量,引入矢量图生成功能。

23日,苹果提出了俄罗斯套娃式扩散模型(Matryoshka Diffusion Models,MDM),一种用于高分辨率图像和视频合成的端到端框架。MDM的主要创新之处在于其能够在多个分辨率上联合去噪输入,并采用了一种嵌套式的UNet架构。MDM通过在扩展空间中引入多分辨率扩散过程,在此过程中学习单一扩散过程与层级结构,使得MDM能够同时生成多种分辨率的图像。MDM还采用了正常去噪目标在多个分辨率上进行联合训练,并使用渐进式训练技术,逐步将更高分辨率加入训练目标中,从而加快了整体收敛速度。此外,MDM的NestedUNet架构将所有分辨率的潜在变量组合在一个去噪函数中,形成一个嵌套结构,共享多尺度计算,简化了高分辨率生成的学习过程。

image-20231224172635672

11月

相对上面的LCM代码开源,2日,谷歌提出了UFOGen,一种能极速采样的扩散模型变种,UFOGen采用混合方法,将扩散模型与GAN相结合。利用新的diffusion-GAN和预训练扩散模型的初始化,UFOGen可以在单步中根据文本描述生成高质量图像。

image-20231224165331112

于是就有目前提升扩散模型的生成速度的5条路:

  1. 设计更加高效的数值计算方法硬解ODE(常微分方程),比如清华朱军团队提出DPM-Solver++
  2. 利用知识蒸馏ODE,比如LCM
  3. 量化
  4. 换结构
  5. 扩散与GAN结合

28日,Stability AI在官网发布了开源文生图模型SDXL Turbo,可以做到文本生成图片实时响应,比LCM还快。SDXL Turbo是基于SDXL 1.0迭代而成,使用了全新的对抗扩散蒸馏技术(Adversaral Diffusion Distillatio,ADD),所需图像的生成步骤从50步减少到1步,并且不会损坏图片的质量。

ADD 采用两种类型的蒸馏损失:首先是对抗性损失(adversarial loss),其中鉴别器的任务是区分生成的图像和真实图像;其次是传统的蒸馏损失,它将学生模型的输出与教师模型的输出对齐

image-20231224160903363

12月

15日,谷歌发布Imagen2,图像逼真程度达到新高度。同样也是扩散模型。

Imagen-BlogTout-1_zKElMC5.max-1400x1400

21日,Midjorney V6出世,图像质量更好,语言理解能力更强。

思考与总结

2023的文生图很卷,我在上面尽可能地列举了很多架构,如果不是创新就没有出现在上面。

当然大家如果还看见其它文生图方面的创新在本文并没有列出,可以在底下回复,我将会进行相应的补充。

这仅仅是算法层面,在应用层面,以主流的扩散模型为例,如果你去搜索相关扩散模型论文,你会发现围绕扩散模型的应用真的很多很多。😂

目前,文生图还是有许多技术难点等待攻破,实际上终究难逃3个要素:算法,算力,数据集。

算法的提出就是为了图片生成速度更快,图片的质量更高,这是肯定的,但你看,现在的图片都是固定尺寸产生的,如果我想生成300x200呢?

再说数据集,大家肯定都知道前段时间有2个新闻,1是字节被爆用了ChatGPT训练,2是谷歌Gemini被爆中文语料用文心一言,数据集永远是不够的,而数据集的开源工作实在是太少了。

最后说说算力,实际上,上面也有工作在做扩散模型的加速工作,在当前大模型大爆发的时代,算力资源尤其缺乏,这往往也是模型落地的一大阻碍。所以,如何让文生图在有限的算力上运行呢?比如在2080TI上?比如在内存只有2GB的5,6年前的老显卡上?可能老的显卡就是无法运行,我希望我们有时候看到的不是又出什么模型,效果多么好,普通显卡能运行吗?而是模型的运行下限又被攻破了,我们可以在更低算力的显卡上跑了!

在当前,AI创业搞得如火如荼,许多创业公司可基于Stable Diffusion基础版本进行进一步调优和个性化数据训练,其实我感觉文生图领域的商业模式有待讨论,因为说到SD,现在大家只要买个RTX3090也能跑,甚至在手机上也能,买卖的群体只有小白以及显卡算力不足的用户,只图个方便,没有其它引用用户的地方。其实说实话,当文生图深入我们的生活时候,这种热度自然而然就淡下去了,最后留下来的公司只有少数,当然你搞个性化数据也没有用,生成的图片终究到用户手上,终有勇士把这些收集起来,重新训练公开出去,所以搞文生图且用SD创业的公司存活率我认为不是很高,没有属于自己的核心技术,终究无法有自己的地位。

好了,本文的介绍内容就这么多,如果上面的内容有任何不对,欢迎大家的指出。

参考文献

  • AIGC专题报告:从文生图到文生视频,技术框架与商业化-国海证券
  • https://zhuanlan.zhihu.com/p/669353808
  • https://zhuanlan.zhihu.com/p/660924126
  • https://zhuanlan.zhihu.com/p/646831196
  • https://news.adobe.com/news/news-details/2023/Adobe-Releases-Next-Generation-of-Firefly-Models/default.aspx
  • https://cloud.google.com/blog/products/ai-machine-learning/imagen-2-on-vertex-ai-is-now-generally-available
  • https://www.zhihu.com/column/c_1631303321183805441

相关文章:

年终盘点文生图的狂飙之路,2023年文生图卷到什么程度了?

目录 前言发展1月2月3月4月5月6月7月9月10月11月12月 思考与总结参考文献 前言 说到文生图,可能有些人不清楚,但要说AI绘画,就有很多人直呼: 2022可以说是AI绘图大爆发的元年。 AI绘画模型可以分为扩散模型(Diffusio…...

C++:list增删查改模拟实现

C:list增删查改模拟实现 前言一、list底层双链表验证、节点构造1.1 list底层数据结构1. 2 节点构造 二、迭代器封装实现(重点、难点)2.1 前置说明2.2 迭代器实现 三、list实现3.1 基本框架3.2 迭代器和const迭代器3.2 构造函数、析构函数、拷贝构造、赋值…...

基于阿里云服务网格流量泳道的全链路流量管理(二):宽松模式流量泳道

作者:尹航 在前文基于阿里云服务网格流量泳道的全链路流量管理(一):严格模式流量泳道中,我们介绍了使用服务网格 ASM 的严格模式流量泳道进行全链路灰度管理的使用场景。该模式对于应用程序无任何要求,只需…...

ubuntu 18.04 共享屏幕

用于windows远程ubuntu 1. sudo apt install xrdp 2. 配置 sudo vim /etc/xrdp/startwm.sh 把最下面的test和exec两行注释掉,添加一行 gnome-session 3.安装dconf-editor : sudo apt-get install dconf-editor 关闭require encrytion org->gnome->desktop…...

第十三节TypeScript 元组

1、简介 我们知道数组中元素的数据类型一般都是相同的(any[]类型的数组可以不同),如果存储的元素类型不同,则需要使用元组。 元组中允许存储不同类型的元素,元组可以作为参数传递给函数。2、创建元组的语法格式&#x…...

基于Java (spring-boot)的仓库管理系统

一、项目介绍 本系统的使用者一共有系统管理员、仓库管理员和普通用户这3种角色: 1.系统管理员:通过登录系统后,可以进行管理员和用户信息的管理、仓库和物品分类的管理,以及操作日志的查询,具有全面的系统管理权限。 2.仓库管理…...

SQL面试题挑战06:互相关注的人

目录 问题:SQL解答: 问题: 现在有一张relation表,里面只有两个字段:from_user和to_user,代表关注关系从from指向to,即from_user关注了to_user。现在要找出互相关注的所有人。 from_user to_…...

LSTM和GRU的区别

LSTM(Long Short-Term Memory)和GRU(Gated Recurrent Unit)都是循环神经网络(RNN)的变体,旨在解决传统RNN中的梯度消失和梯度爆炸的问题,使网络能够更好地处理长期依赖关系。 以下是…...

算法基础之数字三角形

数字三角形 核心思想&#xff1a;线性dp 集合的定义为 f[i][j] –> 到i j点的最大距离 从下往上传值 父节点f[i][j] max(f[i1][j] , f[i1][j1]) w[i][j] 初始化最后一层 f w #include <bits/stdc.h>using namespace std;const int N 510;int w[N][N],f[N][…...

蓝桥杯宝藏排序题目算法(冒泡、选择、插入)

冒泡排序: def bubble_sort(li): # 函数方式for i in range(len(li)-1):exchangeFalsefor j in range(len(li)-i-1):if li[j]>li[j1]:li[j],li[j1]li[j1],li[j]exchangeTrueif not exchange:return 选择排序: 从左往右找到最小的元素&#xff0c;放在起始位置…...

如何使用Docker部署Dashy并无公网ip远程访问管理界面

文章目录 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务&#xff0c;具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起&#xff0c;形成自己的导航…...

【接口测试】如何定位BUG的产生原因

我们从在日常功能测试过程中对UI的每一次操作说白了就是对一个或者多个接口的一次调用&#xff0c;接口的返回的内容(移动端一般为json)经过前端代码的处理最终展示在页面上。http接口是离我们最近的一层接口&#xff0c;web端和移动端所展示的数据就来自于这层&#xff0c;那么…...

JavaScript 中的短路求值(if语句简洁写法--逻辑运算符||和的高级用法)

在JavaScript中&#xff0c;Short-Circuit Evaluation&#xff08;短路求值&#xff09;是一种逻辑运算的行为&#xff0c;其中表达式的求值在达到不必要的部分时就提前终止&#xff08;所以短路一词非常贴切&#xff09;。这种行为可以通过逻辑运算符&#xff08;例如&&am…...

普本毕业,还有逆风翻盘的机会吗?

作为普通二本的本科生&#xff0c;从踏入大学开始&#xff0c;我一直在不断寻找自己感兴趣的行业和职业方向。 在这里&#xff0c;我想给大家分享一些我从校园走向工作整个学习和求职过程&#xff0c;以及其中的酸甜苦辣&#xff0c;希望这些经历可以给各位学弟学妹一些鼓励和…...

spark:RDD编程(Python版)

RDD运行原理 RDD设计背景 许多选代目前的MapReduce框架都是把中间结果写入到稳定存储 (比如磁盘)中带来了大量的数据复制、磁盘IO和序列化开销 RDD就是为了满足这种需求而出现的&#xff0c;它提供了一个抽象的数据架构&#xff0c;我们不必担心底层数据的分布式特性&#xf…...

中国元宇宙论坛暨常孝元宇宙发布会即将在京举行

中国元宇宙论坛暨常孝元宇宙发布会将于2024年1月9日在北京科技会堂盛大开启。本次论坛汇聚业内顶尖专家、学者和企业代表,共同探讨中国元宇宙、常孝元宇宙《神由都城》的未来发展、技术创新和应用场景。此次发布会将颠覆我们对数字世界的认知,带来前所未有的体验。 《神由都城》…...

华为认证 | 云计算方向HCIE有效期多久?实验报名费多少?

云计算技术已经成为了企业和个人发展的重要网络技术支撑。 而在这个领域中&#xff0c;华为HCIE云计算证书也成为了越来越多人追求的敲门砖。 然而&#xff0c;很多人对于这个证书的有效期以及实验报名费并不清楚。 下面将为你详细解答这些问题。 01 云计算方向HCIE有效期多…...

动物分类识别教程+分类释义+界面展示

1.项目简介 动物分类教程分类释义界面展示 动物分类是生物学中的一个基础知识&#xff0c;它是对动物进行分类、命名和描述的科学方法。本教程将向您介绍动物分类的基本原则和方法&#xff0c;并提供一些常见的动物分类释义。 动物分类的基本原则 动物分类根据动物的形态、…...

【Java动态代理如何实现】

✅Java动态代理如何实现 ✅JDK动态代理和Cglib动态代理的区别 ✅拓展知识仓✅静态代理和动态代理的区别✅动态代理的用途✅Spring AOP的实现方式&#x1f4d1;JDK 动态代理的代码段&#x1f4d1;Cglib动态代理的代码块 ✅注意事项&#xff1a; 在Java中&#xff0c;实现动态代理…...

数据库(部分函数)

函数&#xff1a; 单行函数&#xff1a;会对查询中的每一数据进行处理 字符函数 length&#xff08;列名&#xff09; select name&#xff0c; 日期函数&#xff1a; now() 年月日时分秒 curdate() 年月日 curtime()时分秒 …...

基于Vite+Vue3 给项目引入Axios

基于ViteVue3 给项目引入Axios,方便与后端进行通信。 系列文章指路&#x1f449; 系列文章-基于Vue3创建前端项目并引入、配置常用的库和工具类 文章目录 安装依赖新建src/config/config.js 用于存放常用配置进行简单封装解决跨域问题调用尝试 安装依赖 npm install axios …...

为什么查企业的时候有的公司没有显示注册资金?

我们在查询企业信息时&#xff0c;有时候会遇到某一家企业没有注册资金的情况&#xff0c;但是该企业又不是已经注销的。出现这种情况是什么原因呢&#xff1f; 1.该公司是一家分公司&#xff0c;分公司没有独立法人资格&#xff0c;因此没有注册资金。 2.有些情况下&#xf…...

DataProcess-VOC数据图像和标签一起进行Resize

VOC数据图像和标签一起进行Resize 参加检测比赛的时候&#xff0c;很多时候工业原始数据尺度都比较大&#xff0c;如果对数据不提前进行处理&#xff0c;会导致数据在加载进内存时花费大量的时间&#xff0c;所以在执行训练程序之前需要将图像提前进行预处理。对于目标检测的数…...

MultiValueMap

MultiValueMap是Spring框架中提供的一个接口&#xff0c;它继承了Map接口&#xff0c;用于存储键值对&#xff0c;但与普通的Map不同的是&#xff0c;MultiValueMap中一个键可以对应多个值&#xff0c;因此它也可以被称为“多值Map”。 MultiValueMap的使用场景一般是在需要存…...

山西电力市场日前价格预测【2023-12-25】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-12-25&#xff09;山西电力市场全天平均日前电价为469.89元/MWh。其中&#xff0c;最高日前电价为1048.40元/MWh&#xff0c;预计出现在08:30。最低日前电价为252.77元/MWh&#xff0c;预计…...

【华为OD机试真题2023CD卷 JAVAJS】5G网络建设

华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 5G网络建设 时间限制:4s 空间限制:256MB 限定语言:不限 题目描述: 现需要在某城市进行5G网络建设,已经选取N个地点设置5G基站,编号固定为1到N,接下来需要各个基站之间使用光纤进行连接以确保基站能互联互通,不同…...

OSI 七层参考模型及TCP/IP 四层模型

OSI 七层参考模型 七层模型&#xff0c;亦称 OSI &#xff08; Open System Interconnection &#xff09;参考模型&#xff0c;即开放式系统互联。参考模型是国际标准化组织&#xff08;ISO &#xff09;制定的一个用于计算机或通信系统间互联的标准体系&#xff0c;一般称为…...

【面向对象】对比JavaScript、Go、Ada、Python、C++、Java、PHP的访问限制。

在不同编程语言中&#xff0c;控制成员&#xff08;变量、方法、类等&#xff09;可见性的机制不尽相同。以下是对比JavaScript、Go、Ada、Python、C、Java、PHP所使用的访问限制关键字和约定&#xff1a; 一、JavaScript ### JavaScript访问限制 早期的JavaScript并没有类似…...

力扣(leetcode)第26题删除有序数组中的重复项(Python)

26.删除有序数组的重复项 题目链接&#xff1a;26.删除有序数组的重复项 给你一个非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 …...

【内存泄漏】内存泄漏及常见的内存泄漏检测工具介绍

内存泄漏介绍 什么是内存泄漏 内存泄漏是指程序分配了一块内存&#xff08;通常是动态分配的堆内存&#xff09;&#xff0c;但在不再需要这块内存的情况下未将其释放。内存泄漏会导致程序浪费系统内存资源&#xff0c;持续的内存泄漏还导致系统内存的逐渐耗尽&#xff0c;最…...

FPGA-ZYNQ-7000 SoC在嵌入式系统中的优势

FPGA-ZYNQ-7000 SoC在嵌入式系统中的优势 本章节主要参考书籍《Xilinx Zynq-7000 嵌入式系统设计与实现 基于ARM Cortex-A9双核处理器和Vivado的设计方法 (何宾&#xff0c;张艳辉编著&#xff09;》 本章节主要讲述FPGA-ZYNQ-7000 SoC在嵌入式系统中的优势&#xff0c;学习笔…...

如何在Vue3中实现无缝热重载:提升你的开发效率

Vue3中的热重载&#xff08;Hot Module Replacement&#xff0c;简称HMR&#xff09;是一种开发时的功能&#xff0c;它允许开发者在不刷新整个页面的情况下&#xff0c;实时替换、添加或删除模块。这意味着当你对Vue组件进行修改并保存时&#xff0c;这些更改会立即反映在浏览…...

盒子 Box

UVa1587 思路&#xff1a; 1.输入每个面的长宽并将每个面较长的一边放在前面 2.判断是否存在三对面分别相等 3.判断是否存在三组四棱相等 #include <stdio.h> #include <stdlib.h> #define maxn 100int cmp(const void* e1, const void* e2) {return (int)(*(d…...

uni-app附件下载预览 并解决打开附件时黑屏

// 预览附件perviewFile(file) {console.log(点击附件, file)var strfile.previewUrlvar filTypestr.split(.)console.log(filType,filType)uni.downloadFile({url: success: function(res) {console.log(打开文档成功, res);if (res.statusCode 200) {uni.saveFile({tempFile…...

卸载了Visual Studio后,在vscode中执行npm i或npm i --force时报错,该怎么解决?

卸载了Visual Studio后&#xff0c;在vscode中执行npm i或npm i --force时报错,该怎么解决&#xff1f; 报错内容&#xff1a;原因解决办法 报错内容&#xff1a; npm ERR! code 1 npm ERR! path E:\VScode\codeDate\yugan\node_modules\node-sass npm ERR! command failed np…...

渗透测试 | 信息收集常用方法合集

目录 一、关于域名 1.子域名收集 a.搜索引擎查找 b.在线查询 c.工具 d.SSL/TLS证书查询 2.端口型站点收集 3.目录文件扫描 a.目录扫描工具 b.github搜索 c.google搜索 d.在线网站 e.文件接口工具 4.旁站和C段 a.旁站查询 b.C段查询 5.网站技术架构信息 a.基础…...

使用 ElementUI 组件构建无边框 Window 桌面应用(WinForm/WPF)

生活不可能像你想象得那么好,但也不会像你想象得那么糟。 我觉得人的脆弱和坚强都超乎自己的想象。 有时,我可能脆弱得一句话就泪流满面;有时,也发现自己咬着牙走了很长的路。 ——莫泊桑 《一生》 一、技术栈 Vite + Vue3 + TS + ElementUI(plus) + .NET Framework 4.7.2…...

JavaScript中数组的方法和函数作用域问题

1 -函数作用域问题-: 函数的外层作用域&#xff0c;在函数创建时就已确定&#xff0c;和函数的调用位置无关 var name 嘿嘿;// 函数的外层作用域&#xff0c;在函数创建时就已确定&#xff0c;和函数的调用位置无关// JS中的作用域被称为 词法作用域function fn() {console.…...

nodejs设置x-xss-protection解决xss问题

在Node.js中设置X-XSS-Protection可以通过使用helmet库来完成。 首先&#xff0c;确保已经安装了helmet库。如果没有安装&#xff0c;可以运行以下命令进行安装&#xff1a; npm install helmet --save 然后&#xff0c;在你的Node.js应用程序中引入并配置helmet库&#xff…...

C/C++不同整数类型的区别

在C/C中涉及的整数相关的类型大致有如下几种&#xff1a; char、unsigned charshort、unsigned shortint、unsigned intlong、unsigned longlong long、unsigned long longint8_t、uint8_tint32_t、uint32_tint64_t、uint64_tDWORDDWORD32、DWORD64size_t、ssize_tSIZE_T、SSI…...

如何理解JDK、JRE、JVM区别与联系

摘要&#xff1a;JDK是 Java 语言的软件开发工具包(SDK)。在JDK的安装目录下有一个jre目录&#xff0c;里面有两个文件夹bin和lib&#xff0c;在这里可以认为bin里的就是jvm&#xff0c;lib中则是jvm工作所需要的类库&#xff0c;而jvm和 lib合起来就称为jre。 一、JDK JDK(Ja…...

用友GRP-U8 SmartUpload01 文件上传漏洞

漏洞描述 用友GRP-U8行政事业内控管理软件是一款专门针对行政事业单位开发的内部控制管理系统&#xff0c;旨在提高内部控制的效率和准确性。该软件/u8qx/SmartUpload01.jsp接口存在文件上传漏洞&#xff0c;未经授权的攻击者可通过此漏洞上传恶意后门文件&#xff0c;从而获取…...

react 路由v6

这里是区别&#xff1a;V5 vs V6 这里是官网&#xff1a;可以查看更多高级属性 一、基本使用&#xff1a; 1、配置文件 src/routes/index import React from "react";const Home React.lazy(() > import("../Pages/Home")); const About React.laz…...

rpc【通义】rpc原理【gpt】

一 rpc RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;是一种编程技术&#xff0c;它允许在分布式系统中的一个程序像调用本地函数一样调用另一个程序&#xff08;位于不同的机器或进程中&#xff09;的函数或方法。RPC的主要目标是隐藏网络通信的…...

Leetcode 2973. Find Number of Coins to Place in Tree Nodes

Leetcode 2973. Find Number of Coins to Place in Tree Nodes 1. 解题思路2. 代码实现 题目链接&#xff1a;2973. Find Number of Coins to Place in Tree Nodes 1. 解题思路 这道题思路上其实挺简单的&#xff0c;就是一个遍历的思路&#xff0c;找到每一个点对应的子树当…...

如何调动销售人员使用CRM的积极性?

CRM系统在销售人员眼中是流程监管工具也是单调枯燥的操作空间&#xff0c;如何让销售爱上CRM系统&#xff1f;1.让CRM简化销售工作&#xff1b;2.智能提醒销售各项事务&#xff1b;3.让CRM界面更加丰富多彩&#xff0c;通过这些方法帮助销售经理轻松管理团队&#xff0c;销售对…...

数值分析期末复习

第一章 科学计算 误差 解题步骤 x : 真实值 x:真实值 x:真实值 x ∗ : 近似值 x^*:近似值 x∗:近似值 先求绝对误差 e ∗ e^* e∗: x − x ∗ x - x^* x−x∗ 绝对误差限是 ∣ x − x ∗ ∣ ≤ ε |x - x^{*}| \le \varepsilon ∣x−x∗∣≤ε 求相对误差限: ∣ x − x ∗…...

k8s的探针

一、探针原理 分布式系统和微服务体系结构的挑战之一是自动检测不正常的应用程序&#xff0c;并将请求&#xff08;request&#xff09;重新路由到其他可用系统&#xff0c;恢复损坏的组件。健康检查是应对该挑战的一种可靠方法。使用 Kubernetes&#xff0c;可以通过探针配置运…...

Python 爬虫之下载视频(五)

爬取第三方网站视频 文章目录 爬取第三方网站视频前言一、基本情况二、基本思路三、代码编写四、注意事项&#xff08;ffmpeg&#xff09;总结 前言 国内主流的视频平台有点难。。。就暂且记录一些三方视频平台的爬取吧。比如下面这个&#xff1a; 一、基本情况 这次爬取的方…...

Gradle下载地址

Gradle下载地址 Gradle是一个基于JVM的构建工具&#xff0c;是一款通用灵活的构建工具&#xff0c;Gradle也是第一个构建集成工具&#xff0c;与ant、maven、ivy有良好的相容相关性。支持maven&#xff0c; Ivy仓库&#xff0c;支持传递性依赖管理&#xff0c;而不需要远程仓库…...