香港中文大学 Adobe 推出 MotionCanvas:开启用户掌控的电影级图像视频创意之旅。

简介:

亮点直击

  • 将电影镜头设计引入图像到视频的合成过程中。

  • 推出了MotionCanvas,这是一种简化的视频合成系统,用于电影镜头设计,提供整体运动控制,以场景感知的方式联合操控相机和对象的运动。

  • 设计了专门的运动条件机制,以控制信号引导基于DiT的视频扩散模型,这些信号捕捉相机和对象的运动。结合了一个运动信号翻译模块,将描绘的场景空间运动意图翻译为屏幕空间的条件信号,用于视频生成。

  • 在多样的真实世界照片上的评估证实了MotionCanvas在电影镜头设计中的有效性,突显了其在各种创意应用中的潜力。

一:总结速览

1:解决的问题

  • 如何在图像到视频生成系统中实现直观的电影镜头设计。

  • 如何有效捕捉用户在运动设计上的意图,包括相机运动和场景空间对象运动。

  • 如何表示运动信息,使其能够被视频扩散模型有效利用,以合成图像动画。

2:提出的方案

  • 引入MotionCanvas,将用户驱动的控制集成到图像到视频(I2V)生成模型中。

  • 提供整体运动控制,以场景感知的方式联合操控相机和对象的运动。

  • 设计专门的运动条件机制,以控制信号引导基于DiT的视频扩散模型。

  • 开发运动信号翻译模块,将场景空间的运动意图转化为屏幕空间的条件信号,用于视频生成。

3:应用的技术

  • 结合经典计算机图形学和当代视频生成技术。

  • 使用视频扩散模型(基于DiT)来合成图像动画。

  • 运动信号翻译模块,用于将用户的运动意图转化为可用于视频生成的信号。

4:达到的效果

  • 实现了3D感知的运动控制,而无需昂贵的3D相关训练数据。

  • 在各种真实世界图像内容和镜头设计场景中展示了方法的有效性。

  • 增强了数字内容创作的创意工作流程。

  • 适应了各种图像和视频编辑应用,展现出在创意应用中的潜力。

二:MotionCanvas

本文的方法将静态图像动画化为短视频,反映用户的运动设计意图。如下图2所示,MotionCanvas由三个主要组件组成:(1) 运动设计模块,用于捕捉多样的场景感知运动意图,(2) 翻译模块,用于将这些意图转换为屏幕空间的运动信号,以及 (3) 运动条件视频生成模型。

1:运动设计模块 --捕捉用户意图

利用输入图像作为运动设计的画布,建立一个运动设计所依托的起始场景。此设置在运动设计中实现了3D场景感知,捕捉对象、相机和场景之间的空间关系。本文的统一界面便于对相机运动、对象的全局和局部运动以及它们的时间进行独立控制。

使用3D相机路径进行相机运动控制。 使用标准的小孔相机参数定义相机运动,将3D相机路径指定为每帧的外参  和内参  的序列:,其中  和 。为了设计相机路径,用户可以在关键时刻指定相机姿态(即相对于初始视图的平移向量和旋转角度)。完整的相机路径可以通过插值获得。为了让相机路径的指定过程对用户更直观,本文的系统还允许用户指定并混合  个基本运动模式(例如,平移、推拉)以及相应的方向和速度。然后,本文的方法将指定的运动模式转换为3D相机路径。

使用场景anchor的边界框进行对象全局运动控制。 在设计视频镜头时,控制对象在场景中的移动位置至关重要。认为这种全局对象控制应该以场景感知的方式定义,其中对象位置anchor在底层3D场景中的位置。为此,通过最小化地指定起始和结束框以及(可选的)中间关键框在输入图像上实现场景anchor边界框(bbox)的放置。通过将边界框放置anchor到由输入图像建立的固定视图,用户可以通过调整位置、比例和形状来描绘想象中的目标位置。这种场景感知的边界框放置为对象的位置、比例、姿态和相对于相机的距离提供了直观的控制。根据提供的关键位置和输出视频的预期持续时间,我们通过Catmull-Rom样条插值生成平滑的框轨迹。

使用点跟踪进行对象局部运动控制。 虽然全局对象运动定义了对象在场景中的位置变化,并且是我们镜头设计过程的主要关注点,但局部对象运动——描绘对象在位置上的运动(例如,抬起手臂、旋转头部)——也可以通过增加细节和逼真性来丰富镜头设计体验。受近期基于拖动编辑成功的启发,我们使用稀疏点轨迹来描绘局部运动。由于局部运动通常涉及复杂的几何关系和变形,稀疏点轨迹提供了一种灵活的方式来定义和操控这种运动。

定时控制。 对象和相机运动的定时控制能够实现协调设计,增强叙事流畅性和视觉连贯性。本文的系统自然支持这一点,允许用户直接沿运动轨迹分配时间线。

2:运动信号翻译模块

尽管运动意图最好在具有3D感知的场景中心方式中设计,视频生成模型通常更有效地针对2D屏幕空间的运动条件进行训练,这些数据在视图依赖投影后将所有运动类型混合在一起。这种差异产生的原因在于,从大规模普通视频中提取可靠的3D信息(如相机运动和3D对象跟踪)具有挑战性。为了解决这个问题,本文的关键思路不是设计一个直接处理场景空间运动信息的视频生成模型,而是将从上节中获得的场景空间运动设计翻译为可以从野外视频中可靠提取的时空定位的屏幕空间运动信号。

通过点跟踪实现相机运动。寻求一种屏幕空间运动信号,(1) 可以从普通视频中稳健提取,(2) 编码关于视频中相机运动的详细信息。关于人类视觉感知的研究提供了一个重要的见解:通过投影到图像平面上的稀疏场景点跟踪,能够可靠地恢复自我中心运动。这一见解已广泛应用于计算机视觉中的相机姿态估计和SLAM。受此启发,我们使用点跟踪来表示相机运动。注意,这些信息可以从真实视频中稳健提取。

在推理时,通过在输入图像上随机采样一组点,将3D相机路径转换为2D点轨迹。为了专注于属于静态背景的点,这些点更能反映相机运动,排除掉从YOLOv11 生成的 mask 中估计出的可能移动的对象区域。然后,使用一个现成的单目深度估计器来获取内在相机参数和深度图。最后,根据3D相机路径和深度扭曲这些点以创建相应的2D屏幕空间轨迹。

通过边界框轨迹实现场景感知对象运动。用户定义的场景空间边界框轨迹反映了运动意图,但在投影到屏幕上时会受到相机运动和透视的影响而失真。目标是将这种场景anchor的对象边界框转换为屏幕空间,以模拟通常从真实视频中提取的对象边界框序列。首先将场景空间边界框提升到2.5D,使用相机姿态和深度在各帧之间连续地重新投影到屏幕空间。初始边界框的深度被分配为其SAM2生成的语义 mask  内的平均深度。后续边界框使用以下两种方式之一:(1) 场景中某点的参考深度(例如,地面平面)或 (2) 透视一致性的深度(增大的边界框意味着向相机移动)。使用分配的深度和相机姿态变换,在时间  时的2.5D边界框  被投影到屏幕空间 ,具有校准的位置和大小:

其中  表示相机运动变换。

通过点轨迹分解实现对象的局部运动。 由于旨在利用场景anchor的点轨迹来描述对象的局部运动,重点在于将每个场景anchor的控制点 (通过使用之前计算的对象边界框的深度将控制点提升到场景空间获得)转换为相应的屏幕空间 。这涉及考虑相机和全局运动的变换:

其中  表示对象的全局运动变换。假设在局部运动相对于全局运动期间深度变化可以忽略不计——这是合理的假设,因为局部运动通常发生在类似的深度平面内(例如,挥手)——我们为所有局部运动点分配与其初始位置相同的深度。这简化了基于相机运动的变换

3:基于运动条件的视频生成

视频扩散模型已成为视频生成的主要范式。基于预训练的DiT I2V模型构建了本文的运动条件视频生成模型。该模型是DiT到视频生成的内部标准适配,类似于现有的开源适配。通过使用屏幕空间运动条件微调模型来适应本文的运动条件生成问题。

点轨迹条件 通过将每个点轨迹编码为一组紧凑的离散余弦变换(DCT)系数来表示N个点轨迹。由于点跟踪的低时间频率特性,我们可以将长轨迹压缩为K个系数(在本文的实验中,K=10),其中DC分量编码初始位置,明确地anchor轨迹的起始点。这种紧凑表示  提供了两个优势:(1)它简化了运动数据处理,允许灵活处理不同的轨迹密度,并通过预计算提高效率;(2)它通过上下文内条件无缝集成到DiT框架中。每个轨迹被视为一个单独的 token ,其 embedding 从DCT系数中得出。

边界框序列条件 边界框传达复杂的空间信息(位置、形状、姿态),并与轨迹分开注入以区分相机和对象的全局运动。我们通过首先将它们栅格化为独特的颜色编码 mask  来将边界框序列编码为时空 embedding ,从而形成一个RGB序列 。然后使用与基础DiT模型相同的预训练视频自动编码器(3D-VAE)将该序列编码为时空 embedding  。这些 embedding 被分块为 token 并添加到噪声视频潜在 token 中,如下图3所示。

模型训练  由于采用了潜在扩散模型,所有RGB空间数据都通过3D-VAE编码器压缩为潜在空间内的 token 。运动条件模型使用流匹配损失进行优化。设定真实视频潜在变量为 ,噪声为 ,噪声输入在时间步  通过线性插值  生成。模型  预测速度 。训练目标是:

其中,分别表示输入图像、点轨迹、边界框和文本提示。请注意,我们还保留了文本条件,以提供在控制视频内容变化方面的额外灵活性。训练完成后,清晰的视频潜在 token 可以通过输入图像、文本提示和屏幕空间运动信号生成,然后解码回RGB帧。

4:通过自回归生成可变长度视频

生成可变长度视频对于电影叙事很有益。通过自回归生成实现了这一点,这比直接建模长视频更具计算效率,并反映了复杂视频镜头通常由短而简单的镜头顺序拼接而成的事实。虽然本文的图像到视频框架自然支持无需训练的自回归长视频生成,但发现这通常会导致明显的运动不连续性,因为单个条件图像缺乏足够的时间运动信息。为了解决这个问题,在训练MotionCanvasAR时增加了对短视频剪辑(16帧)的额外条件。这种重叠短剪辑策略使每个生成步骤都基于先前的时空上下文,从而实现自然过渡。在推理过程中,模型生成任意长度的视频,每次生成迭代时独立控制运动。为了进一步优化输入的运动信号并使其与训练设置对齐,我们通过结合用户意图与反向追踪的运动重新计算屏幕空间运动信号。这种方法确保了更平滑和一致的运动生成。

三:应用

MotionCanvas允许灵活控制场景中相机和对象的运动。这使得本文的主要应用成为电影镜头设计框架,允许用户交互式地管理镜头的关键运动方面。此外,运动表示的灵活性使得在各种简单的视频编辑任务中自然应用本文的框架成为可能。

1:联合相机和对象控制的镜头设计

如下图 4 所示,框架能够在场景感知的方式下精确且独立地控制对象和相机的运动,从而设计出高度动态且视觉吸引力强的镜头,同时紧密遵循所提供的运动设计。

在上图 4 中,值得注意的是,在两个示例中,每列的结果都遵循相同的相机运动,而对象运动则根据相应的指定对象控制进行变化。通过在场景感知的方式下放置边界框,用户可以实现各种场景空间效果。例如,这使得在底部示例中,可以让汽车保持静止(第一行)或在道路上前进(第二行)和后退(第三行)。重要的是,这种场景anchor的运动在相机运动独立变化时得以保留。这突显了场景感知对象运动控制的重要性。

具有复杂轨迹的长视频。为了生成具有复杂相机和对象运动的长视频,本文的框架采用“规范-生成”循环。这种方法允许用户为每个段定义运动信号,然后以自回归方式生成视频片段。受动画工作流程的启发 [39, 50],MotionCanvas结合关键帧和插值来创建复杂的运动路径。具体而言,用户可以为对象和相机运动设置关键帧,然后系统在这些关键帧之间插值以生成平滑且连贯的轨迹。

如下图 5 所示,本文的方法可以生成具有复杂相机运动控制序列的长视频。为每个输入图像展示了两个视频结果,这些结果来自相同的相机控制(请注意,这两个视频生成了几乎相同的相机运动),同时有意控制不同的对象运动。

2:对象局部运动控制

MotionCanvas还支持控制对象的局部运动,以潜在支持基于拖拽的编辑和生成。用户可以通过直接在对象自身坐标内指定拖拽轨迹来定义局部对象运动。这些点轨迹然后被转换为合适的屏幕空间点轨迹,以对视频生成模型进行条件化,考虑到相机和对象的全局运动。如下图 6 所示,本文的方法可以生成多样且细致的局部运动,使得生成对象运动的不同变体成为可能(例如,婴儿手臂移动的不同方式)。

此外,得益于专门的运动翻译模块,该模块考虑了局部运动与相机运动以及对象全局运动之间的协调,可以在不同的相机和对象动态下实现一致的对象局部运动控制(上图 6 底部)。这为将局部对象运动控制纳入上述镜头设计框架打开了可能性。

3:附加应用:简单的视频编辑

运动迁移。本文的方法可以适应于从源视频向与初始帧具有结构相似性的输入图像执行运动迁移。通过利用多功能的屏幕空间条件表示,框架能够有效捕捉并迁移对象和相机运动,即使是涉及3D变换的情况,也无需显式3D相机姿态提取。如下图 7 所示,苹果的旋转运动可以被迁移到狮子的头部旋转。

视频编辑。运动迁移的概念可以扩展以促进视频编辑,其中输入图像通过图像编辑从第一帧派生。利用多功能的屏幕空间条件表示,本文的方法将提取的对象和相机运动传播到派生图像,确保一致且真实的动态,类似于 [25]。上图 7 显示了两个示例,其中在初始帧上执行的编辑通过从原始视频中提取的运动信号传播,生成了一个完整编辑的视频。

四:实现细节

数据。 从内部数据集中收集了约110万高质量视频。通过使用DEVA 进行全景分割,从视频中提取边界框,并将这些边界框拟合到提取的 mask  上。通过链式光流(使用RAFT)计算稀疏点跟踪注释。为了确保可靠的运动数据,设定了有效跟踪长度的阈值。还根据关键词(如向量、动画)过滤掉了一部分视频,以专注于自然视频数据。边界框进一步通过相邻帧的交并比(IoU)、尺寸变化比、位置变化(欧几里得距离)以及相关对象与我们移动对象列表的相关性进行优化。最终,获得了约60万条具有良好运动质量和高保真注释的视频。在训练过程中,以80%的概率随机选择N个点轨迹,其中N ∼ U(0, 100)。此外,有10%的概率选择仅来自移动对象区域的点,另有10%的概率选择来自非移动对象区域的点。

模型。 视频生成模块是从一个预训练的图像到视频的DiT模型微调而来,进行了100K步的训练,使用批量大小为256的AdamW优化器,学习率为,权重衰减为0.1。训练主要涉及32帧和64帧的视频,采样率为12和24 FPS,分辨率为640×352。在推理过程中,应用了无分类器指导的文本条件。

1:相机运动控制质量

本文采用旋转误差(RotErr.)、平移误差(TransErr.)和CamMC作为指标,遵循[15, 46]。此外,还计算了Frechet Inception Distance(FID)和Frechet Video Distance(FVD)来评估生成视频的质量。这些指标是在从RealEstate-10K 测试集中随机抽取的1K视频上计算的(@640×352,14帧)。将本文的方法与两种最先进的相机运动控制图像到视频方法进行比较:MotionCtrl和CameraCtrl。定量结果如下表1所示。需要注意的是,MotionCtrl和CameraCtrl都是在RealEstate10K训练集上训练的,该训练集包含与测试集相同领域的视频。然而,本文的方法在零样本设置中在所有指标上都优于它们。

2:3D感知对象运动控制质量

根据[49],在VIPSeg过滤后的验证集上计算ObjMC和FID,该验证集在排除没有移动物体的视频后包含116个样本(@640×352,14帧)。我们与DragAnything、MOFA-Video和TrackDiffusion进行比较,量化结果如下表2所示。本文的方法在控制精度(ObjMC)和帧质量(FID)上都优于其他基线,如图9进一步证实。DragAnything和MOFA-Video中的显式变形引入了对象失真,而TrackDiffusion对欧几里得坐标的依赖阻碍了收敛,导致不准确。通过为边界框引入时空表示,本文的方法实现了精确的对象运动控制(例如,位置、大小和姿态)。

3:联合相机和对象控制

进行了一项用户研究,以评估在3D场景感知上下文中联合相机和对象运动控制的感知质量。将本文的方法与基于拖拽的I2V方法进行比较:DragAnything和MOFA-Video。注意,现有方法没有设计用于3D感知控制,因此我们直接采用场景空间点轨迹作为基线的输入,遵循其原始设置。除了用于对象局部运动控制的点轨迹外,还提供了来自边界框序列和基于深度的变形的点轨迹,用于对象和相机的全局运动控制。参与者被要求根据运动依从性、运动质量和帧保真度选择最佳结果。35名参与者的回应统计结果汇总在下表3中。本文的方法在所有评估方面始终优于竞争对手。视觉结果如下图10所示,其中两个基线方法均未能在3D感知的方式下共同捕捉复杂对象的全局运动(即身体的移动)、局部运动(即放下手)和相机运动。相比之下,本文的MotionCanvas生成了遵循所有类型控制的运动,这要归功于其统一的框架和运动表示设计。

4:消融研究

相机运动表示。 构建了几个基线来研究本文的相机运动表示的有效性:高斯图(2D高斯模糊稀疏光流图)、Plucker embedding和我们提出的基于DCT系数的轨迹编码。量化比较如下表4所示。由于固有的模糊性(特别是在更密集的控制下),高斯图变体在精确相机控制方面表现不佳,倾向于生成静态相机运动(高FVD)。值得注意的是,Plucker embedding 变体需要在带有3D相机姿态标签的视频数据集上进行训练(即,遵循[15]的RealEstate10K训练集)。它在这个域内静态测试集上表现良好,但未能生成对象运动(下图11‘猫’)且缺乏普适性。此外,本文的轨迹编码效率极高,仅引入少量系数 token ,同时为相机内在和外在控制提供稳健的性能。

边界框条件。 进一步评估了本文的边界框条件。应用了[43]中提出的另一种条件设计,将边界框坐标连接到视觉 token 上(Ourscoord)。上表2的最后两列结果表明本文的时空颜色编码图条件的优越性。欧几里得坐标 token 与视觉 token 融合的难度导致低ObjMC。

5:结论

MotionCanvas,一个统一的I2V合成系统,能够灵活控制相机和对象运动,实现电影镜头设计。通过运动信号翻译模块,MotionCanvas将直观的3D运动规划转换为精确的2D控制信号,用于训练视频模型,而无需依赖3D注释,从而拓宽了训练数据的来源。综合评估显示,MotionCanvas在生成多样化、高质量的视频方面有效地反映了用户的运动意图。

参考文档:论文链接:https://arxiv.org/pdf/2502.04299
git 链接:https://motion-canvas25.github.io/

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

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

相关文章

01.Docker 概述

Docker 概述 1. Docker 的主要目标2. 使用Docker 容器化封装应用程序的意义3. 容器和虚拟机技术比较4. 容器和虚拟机表现比较5. Docker 的组成6. Namespace7. Control groups8. 容器管理工具9. docker 的优缺点10. 容器的相关技术 docker 官网: http://www.docker.com 帮助文档…

【DeepSeek】deepseek可视化部署

目录 1 -> 前文 2 -> 部署可视化界面 1 -> 前文 【DeepSeek】DeepSeek概述 | 本地部署deepseek 通过前文可以将deepseek部署到本地使用,可是每次都需要winR输入cmd调出命令行进入到命令模式,输入命令ollama run deepseek-r1:latest。体验很…

开启对话式智能分析新纪元——Wyn商业智能 BI 携手Deepseek 驱动数据分析变革

2月18号,Wyn 商业智能 V8.0Update1 版本将重磅推出对话式智能分析,集成Deepseek R1大模型,通过AI技术的深度融合,致力于打造"会思考的BI系统",让数据价值触手可及,助力企业实现从数据洞察到决策执…

Response 和 Request 介绍

怀旧网个人博客网站地址:怀旧网,博客详情:Response 和 Request 介绍 1、HttpServletResponse 1、简单分类 2、文件下载 通过Response下载文件数据 放一个文件到resources目录 编写下载文件Servlet文件 public class FileDownServlet exten…

分层耦合 - IOC详解

推荐使用下面三种, 第一种多用于其他类 声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写。 使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用…

STM32 Flash详解教程文章

目录 Flash基本概念理解 Flash编程接口FPEC Flash擦除/写入流程图 Flash选项字节基本概念理解 Flash电子签名 函数读取地址下存放的数据 Flash的数据处理限制部分 编写不易,请勿搬运,感谢理解!!! Flash基本概念…

WPF 设置宽度为 父容器 宽度的一半

方法1:使用 绑定和转换器 实现 创建类文件 HalfWidthConverter public class HalfWidthConverter : IValueConverter{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){if (value is double width){return width / 4…

【Ubuntu VScode Remote SSH 问题解决】Resolver error: Error: XHR failed

1. 问题描述 VScode使用remote ssh 远程服务器,报错类似: [12:06:01.219] Downloading VS Code server locally... [12:06:01.310] Resolver error: Error: XHR failedat k.onerror (vscode-file://vscode-app/private/var/folders/g1/cvs2rnpx60qc3b4…

32单片机学习记录1之GPIO

32单片机学习记录1之GPIO 前置 GPIO口在单片机中扮演着什么角色? 在单片机中,GPIO口(General Purpose Input/Output) 是一种通用输入/输出接口,扮演着连接单片机与外部设备的桥梁角色。具体来说,它在单片…

第三十二周:Informer学习笔记

目录 摘要Abstract1 Informer1.1 预备知识1.2 模型框架1.3 实验分析 总结 摘要 本周学习的主要内容是Informer模型,Informer是一种专为长序列时间序列预测(LSTF) 设计的Transformer模型。相较于传统的Transformer,Informer采用Pr…

绩效归因概述

绩效归因概述 1. 分类2. 基于净值的归因方法2.1 发展背景2.2 择时选股模型 T-M模型2.3 择时选股模型 H-M模型2.4 择时选股模型 C-L模型2.5 风格配置模型-Sharpe2.6 多因子模型 Fama-French32.7 多因子模型 Carhart42.8 多因子模型 Fama-French5 3. 基于持仓的归因方法3.1 发展背…

MambaMorph brain MR-CT

loss代码实现了几种用于医学图像配准(Registration)和分割(Segmentation)任务的损失函数,主要包括以下几种: NCC (Normalized Cross-Correlation): 功能: 计算局部归一化互相关损失,用于衡量两个图像之间的相似性。 应用场景: 通常用于图像配准任务,通过最大化图像之间…

C++ ——从C到C++

1、C的学习方法 (1)C知识点概念内容比较多,需要反复复习 (2)偏理论,有的内容不理解,可以先背下来,后续可能会理解更深 (3)学好编程要多练习,简…

<tauri><rust><GUI>基于rust和tauri的图片显示程序(本地图片的加载、显示、保存)

前言 本文是基于rust和tauri,由于tauri是前、后端结合的GUI框架,既可以直接生成包含前端代码的文件,也可以在已有的前端项目上集成tauri框架,将前端页面化为桌面GUI。 环境配置 系统:windows 10 平台:visual studio code 语言:rust、javascript 库:tauri2.0 概述 …

Arrays工具类详解

目录 1. Arrays.toString() 方法 2. Arrays.deepToString() 方法 3. Arrays.equals(int[ ] arr1, int[ ] arr2) 方法 4. Arrays.equals(Object[] arr1, Object[] arr2) 方法 5. Arrays.deepEquals(Object[] arr1, Object[] arr2) 方法 6. Arrays.sort(int[] arr) 方法 7…

设计高效的测试用例:从需求到验证

在现代软件开发过程中,测试用例的设计一直是质量保证(QA)环节的核心。有效的测试用例不仅能够帮助发现潜在缺陷,提升软件质量,还能降低后期修复成本,提高开发效率。尽管如此,如何从需求出发&…

基于YoloV11和驱动级鼠标模拟实现Ai自瞄

本文将围绕基于 YoloV11 和驱动级鼠标实现 FPS 游戏 AI 自瞄展开阐述。 需要着重强调的是,本文内容仅用于学术研究和技术学习目的。严禁任何个人或组织将文中所提及的技术、方法及思路应用于违法行为,包括但不限于在各类游戏中实施作弊等违规操作。若因违…

三角测量——用相机运动估计特征点的空间位置

引入 使用对极约束估计了相机运动后,接下来利用相机运动估计特征点的空间位置,使用的方法就是三角测量。 三角测量 和对极几何中的对极几何约束描述类似: z 2 x 2 R ( z 1 x 1 ) t z_2x_2R(z_1x_1)t z2​x2​R(z1​x1​)t 经过对极约束…

如何本地部署DeepSeek

第一步:安装ollama https://ollama.com/download 打开官网,选择对应版本 第二步:选择合适的模型 https://ollama.com/ 模型名称中的 1.5B、7B、8B 等数字代表模型的参数量(Parameters),其中 B 是英文 B…

Git生成公钥和私钥的方式

因为需要访问远程Git服务器,需要使用公钥: 1、先检测电脑上是否已经有.ssh目录 像我这就是没有的 2、开始生成一个新的SSH密钥(RSA) 打开Git Bash, 然后运行ssh-keygen -t rsa -b 4096 -C "注释" -t rsa是密匙类型…