CV与NLP经典大模型解读

一。llm与lora微调策略解读

(1)文本大模型

llama:meta开源语言模型(咱们能负担得起下游任务了)。

lora:绘你模型你也得能训练的动才行(咱们也能微调下游任务)。lora+diffusion。

self-instruct:下游任务得规矩些,输入与输出都得有一个标准格式。

peft:将上面三个整合到huggingface中了

(2)llm落地微调分析

思路:把一个大模型冻住,下游任务做一个小模型,然后把大模型与小模型加起来就变成大模型功能更强大。只需训练下游任务的小模型就行。

(3)llama与lora介绍

1)llama

<1>让nlp走进千万家,目前llama的模型参数数量是7b到65b,7亿参数量的随便都可以跑起来了。

<2>13b模型效果超越gpt3(130亿吊打1750亿参数的故事)。

<3>完全开源,提供预训练模型(都可以来玩了)。

2)lora

只需训练lora的参数一点点参数就行了,例总共1000亿参数,做下游任务就只训练1亿就行了,就类似大部分的财富被少数人拥有,所以把少数人的财富(特征)掌握就行了。

(4)lora模型实现细节

1)一个输入进到冻住的大模型,然后进入下模型,小模型中做了大矩阵拆分为二个小矩阵相乘的矩阵(类似租客,中介,房东,中介就是拥有绝大多数财富的人),最后这二个相加一起。

大模型与小模型中用到的q,k,v都分别用二个小矩阵(类似中介那种),然后进行特征提取。也许q更重要(秩高一点)。

二。llm下游任务训练自己模型实战

(1)提示工程的作用

指令,输入,输出这三个组成提示模板。

(2)基本api调用

1)本例是langchain,开包即用。它可与openai,hugging face,浏览器,b站连接的。

2)angchain的chat message有几个类型:<1>system:指挥人家要做什么,完成一件什么事?<2>human:我的描述与问题是什么?<3>ai:人家llm回答我的问题

(3)数据文档切分操作

1)text  embedding  model

向量化编码很重要,查与匹配都会用到。即把文本等都转成向量,一切都是向量。

2)提示模板

3)文档切块

(4)样本索引与向量构建

1)匹配查找。利用Faiss是可以输入一个向量到向量库中快速匹配结果,速度快。OpenAiEmbedding是用来向量化的(需收费)。

例如:

loader=TextLoader("指定某个text文件")

documents=loader.load()

textSplitter=RecursiveCharacterTextSplitter(chunk_size=1000,chunk_overlap=50)

texts=textSplitter.split_documents(documents)

embeddings=OpenAiEmbedding()

db=FAISS.from_document(texts,embeddings)

retriever=db.as_retriever()

docs=retriever.get_relevant_documents("六大派围攻光明顶")

print("\n\n".join([x.page_content[:200]  for x in  docs[:2]])

(5)数据切块方法(类似mapreduce)

1)为了对提示(prompt)进行简化,利用langchain下面的包生成chain实例,先说个一次性加载进去的,这样也许会报错,因为token超长了,例如:

chain=load_summarize_chain(llm,chain_type='stuff' verbose=True)

chain.run(documents)

改变一个参数(chain_type='map_reduce')达到分块效果,这样会按内容生成摘要出来,例如:

chain=load_summarize_chain(llm,chain_type='map_reduce' verbose=True)

chain.run(texts[200:205])

2)agents(代理)

这个例子是用到langchain,可在github上下载下来玩,agents

是在langchain下面的,它的工具很多(一个好汉三个帮的感觉),这要先到网站https://serpapi.com/免费注册个帐号先,然后把注册好的信息写到代码中。这个是要能连到google服务器才能用。

例如:

三。视觉大模型sam(segment  anything model)

(1)demo效果演示

1)sam是分割任务的通用模型。这个模型中也是需通过提示(例如鼠标点中某样东西或框中某个区域),再分割出来(其实它已经是把全部物体都已分割出来的了,提示就类似是查询),所以说这里是可做交互的。以前的分割任务是不能做交互的。

2)大模型其实就是特征提取很强,学习能力强,可学到世界万物,可学到任何东西,只要给我提示,就会给你想要的结果。2023年开始很多大厂都在做大模型。

(2)论文解读分析

它是自监督的,主要是sam大模型自己去学习,去标注。在设计与训练过程中给出提示,无需给例子(zero shot)方式(chatgtp也是用这方式)就可以做所有下游任务(在新的分布式数据与未做过的任务上)了。这就与以前那种数据发生变化时,模型重新去学习时效果就可能直线下降的情况完全不同了,因为sam对新数据与任务都一样能去预测,所以说大模型与以前的机器学习,深度学习有点不同了。

(3)完成的任务分析

clip也是自监督学习,但是数据集是变化的是难点。而sam就加入提示应用到新数据中。

1)提示如何做?

足够经典提示,不管什么方式来提示都能识别出来(例打点或打框框)

2)数据引擎如何构建?

有一小部分标注出来,结合牛生小牛,小牛又生小小牛,小小牛又生小小小牛出来的道理,它就会也会一点点地把绝大多数的数据标注出来(弱模型经训练生成弱数据,然后按这数据再训练模型,模型变强一点了,这时又生成稍强一点的数据,再用这强一点的数据训练模式,这时模型就变的更强了,这时再生成出更强的数据出来),这里可以看出输入数据都在变化的,与以前是不同,这也是很重要的地方,它可以无限地造数据出来。网络结构与算法都是用的通用的。

(4)数据闭环方法

1)它包括图像编码器(image encoder)与快速提示编码器(prompt encoder),因为这里是人机要进行交互的(例浏览器上),所以要快速。把点像素,文本都可转成向量(embedding),只要转成向量就可做成提示编码器。可给它点或框等等作为提示。

2)数据引擎(data engine)。

包括助手阶段(例用现成的数据集标注,人工帮助),半监督阶段(现在模型有点能力了,但还是要人工来做做标注,这时数据量就比第一阶段多了点了),全自动阶段(自动标会错的,错也没关系,继续训练,继续自动标),经过三阶段后数据集就很大了。

(5)预训练模型的作用

1)受nlp大模型的提示启示,图像大模型也需各种提示(例如点,框,坐标,文本),输出会多个结果。

2)图像与提示都是要转成向量来的,这是encoder阶段。例如图像转成向量用到的预训练模型是vit中的mae(cvpr 2022),又例如文本转成向量(可做提示用)就用的预训练模型是clip。sam是用人家做好的预训练模型来用的(mae,clip)

3)zero shot:不用给例子,自己训练。

(6)decoder的作用与项目源码

1)mask decoder。原来decoder只是去原始图像中取特征就行,而这里是双向的(即图像与提示之间相互学习与更新)

(7)分割任务模块设计

1)encoder阶段

运用预训练模型(vit,clip)提image encoder与prompt encoder这二大特征,双向提取与更新特征。

2)mask decoder阶段

初始化出一些token,然后先用cross attention去遍历decoder(有些打酱油,有少量的真正做事),然后self attention相互之间告诉对方我去做什么事等。可参考mask2former或detr那块源码。

(8)实现细节分析

四.视觉QA算法与论文解读(from images to textual prompt:zero-shot visual question answering with frozen large language models)

(1)视觉QA要解决的问题

1)图像转为文本,文本交给nlp领域的大模型(llm)。语音转为文本,文本也交给nlp领域的大模型(llm)。大模型时代2023年开始是nlp为ai核心,图像等都是打辅助作用了。

2)large language models(llm)有很强的zero-shot能力了,但是visual question answering这块做得还不是很好的(给张图片与问题,要回答问题)。

(2)论文概述分析

多模态是指集成和处理两种或以上的不同类型数据或信息的方法与技术。这些数据主要包括文本,图像,视频,音频,传感器数据等。

但现在就是碰到图像与文本训练任务不同(差异大),模态数据不同造成做得不是很好。img2llm让llm给出提示让它能处理视觉问答的任务(给llm提供一些图像的问题与回答对),而且不需要端到端的训练和zero-shot的感觉。

五.扩散模型diffusion架构算法解读

(1)扩散模型diffusion架构与gan碰到的问题

对抗生成网络(gan)差不多过时了,差不多被扩散模型代替了,diffusion在2021年比较火。扩散模型diffusion模型应用例子有把模糊等图像还原成清晰图像(去噪声的过程),或输入文本生成图像(没有用gan<它是要训练生成器与判别器二个网络,训练难度与效果不好>)。

(2)要完成的任务分析

openai-dalle2的出现带火了扩散模型diffusion。

1)加噪声(目的把原始分布变成纯噪声分布,例原始清晰图像一步步做马赛克变得越来越模糊,噪声可以想像成随机生成的正态分布),这是前向过程(扩散过程)。每一时刻往输入数据中增加高斯噪声,这过程就是不断构建标签(噪声)的过程,经过多时刻(越后面时刻增加的噪音越多)后最后数据就会变成纯噪声了。为什么要这样做呢?因为我们最终要去噪声,所以这里要知道噪声是怎么生成才行。这一过程要定义好噪声(即标签),这样才好还原。

2)把噪声还原成原始图像,这是后向过程(复原,这就是扩散过程的核心部分)。

(3)公式原理推导解读

1)前向过程:如何得到Xt时刻的分布。

设At=1-Bt,B随时刻往后要越来越大,所以A会越来越小,At与Bt是自己定义的衰减函数得出来的,是先验条件,已知的。

公式有:Xt=(At开根)*X(t-1)+((1-At)开根)*Z1,其中Z1表示加的噪声(服从高斯分布的),X(t-1)表示前一时刻的数据,而(A开根)与((1-At)开根)分别当作前一时刻与噪声的权重。由权重值分析当时刻越后时噪声越多,A越小,(1-At)开根就越大(也就是噪声<Z1>的权重越大)。

因为高斯分布前面乘以某个系数就相当于对分布的方差做了改变,做加减就相当于对均值做了改变,所以说在噪声前乘上一个数后还是高斯分布来的。高斯分布就是关于均值与方差的分布。

同样的道理代入公式Xt分别可用X(t-1)或者X(t-2)或者X(t-3)等表示.......也最后可用原始的X0表示,公式为(At*A(t-1)*A(t-2)....A的累乘)开根*X0+(1-(At*A(t-1)*A(t-2)....A的累乘))开根*Zt。这公式告诉我们只要知道X0与多少时刻(次)就可用X0表示当前Xt时刻分布,这里用到了递归算法(有点像串联的rnn)。

(4)逆(反)向过程:最终目的是去噪还原成原始图像。

现在已知条件是加噪后某一时刻的分布Xt与时刻t,要求的是算出X0,直接算感觉不大可能,那就一步步反推来算了(例如先得出X(t-1),X(t-2)....最后得出X0),但只知道Xt与t感觉也不好算吧,但这就有点条件概率类似(已知某个条件算出前一情况),这个不好算那我们可换种思路把这个条件概率转变成贝叶斯公式来(因为我们知道了前向工程中X0到Xt的求解了)。

即有q(X(t-1)|Xt,X0)=q(Xt|X(t-1),X0)*(q(X(t-1)|X0)/q(Xt|X0)),等号右边三项是正向过程,但第一个不是累乘(即q(Xt|X(t-1),X0)=(At开根)*X(t-1)+((1-At)开根)*Z,其实这里就是当作X(t-1)前提下求Xt,不用看X0)。

(5)公式推导结果分析

上面公式q(X(t-1)|Xt,X0)=q(Xt|X(t-1),X0)*(q(X(t-1)|X0)/q(Xt|X0))右边三项展示后都还是与噪声Z一样的高斯分布(因为与Z做乘法与加法后还是正态分,只是改变了均值与方差),展开q(Xt|X(t-1),X0)=(At开根)*X(t-1)+((1-At)开根)*Z,服从正态分布N((At开根)*X(t-1),1-At)。

同理q(X(t-1)|X0)=(A(t-1)累乘后开根)*X0+((1-A(t-1))累乘)开根)*Z,服从正态分布N((A(t-1)累乘后开根),(1-A(t-1))累乘)开根后的平方),也服从N((A(t-1)累乘后开根),(1-A(t-1))累乘)),

同理q(X(t-1)|X0)=(A(t-1)累乘后开根)*X0+((1-A(t-1))累乘)开根)*Z,服从正态分布N((A(t-1)累乘后开根),(1-A(t-1))累乘)开根后的平方),也服从N((A(t-1)累乘后开根),(1-A(t-1))累乘))。

上面三个展开的式子中服从正态分布N(u,q的平方),其中u是均值,q是标准差,q的平方就是标准差了。

我们知道正态分布后半部分的公式是e的(负的((x-u)的平方)/2(q的平方))次方。这时q(Xt|X(t-1),X0)*(q(X(t-1)|X0)/q(Xt|X0))都可转成正态分布公式时就是先进行乘法与后做除法,我们只看后半部分e次方内容,乘法就是指数相加,除法就是相减,e底不变。然后把它们的(x-u)的平方项展开进行约分化简,有点复杂。最终结果是U(t)的累乘=(1/At开根)*(Xt-(Bt/(1-At的累乘)开根)Zt),其中Zt是服从高斯分布的噪声,它可通过模型学习得到。

(6)论文流程图解读

(7)案例流程分析

打断点跑代码

(8)基本建模训练效果

打断点跑代码

六.openai-dall2论文解读

dall2是openai的东西,不开源的,但可用民间大神做的。它比openai-dall1生成出来的图像更清晰,openai-dall1类似功能免费版本代码是VQGAN-CLIP,可从github上下载玩玩,但效果肯定比不上dall1。

(1)论文基本思想和核心模块分析

这论文是2022年的,论文标题意思是用clip提取文本,图像特征,把文本内容生成图像数据(体现多模态)。整体思想是用clip把文本特征转成图像特征,然后把图像特征传给解码器(decoder)生成出图像。在解码过程中没有用gan与自回归模型(AR),而是用扩散模型diffusion。其实它主要就用到clip与diffusion这二个模型把文本生成图像。

(2)不同模型对比学习

1)运用clip对文本与图像进行特征提取,进行对比学习,若配对的说明相似度高,否则是负例,相似度越低,这里的clip是预训练模型(不用学习更新参数等)。通过对比学习后就有图像与文本编码器(encode),当来了一个文本时,经过文本编码器后就提取出文本特征向量了。

2)有了文本特征向量后,经过prior先验模型(这里用扩散模型diffusion)把它转变成图像特征向量,最后图像特征经过decoder还原生成图像出来,这过程就是dall2的核心过程,到时就是主要训练prior与encoder二个模型

(3)算法核心流程解读

1)扩散模型中没有encoder阶段,因为它由clip去做了。原始扩散模型是由t时刻加了噪声后的东西还原回原始的t0时刻的图像,输入是加了噪声后的东西与时刻t,而dall2这里不但有这二个输入特征向量,还要有文本特征向量(由clip得到),然后通过transformer  类似cls融合这三个特征(服从高斯分布的噪声,时刻t,文本特征)得到一个输入特征,由输入特征经过扩散模型后生成二个图像特征,最后还要选出更好的一个出来,最后这个最优图像特征经过decoder后生成图像出来。

七.openai-dall2源码解读

晚点更新

八.斯坦福AI小镇架构与项目解读

九.CVPR2024:EfficientSam

十.CVPR2024:yolo-world

十一.llama3应用

llama3为什么2024年比较火,主要因为它是开源的,虽然效果没gpt4好,但gpt4不开源。

(1)llama3下载与安装到本地

十二.time-llm大模型多模态预测任务

(1)time-llm论文解读

通常说的大模型是指对文本进行处理,而多模型就是有文本,视觉方面的内容进行处理了,人们的思路就是先把视觉转为文本先。即把其它领域的时序信息学成大模型能识别的文本信息(主要是跨域处理,即把某些领域(例时序领域)的特征指标转成nlp能理解的特征)。国产基础大模型做得也不错了,例如LLMS与千问通义。大模型应不止是文本,把它做到跨域领域中,它也能去理解。现在是怎样才能做到跨域呢?如何高效的模态对齐(时序与nlp),对齐时我们是不更新大模型参数的。

其他模态运用到这个大模型中,这个大模型主要是提取特征,然后连全连接层,最后输出预测结果。其实就是如何把时序数据做token映射成词,它加入了提示词与多模态对齐后做出预测输出。

怎么对时序提特征呢?首先与卷积类似对时序进行切分,在这边要做归一化,patching,embedding,把这些块映射对应到文本特征能理解的东西,这样就可用这个大模型进行提取特征了,输出预测结果。

在映射到大模型文本特征时会先对大模型语料库进行全连接学习,映射匹配成与时间序列相关特征出来(类似下采样),这样高效点。谁需要特征就谁提供q,这里是时序需要把它映射成文本特征(即时序需提特征),那么压缩后的语料库就提供k,v。通过这种attention后就得到学习后的特征了(时序的映射成nlp文本特征),这一步就是关键的patch操作过程。

下一步是输入提示词到大模型中,得到token特征,而上一步patch后得到的也是映射到文本的token,这时把这二个特征连接在一起,一并输入到大模型中,得到输出的序列特征,然后做投映映射。对映射后的结果(序列特征)先拉长成向量后接全连接做预测。

十三.llama3微调,量化,布署过程

十四.ragflow和大模型函数调用(function calling)

(1)安装布署ragflow与本地化的大模型

知识库无需大模型训练的,只需把知识内容做成可被检索向量。

1)首先上传各种不同类型不同格式的资料(例如pdf,word,q&a对(支持excel格式,excel中第一列为q,第二列为a)等),对里面的内容做一些处理(不同文档的内容是不同的),所以这一步很重要,要尽量保证上传不同格式内容能准确抓取好(所以工貝中有提供这种先选择某种格式(例论文还是教材格式呢)更好);然后把这些内容(例每个段落或每个句子或几个段落做成向量)向量化(embedding),这种做向量化的可本地布署起开源的模型来做,也可调人家的api(收费);再然后做索引,排序,数状结构后传给大模型。

2)ragflow调开源本地布署好的大模型(一般是chat类型(对话方式)与embedding类型(对问题,知识库等进行编码)),把大模型中返回的向量结果保存到本地开源的向量库中

3)github中下载ragflow进行安装(时间18:50),它是要先安装好docker的(它默认会安装到c盘的,占空间有50gb左右)。安装与执行命令安装好docker与ragflow(向量库也会自动安装好的)后就在docker把所有服务启动下。

4)浏览器上打开服务,然后选模型提供商,到时候选ollama这个来用。先到ollama官网上下载与安装ollama,安装好后就在命令窗口中输入ollama  list就到时候看到你安装有的大模型(例假设你安装了llama3,qwen2等大模型,你就可看到)。那现在在ollama网站上就下载一个阿里云的qwen2(7b或72b)的大模型下来安装(直接在下载页面上复制ollama run相关命令,然后在窗口中执行,没下载安装就会自动先下载,否则就启动运行)。因为要做知识库,所以现在还要下载一个向量化的模型,例如在ollama官网上下载(也是直接复制命令并窗口中执行)一个下载量较高且支持中文的shaw/dmeta-embedding-zh(其实免费的效果都不会太好,能用就行)。

5)回到浏览器上打开ragflow服务,然后选模型提供商,选ollama,添加刚才安装好的qwen2与shaw/dmeta-embedding-zh,注意添加页面中模型名称一定要与ollama list列出的左边模型名称一样;添加页面中的基础Url一定要写http://ip:11434地址,不能写http://localhost:11434,这里11434是ollama的默认端口,可结合实际修改这端口。

注意:ollama与ragflow也是要先在环境变量中备好的,例按这样配置:名称是OLLAMA_HOST,值是0.0.0.0:11434

当然你也可用在线的大模型(注册key并可能要交费),也许效果会更好,不用免费的。

(2)使用ragflow中的知识库

1)浏览器上打开ragflow服务,创建知识库。其中嵌入模型就选刚才安装好的shaw/dmeta-embedding-zh,其中解释方式这里可按类型来选择要上传什么类型的文件(当然可打开ragflow源码看人家怎么实现的)。然后就选貝体的文件上去,上传后就点解释操作(自动ocr,分段(切分块),embedding,存入数据库)中。

2)ragflow服务中创建一个聊天,在新建助理中选刚才创建的知识库,模型设置就选刚才安装的阿里云的qwen2

这时就可在聊天框中输入问题来测试了,那我不想在聊天框中输入,这是就先在刚才创建的聊天中生成聊天api------>后端api----->api键生成出来,到时写入到程序代码(API_KEY值)中去。生成聊天api里也可以直接点嵌入,会生成把key嵌入到前端的测试代码。

开发代码过程中,可打开ragflow/docs/references/api.md文档可参考。

同时代码中要把BASE_URL与API_KEY改成自己的。

(2)模型函数调用(function calling)

本例是用大模型来发送邮件,首先在语聚AI中配置好发送邮件的相关api 。

大模型(本例用llama3)做代理,大模型提示词,分析,最后进行函数调用。

十五.agent工作流搭建

现在流行大模型结合智能体(agent)帮我们做事情。agent是个代理,它是由很大的东西组成(如工作流,图像流,知识库,大模型,数据库消息,问答,变量,长期记忆等等),让它帮我们做事情(大模型不做)。现在用扣子来搭建agent工作流,基础版的扣子(国内可用)是免费的,但专业版是要收费的。

(1)agent

1)角色:例如你是个发票处理与写文案专家,能处理各种发票数据和编写文案

2)技能:<1>处理用户上传的发票,调用配置好的发票处理的工作流程,返回工作流处理后的结果;使用ocr技术精准识别发票信息整理成清晰的结构。<2>查询特定类型的发票数据,当用户想查询特定类型的发票数据时就直接调用工作流返回结果。<3>小红书文案写作,当用户想要写文案时,也是直接调用工作流

(2)配置不同功能的工作流(包括创建插件,创建大模型,创建数据库)

1)打开扣子,点工作流后进行配置,例第一步配置上传图像;然后识别图像(本例是发票),识别发票可调用外部插件(本例是用ocr)或api,每一步都可点测试,看这步输出的格式;对每一步的数据的下一步就可插入一个大模型来解释数据,大模型的输入参数就直接引用上一步的结果,大模型的提示词就结合实际场景叫大模型做什么描述清楚(由输入参数去做什么,输出什么<最好输出格式写好,并有例子>,例输出json格式到时候方便保存到数据库);创建数据库表是点创建bot,然后把json格式数据通过sql语句插入到这个表,最后连一个结束来输出大模型的结果看看;点测试并发布就创建了一个关于发票的工作流,到时候就可调用这工作流了。

2)按用户输入条件去刚才存到数据库中的值,这里可调大模型去执行数据库表查询

3)发布后的内容也可以按web api方式发布到网站上。

扣子中除了搭建工作流,还可以搭建知识库等。上面内容是低代码版扣子完成的。

下面说说本地布署代码来搭建的:

(3)autogen:从gitbub中下载微软的autogen,布署启动服务。

(4)phidata:从gitbub中下载微软的phidata,布署启动服务。

(5)metaGPT:这个是国产的多智能体框架,也可从gitbub中下载微软的metaGPT,布署启动服务。多个角色下进行交互(例项目经理,程序员,测试员间不断交互)

十六.sam2视频分割

(1)sam2介绍.

sam2是能分割图像与视频,一帧视频就是一张图像,多帧就是构成视频了。它主要用在图像与视频分割任务中做带提示的视觉分割(带时序性)。它是和sam一样都是有闭环数据集(数据训练模型,模型生成数据),还运用了一个很重要的memory模块。memory主要是存物体本身特征,也会存前一帧与前多帧的提示信息,预测信息等,这样可存下全部序列数据下来,并且可对这些数据进行校正更新(例如前一帧或前多帧提示错了,它可做更新),memory运用到两种attention机制(self与cross)。memory的编码时是把当前帧原图像特征直接加上当前帧预测后的特征作为当前帧的预测出来的结果,把这个结果存到memory bank中。decoder时就从memory bank中取出前几帧结果与提示,当前特征一起预测的。

(2)整体流程

首先提取出多层级的当前图像特征向量(类似mask2former),然后取出memory bank中存的前几帧的预测结果与提示信息(上下文特征),当前提示信息一起进行解码(decoder)。

(3)sam2源码

1)下载segment-anything-2源码后布署到本机,安装所需环境

2)下载安装ffmpeg工具并配置好环境变量,到时用它来切割视频为一张张图片(不用opencv,因为不用写代码)。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/68346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人机交互(包含推荐软件)

视觉交互、语音交互、笔式交互、触觉交互、虚拟环境交互。 主要的研究方面包括&#xff1a;人机交互界面表示模型与设计方法、可用性工程、可用性评估模型和方法、多模态智能交互技术、智能交互认知技术、语音识别交互、web界面交互设计、移动界面交互设计。 交互设计流程&am…

解锁未来情感科技:AI 机器人 Ropet 搭载的前沿智能黑科技

2025年的国际消费电子产品展览会&#xff08;CES&#xff09;上&#xff0c;一只可爱的“毛绒玩具”成了全场焦点。 当然&#xff0c;这并不是一个单纯的玩偶&#xff0c;而是和《超能陆战队》的大白一样温暖的陪伴机器人。 相信有很多人和小编一样&#xff0c;当年看完《超能…

HarmonyOS 鸿蒙 ArkTs(5.0.1 13)实现Scroll下拉到顶刷新/上拉触底加载,Scroll滚动到顶部

HarmonyOS 鸿蒙 ArkTs(5.0.1 13)实现Scroll下拉到顶刷新/上拉触底加载 效果展示 使用方法 import LoadingText from "../components/LoadingText" import PageToRefresh from "../components/PageToRefresh" import FooterBar from "../components/…

Flink(八):DataStream API (五) Join

1. Window Join Window join 作用在两个流中有相同 key 且处于相同窗口的元素上。这些窗口可以通过 window assigner 定义&#xff0c;并且两个流中的元素都会被用于计算窗口的结果。两个流中的元素在组合之后&#xff0c;会被传递给用户定义的 JoinFunction 或 FlatJoinFunct…

Flink CDC 在阿里云实时计算Flink版的云上实践

摘要&#xff1a;本文整理自阿里云高级开发工程师&#xff0c;Apache Flink Committer 阮航老师在 Flink Forward Asia 2024 生产实践&#xff08;三&#xff09;专场中的分享&#xff0c;主要分为以下四个方面&#xff1a; Flink CDC & 实时计算 Flink CDC YAML 核心功能…

如何使用wireshark 解密TLS-SSL报文

目录 前言 原理 操作 前言 现在网站都是https 或者 很多站点都支持 http2。这些站点为了保证数据的安全都通过TLS/SSL 加密过&#xff0c;用wireshark 并不能很好的去解析报文&#xff0c;我们就需要用wireshark去解密这些报文。我主要讲解下mac 在 chrome 怎么配置的&…

【大模型系列篇】数字人音唇同步模型——腾讯开源MuseTalk

之前有一期我们体验了阿里开源的半身数字人项目EchoMimicV2&#xff0c;感兴趣的小伙伴可跳转至《AI半身数字人开箱体验——开源项目EchoMimicV2》&#xff0c;今天带大家来体验腾讯开源的数字人音唇同步模型MuseTalk。 MuseTalk 是一个实时高品质音频驱动的唇形同步模型&#…

C++基础入门(二)

目录 前言 一、重载 1.函数重载 2.运算符重载 二、构造函数 1.什么是构造函数 2.带参数的构造函数 3.使用初始化列表 4.this关键字 5.new关键字 三、析构函数 1.什么是析构函数 四、静态成员变量 1.静态成员的定义 2.静态成员变量的作用 五、继承 1.继承基本概…

基础vue3前端登陆注册界面以及主页面设计

1.下载依赖 "element-plus/icons": "^0.0.11", "element-plus/icons-vue": "^2.3.1", "fortawesome/fontawesome-svg-core": "^6.7.2", "fortawesome/free-solid-svg-icons": "^6.7.2", &quo…

Mybatis-Plus:乐观锁与悲观锁

文章目录 一、场景二、乐观锁与悲观锁三、模拟修改冲突3.1 数据库中增加商品表3.2 添加数据3.3 添加实体3.4 添加mapper3.5 测试 四、乐观锁实现流程4.1 Mybatis-Plus实现乐观锁 一、场景 一件商品&#xff0c;成本价是80元&#xff0c;售价是100元。老板先是通知小李&#xf…

卷积神经网络——食物分类

整体框架&#xff1a; 导入库 导入了各种必需的Python库&#xff0c;用于数据处理、图像读取、模型构建和训练。 设置随机种子 seed_everything: 用于设置所有随机数生成器的种子&#xff0c;确保每次运行时的结果都是相同的。 图像预处理&#xff08;transform&#xff09; 对…

Jmeter配置服务代理器 Proxy(二)

1.创建脚本记录器 2.配置&#xff1a;Jmeter代理、端口、记录目标等 3.配置谷歌浏览器代理 浏览器配置代理的详细教程可参考&#xff1a;使用whistle代理-CSDN博客 4.启动Jmeter记录器 点击ok后弹出这个界面&#xff0c;生成了证书&#xff1a; 5.给浏览器安装Jmeter代理的证书…

灰色预测and BP神经网络 (详细上手使用)

灰色预测模型 基础知识&#xff1a; 白色系统&#xff1a;系统的信息是完全明确的。 灰色系统&#xff1a;系统的部分信息已知&#xff0c;部分信息未知。 黑色系统&#xff1a;系统的内部信息是未知的。 灰色预测是对既含有已知信息又含有不确定信息的系统进行预则&#xf…

mac 安装 node

brew versions node // 安装 node brew versions node14 // 安装指定版本 卸载node: sudo npm uninstall npm -g sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.* sudo rm -rf /usr/local/include/node /Users/$USER/.npm su…

【Unity】unity3D 调用LoadSceneAsync 场景切换后比较暗 部门材质丢失

解决方法&#xff1a;两个场景使用同样灯光 现象 直接进入第二个场景是可以正常显示 调用LoadSceneAsync来切换后&#xff0c;第二个场景出现比较暗的情况 解决方法&#xff1a;两个场景使用同样灯光&#xff0c;在loading 的场景中加入灯光。 Light—Directional Light 如果…

红日-VulnStack靶场一

http://vulnstack.qiyuanxuetang.net/vuln/ 一、环境部署 win7(被攻击机/关火墙) web服务器 1张外网网卡(桥接192.168.1.105)&#xff0c;一张内网网卡192.168.52.143/255.255.255.0/192.168.52.2 DNS 192.168.52.138 winser2008 域控服务器 1张…

实现linux硬盘smart检测

一、下载交叉编译libatasmart库 下载链接&#xff1a;https://www.linuxfromscratch.org/blfs/view/svn/general/libatasmart.html libatasmart库编译依赖libudev库&#xff0c;交叉编译器前先准备依赖的libudev: 设置libudev的环境变量&#xff0c;并通过configure编译文件生…

蓝桥杯算法|基础笔记(1)

**时间复杂度** 一、概念理解 时间复杂度是用来衡量算法运行时间随输入规模增长而增长的量级。它主要关注的是当输入规模趋向于无穷大时&#xff0c;算法执行基本操作的次数的增长趋势&#xff0c;而不是精确的运行时间。 二、分析代码中的基本操作 确定关键操作 在一段代码…

Uniapp判断设备是安卓还是 iOS,并调用不同的方法

在 UniApp 中&#xff0c;可以通过 uni.getSystemInfoSync() 方法来获取设备信息&#xff0c;然后根据系统类型判断当前设备是安卓还是 iOS&#xff0c;并调用不同的方法。 示例代码 export default {onLoad() {this.checkPlatform();},methods: {checkPlatform() {// 获取系…

K8S 节点选择器

今天我们来实验 pod 调度的 nodeName 与 nodeSelector。官网描述如下&#xff1a; 假设有如下三个节点的 K8S 集群&#xff1a; k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、镜像准备 1.1、镜像拉取 docker pull tomcat:8.5-jre8…