【TNT】Target-driveN Trajectory Prediction学习笔记

这里写自定义目录标题

      • 前言
      • (文章的核心思想)
      • (1阶段)
      • (2阶段)
      • (3阶段)
      • (网络框架)
        • 1. 场景上下文编码
        • 2. 目标预测
        • 3. 目标条件运动估计
        • 4. 轨迹评分与选择
      • (模型推理)
      • (总结)
      • (消融研究结论)
      • (网络)
      • (问题厘清)

 

TNT Framework

前言

  • 论文: https://arxiv.org/abs/2008.08294
  • 代码: https://github.com/Henry1iu/TNT-Trajectory-Prediction
  • 年份: 2020.08
  • 数据: argoverse + INTERACTION dataset + In-house Pedestrian-at-Intersection dataset + Stanford Drone dataset

(文章的核心思想)

p ( s F ∣ χ ) = ∫ τ ∈ τ ( c P ) p ( τ ∣ χ ) p ( s F ∣ τ , χ ) d τ p(s_F|\chi)=\int_{\tau\in \tau(c_P)}^{} p(\tau|\chi)p(s_F|\tau,\chi)d\tau p(sFχ)=ττ(cP)p(τχ)p(sFτ,χ)dτ

  • 其中, χ = ( s P , c P ) \chi = (s_P, c_P) χ=(sP,cP) s P s_P sP是单个目标的观察状态序列, c P c_P cP是与其他代理和场景元素组成的环境交互, s F s_F sF是未来时间步的状态序列
  • 我们想捕获的是整体概率分布 p ( s F ∣ χ ) p(s_F|\chi) p(sFχ)
  • τ \tau τ是目标空间, p ( τ ∣ χ ) p(\tau | \chi) p(τχ)p(t|x)是目标分布可以很好的捕获意图的不确定性
  • 文章使用一组离散的位置来近似目标空间, 将目标分布p(t|x)的估计转换为分类任务,有更好的解释性,在考虑目标空间t的时候也引入了专家知识即道路拓扑结构

文章分为三个阶段进行:

  • 1阶段: 确定目标空间 τ \tau τ的信息。即目标预测, 根据观察到的 χ \chi χ, 用一组离散目标状态来模拟意图的不确定性, 然后输出目标分布 p ( τ ∣ χ ) p(\tau | \chi) p(τχ), 也就是anchor打分
  • 2阶段: 以目标为条件的运动估计。有了选定的目标空间, 即top离散点, 对从初始状态到未来可能运动状态进行单模态建模, 即输出公式(1)的结果
    3阶段: 适应下游任务。需要给出一小部分有代表性的未来预测, 而不是所有可能未来的完整分布, 什么都预测相当于没预测。所以3阶段就是学习评分函数对结果进行评分选择

pipeline的三个阶段

  • target prediction: 给所有anchor点打分, 选出top的anchor点
  • target-conditioned motion estimation: 就选出的anchor点回归出完整轨迹
  • trajectory scoring & selection: 就2阶段得到的几条轨迹, 考虑其他预测轨迹的同时估计轨迹的概率

(1阶段)

  • 1阶段最重要, 可有不同的撒点策略
  • 撒点策略需要有适当的分辨率, 对全部可行驶区域都要有很好的覆盖。只要goal选定, 对下游就很有帮助
  • 文章中提到的撒点策略:
    • (1) 根据地图信息撒点
    • (2) grid网格化撒点
  • 1阶段在给goal打分的同时还会回归出两个offset,goal+offset才是2阶段用到的endpoint

(2阶段)

  • 轨迹拟合难度不高, 需要符合运动学和动力学约束

(3阶段)

  • 对整条轨迹进行打分, 打分策略见下一章节

(网络框架)

在这里插入图片描述

1. 场景上下文编码
  • 场景上下文编码是轨迹预测的第一步, 以捕获agent-agent和agent-road交互
  • 如果场景上下文仅自上而下的图像可用, 采用ConvNet作为上下文编码器
  • 如果高精地图可用, 采用先进的VectorNet作为上下文编码器
    • polyline作为高精地图元素 c P c_P cP和智能体轨迹 s P s_P sP的抽象
    • 采用子图网络(MLP+GNN)对每条折线进行编码, 使用全局图(注意力机制的GNN)来模拟折线之间的交互关系
    • 输出每个agent的全局上下文特征x(MLP作为decoder)
2. 目标预测
  • 通过一组N个离散的, 具有连续偏移量的量化位置来模拟潜在未来目标
    τ = { τ n } = { ( x n , y n ) + ( △ x n , △ y n ) } n = 1 N \tau = \left \{ \tau^n \right \} =\left \{ (x^n,y^n)+(\bigtriangleup x^n, \bigtriangleup y^n) \right \} _{n=1}^{N} τ={τn}={(xn,yn)+(xn,yn)}n=1N

    • 小写 τ \tau τ被定义为agent在固定时间范围T(预测时长)内可能出现的位置 ( x , y ) (x,y) (x,y),然后通过离散连续分解, 对目标分布进行建模 p ( τ n ∣ χ ) = π ( τ n ∣ χ ) ⋅ N ( △ x n ∣ v x n ( χ ) ) ⋅ N ( △ y n ∣ v y n ( χ ) ) p(\tau^n|\chi)=\pi(\tau^n | \chi)\cdot N(\bigtriangleup x^{n}|v_{x}^{n}(\chi) )\cdot N(\bigtriangleup y^{n}|v_{y}^{n}(\chi) ) p(τnχ)=π(τnχ)N(xnvxn(χ))N(ynvyn(χ))

    • 其中 π ( τ n ∣ χ ) = e x p ( f ( τ n , χ ) ) ∑ τ ′ e x p ( f ( τ ′ , χ ) ) \pi(\tau^{n}|\chi)=\frac{exp(f(\tau^{n}, \chi))}{\sum_{\tau'}^{} exp(f(\tau', \chi))} π(τnχ)=τexp(f(τ,χ))exp(f(τn,χ))是位置选择的离散分布,以此来预测目标位置及其最可能的偏移量的离散分布

    • p ( τ n ∣ χ ) p(\tau^{n} | \chi) p(τnχ)将连续空间上概率分布的预测拆成两部分:一部分是离散点, 也就是anchor点;另一部分是offset, 也就是anchor对应的offset, 两者加起来得到goal的位置

    • N ( ⋅ ∣ v ( ⋅ ) ) N(\cdot|v(\cdot)) N(v())表示广义正态分布, 均值记为 v ( ⋅ ) v(\cdot) v()

    • f ( ⋅ ) f(\cdot) f() v ( ⋅ ) v(\cdot) v()都使用具有目标坐标 ( x k , y k ) (x^{k}, y^{k}) (xk,yk)和场景上下文特征 χ \chi χ为输入的2层MLP实现

    • f f f用于给所有target打分, v v v用于拟合回归出offset

    • f f f使用交叉熵, v v v使用Huber loss

  • 此阶段损失函数如下 L S 1 = L c l s ( π , u ) + L o f f s e t ( v x , v y , △ x u , △ y u ) L_{S1}=L_{cls}(\pi, u)+L_{offset}(v_x,v_y,\bigtriangleup x^u, \bigtriangleup y^u) LS1=Lcls(π,u)+Loffset(vx,vy,xu,yu)

    • 其中 u u u为最接近GT真值位置的目标, L c l s L_{cls} Lcls交叉熵, L o f f s e t L_{offset} LoffsetHuber Loss, v x , v y v_x, v_y vx,vy均值位置, △ x , △ y \bigtriangleup x, \bigtriangleup y x,y u u u与GT真值位置的空间偏移量
  • 撒点过程

    • 对于车辆: 车道中心线上的点进行均匀采样, 作为候选目标

      • 该方法基于车辆通常不会偏离车道太远的假设
      • 文章中每1m至少采样一个点作为候选目标
    • 对于行人: 在agent周围生成一个虚拟网络grid, 并将网格点作为候选目标

      • 文章中网络比如10x10, 每1m一个网格点作为候选目标
    • 对于每个候选目标, TNT目标预测器会生成一个 ( π , △ x , △ y ) (\pi, \bigtriangleup x, \bigtriangleup y) (π,x,y)组成的元组

      • π \pi π表示到达该目标的概率, 如前面的 π \pi π表达式;另两个是相对目标中心偏移量
      • 过程中可能设置N = 1000, 以增加潜在未来点的覆盖范围
      • 然后保留较小数目,比如top M = 50,好的M有助于平衡召回率模型效率
      • 采用有限离散目标空间回归相比直接回归,可以避免模式平均问题;模式平均是阻碍多模态预测的主要因素
3. 目标条件运动估计
  • 第二阶段隐藏了两个假设:

    • [1] 条件独立性: 未来时间步之间相互独立, 而不是未来时间步t影响t+1
    • [2] 给定目标的轨迹分布是正态分布的: 对于短时预测假设成立, 长时预测需要多次迭代目标预测和运动估计两个过程以保持该假设成立
  • 这个阶段也是用2层MLP实现, 输入是上下文特征 χ \chi χ和目标位置 τ \tau τ, 输出可能的 M M M条轨迹

  • 损失函数如下 L S 2 = ∑ t = 1 T L r e g ( s ^ t , s t ) L_{S2}=\sum_{t=1}^{T}L_{reg}(\hat{s}_t, s_t ) LS2=t=1TLreg(s^t,st)

    • L r e g L_{reg} Lreg为每步坐标偏移的Huber Loss
4. 轨迹评分与选择
  • 评估未来完整轨迹s_f的可能性

  • 使用最大熵模型对第二阶段的M个轨迹进行评分得到预测分数 ϕ ( s F ∣ χ ) = e x p ( g ( s F , χ ) ) ∑ m = 1 M e x p ( g ( s F m , χ ) ) \phi (s_F|\chi)=\frac{exp(g(s_F, \chi))}{\sum_{m=1}^{M}exp(g(s^m_F, \chi)) } ϕ(sFχ)=m=1Mexp(g(sFm,χ))exp(g(sF,χ))

    • g ( ⋅ ) g(\cdot) g()2层MLP
  • 这个阶段训练损失函数如下 L S 3 = L C E ( ϕ ( s F ∣ χ ) , ψ ( s F ) ) L_{S3}=L_{CE}(\phi (s_F|\chi), \psi (s_F)) LS3=LCE(ϕ(sFχ),ψ(sF))

    • 预测分数和GT真值分数的交叉熵
    • 真值分数计算 ψ ( s F ) = e x p ( − D ( s , s G T ) / α ) ∑ s ′ e x p ( − D ( s ′ , s G T ) / α ) \psi (s_F)=\frac{exp(-D(s, s_{GT})/\alpha)}{\sum_{s'}^{}exp(-D(s',s_{GT})/\alpha) } ψ(sF)=sexp(D(s,sGT)/α)exp(D(s,sGT)/α)
    • D的单位是m, alpha是温度,D的计算公式 D ( s i , s j ) = m a x ( ∥ s 1 i − s 1 j ∥ 2 2 , . . . , ∥ s t i − s t j ∥ 2 2 ) D(s^{i},s^{j})=max(\left \| s_{1}^{i}-s_{1}^{j} \right \| _{2}^{2} , ...,\left \| s_{t}^{i}-s_{t}^{j} \right \| _{2}^{2}) D(si,sj)=max( s1is1j 22,..., stistj 22)
  • 这一阶段, 从M条中选择K条, 这个过程先对评分轨迹由高到低排序, 然后贪婪选择, 过程中剔除近乎重复的轨迹, 剔除过程使用类似非最大抑制算法NMS

  • 轨迹评分的时候有个似然得分和多样性得分:

    • 似然得分: 衡量每个轨迹与真实轨迹的匹配程度, 使用广义正态分布计算
    • 多样性得分: 衡量每个轨迹与其他轨迹的差异程度, 使用轨迹间平均距离计算
  • 排序过程: 先根据似然得分进行排序, 再根据多样性得分进行排序

(模型推理)

  • 端到端训练, 总的损失函数:
    L = λ 1 L S 1 + λ 2 L S 2 + λ 3 L S 3 L=\lambda _{1}L_{S1}+\lambda _{2} L_{S2}+\lambda _{3} L_{S3} L=λ1LS1+λ2LS2+λ3LS3

    • λ 1 / λ 2 / λ 3 \lambda _{1}/\lambda _{2}/\lambda _{3} λ1/λ2/λ3用来平衡训练过程
  • 推理过程如下:

    • (1) 对上下文进行编码
    • (2) 取样 N N N个候选目标作为目标预测器的输入,根据 π ( τ ∣ χ ) \pi(\tau|\chi) π(τχ)的估计取前 M M M个目标
    • (3) 从运动估计模型 p ( s F ∣ τ , χ ) p(s_F|\tau, \chi) p(sFτ,χ)中为 M M M个目标中的每个目标提取 M A P MAP MAP轨迹
    • (4) 通过 ϕ ( s F ∣ τ , χ ) \phi (s_F|\tau, \chi) ϕ(sFτ,χ) M M M个轨迹进行评分,并选出最终的 K K K个轨迹集

(总结)

  • 参数选择:

    • TNT三个阶段都采用的是2层MLP
    • hidden_size设置为64
    • 阶段3中温度 α \alpha α设置为0.01
    • 总的损失权值设置为 λ 1 \lambda_{1} λ1 = 0.1, \lambda_{2} = 1.0, \lambda_{3} = 0.1
    • 优化器选用Adam
    • epochs = 50
    • 学习率设置为0.001
    • batch_size = 128
  • 三阶段总结

    阶段输入输入描述输出输出描述LossLoss描述
    S 1 S1 S1 χ = ( s P , c P ) \chi=(s_P,c_P) χ=(sP,cP)agent的全局上下文特征编码 p ( τ n ∣ χ ) p(\tau^{n} | \chi) p(τnχ)N个目标位置及其偏移量的分布;再根据位置离散分布结果 π ( τ ∣ χ ) \pi(\tau|\chi) π(τχ)选择前M个 L S 1 = L c l s ( π , u ) + L o f f s e t ( v x , v y , △ x u , △ y u ) L_{S1}=L_{cls}(\pi, u)+L_{offset}(v_x,v_y,\bigtriangleup x^u, \bigtriangleup y^u) LS1=Lcls(π,u)+Loffset(vx,vy,xu,yu) L c l s L_{cls} Lcls=交叉熵; L o f f s e t L_{offset} Loffset=Huber Loss
    S 2 S2 S2 ( χ , τ ) (\chi, \tau) (χ,τ)场景上下文特征和目标位置 p ( τ n ∣ χ ) p(\tau^{n} | \chi) p(τnχ)M条轨迹 L S 2 = ∑ t = 1 T L r e g ( s ^ t , s t ) L_{S2}=\sum_{t=1}^{T}L_{reg}(\hat{s}_t, s_t ) LS2=t=1TLreg(s^t,st) L r e g L_{reg} Lreg为每一时间步坐标偏移的Huber Loss
    S 3 S3 S3 ( χ , s F , s G T ) (\chi, s_F, s_{GT}) (χ,sF,sGT) s F s_F sF=M条轨迹; s G T s_{GT} sGT=真值轨迹K条轨迹及其概率从M条轨迹中选择K条轨迹,NMS方法 L S 3 = L C E ( ϕ ( s F ∣ χ ) , ψ ( s F ) ) L_{S3}=L_{CE}(\phi (s_F|\chi), \psi (s_F)) LS3=LCE(ϕ(sFχ),ψ(sF))预测分数 ϕ \phi ϕ与真值分数 ψ \psi ψ的交叉熵
  • TNT对1阶段目标撒点(对 ( x k , y k ) (x^{k}, y^{k}) (xk,yk)的分布),以及2阶段运动估计对未来轨迹建模,都采用了广义正态分布

  • 评估指标采用 A D E ADE ADE F D E FDE FDE以及 M R MR MR, 对于 K K K个轨迹采用 m i n A D E K minADE_K minADEK m i n F D E K minFDE_K minFDEK

(消融研究结论)

  • (1) 条件运动估计能生成以条件目标为终点的轨迹
  • (2) 对于行人,采用网格法比地图采样方式获取目标表现更好
  • (3) 在达到饱和点之前,越密集的目标能够获得更好的性能,如下
  • (4) 通过1阶段的偏移回归(目标增加偏移量),1阶段性能提高了0.16m
  • (5) 2阶段的假设成立, 即机器人的运动状态是单模态的, 也就是2阶段用单模态分布对从初始状态到目标的未来可能运动进行建模是合理的

(网络)

  • Encoding
    • 采用vectornet编码子图和全局图信息
  • Decoding
    • 即上面所述的3个预测阶段
    • 输出topK个带概率的轨迹

(问题厘清)

  • 问题1: TNT输出是多模态的吗

    • 多模态。文章在目标预测的时候也是对未来有限个目标位置进行建模
    • TNT的多模主要放在第一阶段,第二阶段目标条件运动估计就是给定target出轨迹了
  • 问题2: TNT支持多目标同时预测吗

    • TNT方法是围绕单目标设计的,通过三个阶段生成单目标智能体的多条预测轨迹(单目标多模态)
    • 也支持拓展到多目标预测, 但是会存在未来轨迹依赖和计算效率方面的问题
  • 问题3: 目标预测阶段, 会因为撒点漏掉真实意图吗

    • 理论上撒点会对全局区域都有覆盖, 但是因为行人是网格撒点, 应该是不会遗漏意图的, 最多不准确; 但是车辆是结合道路结构特征的撒点, 如果地图元素缺失可能会导致没有撒点到真实意图
    • 由于撒点太稀疏或者撒点分布不合理或者传感器噪声地图误差等, 会造成撒点漏掉真实意图的可能性; 文章中出于平衡召回(意图找查全率)和模型效率考虑, 选定N=1000, 选择top M=50
  • 问题3: TNT中的NMS非最大抑制方法是什么, 如何选择局部高分目标, 启发式搜索? 贪心算法?

    • NMS是非最大值抑制, Non-Maximum Suppression. 抑制非最大值的元素, 保留极大值的元素; 多用于目标检测,目标跟踪等, 是一种去重策略; 步骤:选高置信度结果->计算IoU->阈值过滤->遍历
    • NMS本身是一种贪心算法, 只考虑当前选择的区域, 而忽略了全局最优解的可能性
    • 可以考虑其他全局优化算法如DP等, 或者使用改进的NMS算法如soft NMS等
  • 问题5:TNT编码的车道元素时lane centerline还是lane boundary

    • 如果两者都提供, 那可以同时编码两种地图元素;
    • 如果只关注在车道上正常行驶车辆, 且LC已经足够表达这种趋势, 那TNT倾向于只编码LC
    • 如果是需要预测变道行为, 则可能同时编码车道边界LB
    • 根据具体情况而定
  • 问题6:TNT第一阶段如何从N个撒点里保留M个

    • 一阶段使用交叉熵监督打分网络 f f f的输出,使用Huber loss监督偏移量预测网络 v v v的输出;
    • 通过 π \pi π得到候选目标点的概率值,然后按照概率选择最高的M个候选目标点

 


 
创作不易,如有帮助,请 点赞 收藏 支持
 


[参考文章]
[1]. TNT论文翻译和笔记
[2]. TNT学习笔记
[3]. TNT论文翻译
[4]. NMS算法

created by shuaixio, 2024.07.05

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

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

相关文章

机器学习(五) -- 监督学习(8) --神经网络1

系列文章目录及链接 上篇:机器学习(五) -- 无监督学习(2) --降维2 下篇: 前言 tips:标题前有“***”的内容为补充内容,是给好奇心重的宝宝看的,可自行跳过。文章内容被…

【个人笔记】Git

Tiltle: Github 使用 📖 快速使用 音标:[ɡɪthʌb] 0 介绍 Github是一个面向开源与私有软件项目的 托管平台,Git源自其内部的版本库格式.2008年上线,18年被微软收购;有很多知名的开源项目:jQuery、pytho…

如何在 CentOS 6 上安装 Nagios

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 Status: 已弃用 本文涵盖的 CentOS 版本已不再受支持。如果您目前正在运行 CentOS 6 服务器,我们强烈建议升级或迁移到受支持…

STM32H750+CubeIDE+FreeRTOS+ETH(LAN8720A)+LWIP

文章目录 STM32H750CubeIDEFreeRTOSETH(LAN8720A)LWIPCubeIDE配置RCC时钟树SYSETH串口MPUFreeRTOSLWIPGPIO然后就可以点击生成代码了! 代码修改printf重定向补充硬件复位更改补充链接文件然后就可以编译下载ping成功了! socket网络编程 STM32H750CubeIDE…

【计算机网络】浏览器输入访问某网址时,后台流程是什么

在访问网址时,后台的具体流程可以因不同的网站、服务器和应用架构而异。 实际过程中可能还涉及更多的细节和步骤,如缓存处理、重定向、负载均衡等。 此外,不同的网站和应用架构可能会有不同的实现方式和优化策略。 部分特定网站或应用&#x…

云计算第二阶段---DBA Day8-Day9

DBA Day8 该阶段的2天内容,都会和数据库中间件,集群配置有关. 什么是中间件? 通俗来说,就是在正式文件内容从客户端发送或获取请求时,在传播过程中地点中间商,负责管理请求,并对其进行分类。 环境准备: 准备…

AssetsBundleExtractor中文汉化版2.2

感谢-DJ小良汉化 AssetsBundleExtractor工具是一款 人类黎明游戏的assest修改工具 和MOD制作所需要的一款软件 下载地址:https://pan.quark.cn/s/b8104b849fbe

23种设计模式之模板模式

一.什么是模板模式 ‌‌模板模式是一种行为型设计模式,它定义了一个算法的骨架,而将一些步骤留给子类实现。‌这种模式允许子类在不改变算法结构的基础上,重新定义算法的某些步骤。模板模式属于行为型设计模式,主要用于处理那些需…

SpringBoot应用打成ZIP部署包

背景 平常开发SpringBoot应用,打包的时候一般都是按默认的打包方式把所有资源、源码和依赖统一打到一个jar包,这种打包方式方便快捷。最近开发项目遇到一个需求,需要把项目中的配置文件和/bin目录中的启停脚本打到SpringBoot应用jar之外&…

「bug」nvitop ERROR: Failed to initialize curses

nvitop 作为一个优秀个 Nvidia显卡查询库,简单易用且显示信息十分丰富,相比 Nvidia-smi 更方便,简直是每个 开发人员必备的库,安装也十分方便,直接采用 pip install nvitop 即可,调用的时候也是直接在 Term…

Redis:Redis性能影响因素

这里写自定义目录标题 一、CPU对Redis的影响二、磁盘对Redis的影响三、网络对Redis的影响四、Swap对Redis的影响 一、CPU对Redis的影响 二、磁盘对Redis的影响 性能建议: 如果是热点场景,建议大家关闭rdb和aof。在SATA和SAS普通盘上,append…

RocketMQ集群搭建,及RocketMQ-Dashboard部署(前RocketMQ-Console)

集群搭建 RocketMQ不支持单主机搭建主从结构集群,当从节点启动时,即使和主节点设置不同的监听端口,他也要去监听主节点端口,也就是说正常启动的从节点会监听四个端口。原因未知,现象后面会列举出来。 1. 准备JAVA环境…

c++应用网络编程之八SOCKET探究

一、socket 在目前主流的网络通信中,SOCKET编程其实就是网络编程的代名词。在前面反复提到socket,那么socket到底是什么呢?英文的愿意是“插座、槽”的意思。这里虽然不讲解传统的网络协议但不得不简单说明一下。 首先从宏观上看&#xff0c…

超声波模块

HCSR04超声波模块是一种常用的测距模块,它通过检测超声波发射后遇到障碍物所反射的回波,从而测量出与障碍物之间的距离。以下是对HCSR04超声波模块的详细讲解: 一、模块组成与工作原理 组成:HCSR04超声波模块主要由两个压电陶瓷超…

Python一些可能用的到的函数系列131 发送钉钉机器人消息

说明 来自顾同学的助攻 钉钉机器人可以用来发送一些重要的系统消息,例如磁盘将满等等。原本还可以有更强的功能,就是监听群里的消息,然后做出反应,不过这个好像要买企业版,贵的毫无意义。 钉钉发消息有几种模式&#…

Ubuntu18.04 下安装CUDA

安装步骤 1.查看是否安装了cuda # 法1 cat /usr/local/cuda/version.txt # 法2 nvcc --version 2.若没有安装,则查看是否有N卡驱动,若无N卡驱动,则到软件与更新 -> 附加驱动中安装驱动 3.查看N卡驱动支持的cuda版本 nvidia-smi 如下…

VS+C++VTK-VCG三维网格模型鼠标框选拉普拉斯局部平滑

程序示例精选 VSCVTK-VCG三维网格模型鼠标框选拉普拉斯局部平滑 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《VSCVTK-VCG三维网格模型鼠标框选拉普拉斯局部平滑》编写代码,代…

扑捉一只耿鬼(HTML文件)

图例&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>耿鬼</title><style>body {background: #fff;font-family: Comfortaa, sans-serif;}* {box-sizing:…

【Kubernetes】持久卷的动态供给 Dynamic Provisioning

《持久化存储》系列&#xff0c;共包含以下文章&#xff1a; K8s 持久化存储方式持久卷 PV持久卷声明 PVC持久卷的动态供给 Dynamic Provisioning &#x1f60a; 如果您觉得这篇文章有用 ✔️ 的话&#xff0c;请给博主一个一键三连 &#x1f680;&#x1f680;&#x1f680; …

C++实现文件加解密及OllyDbg逆向

一.PE病毒和WannaCry勒索蠕虫 1.PE病毒 什么是PE病毒&#xff1f; PE病毒是以Windows PE程序为载体&#xff0c;能寄生于PE文件或Windows系统的病毒程序。PE病毒数量非常之多&#xff0c;包括早起的CIH病毒&#xff0c;全球第一个可以破坏计算机硬件的病毒&#xff0c;它会破…