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

论文阅读:Computational Long Exposure Mobile Photography (二)

这篇文章是谷歌发表在 2023 ACM transaction on Graphic 上的一篇文章,介绍如何在手机摄影中实现长曝光的一些拍摄效果。

Abstract

长曝光摄影能拍出令人惊叹的影像,用运动模糊来呈现场景中的移动元素。它通常有两种模式,分别产生前景模糊或背景模糊效果。前景模糊图像通常是用安装在三脚架上的相机拍摄的,描绘的是移动的前景元素(如丝般的流水或光轨)呈现出模糊效果,而背景景观则非常清晰。背景模糊图像(也称为平移摄影)是在相机追踪移动主体时拍摄的,从而得到主体清晰而背景因相对运动而模糊的图像。这两种技术都极具挑战性,并且需要额外的设备和高超的技巧。
本文介绍了一种计算式连拍摄影系统,它运行在手拿式智能手机的相机应用程序中,只需按下快门按钮就能全自动地实现这些效果。我们的方法首先检测并分割出显著主体。我们对多帧画面中的场景运动进行追踪并对齐图像,以保持所需的清晰度并产生具有美感的运动拖影。我们拍摄一组曝光不足的连拍照片,并选择输入帧的子集,无论场景或相机的运动速度如何,这些子集都能产生长度可控的模糊拖影。我们预测帧间运动并合成运动模糊来填补输入帧之间的时间间隙。最后,我们将模糊图像与正常曝光的清晰图像合成,以保证面部或场景中几乎没有移动的区域的清晰度,并生成最终的高分辨率和高动态范围(HDR)照片。我们的系统使原本只有专业人士才能掌握的能力得以普及,让大多数普通摄影爱好者也能使用这种创意风格。

文章太长,分成两部分,第一部分:
Computational Long Exposure Mobile Photography (一)

Frame Selection

我们的系统使用一种帧选择机制,该机制计算运动模糊轨迹长度的估计值,以决定增量帧处理外循环何时应该停止。首先,我们利用对齐求解器计算出的变换将运动特征轨迹转换到基准帧的参考空间,在该空间中它们在空间上与输出图像中相应被跟踪特征的运动模糊轨迹对齐。然后可以计算出每条对齐轨迹的长度,并且我们使用轨迹长度分布的高百分位数作为整体模糊轨迹长度的估计值。最后将这个估计值与一个恒定的目标设置进行比较,以决定是否满足帧选择标准。
我们以图像对角线的百分比来测量轨迹长度,这种度量在很大程度上对图像分辨率或宽高比不敏感。在前景模糊的情况下,我们的标准是第 98 百分位数达到 30% 的目标,为移动最快的物体产生相对较长且平滑的模糊轨迹。在背景模糊的情况下,我们采用第 80 百分位数和 2.8% 的目标,为背景的较大区域产生短模糊轨迹,目的是保持主体清晰度并避免丢失周围场景的背景信息。这些设置是通过对大量输入连拍进行反复试验得出的经验值。

Motion Prediction

一旦输入的低分辨率图像完成对齐,我们就将它们输入到一个运动模糊核预测神经网络中,每次输入一帧对,每次迭代预测一对线条和权重核图。低分辨率核图用于以半分辨率合成运动模糊片段,跨越相应的输入帧。

运动预测模型负责预测沿线段的两个空间积分的参数,这两个空间积分近似于定义在相应时间间隔内通过每个运动模糊输出像素看到的颜色平均的时间积分。我们使用基于 [Brooks 和 Barron 2019] 的模型,并进行了进一步修改,改善了性能和图像质量之间的权衡,使我们能够在移动设备上适应合理的内存和计算预算。

他们的数学公式可预测给定图像对 k 中每个输入帧 i 的权重图 W i W_i Wi W i W_i Wi 有 N = 17 个通道,这些通道用于对沿预测线段的每个相应纹理样本进行加权。我们通过仅预测单个通道来简化该模型,该通道用于对来自每个输入帧的积分结果进行加权。图 2 展示了一个灰度图示例,显示出网络预测在输入图像的各处权重大致相等,除了在遮挡区域,在这些区域权重偏向于两个输入之一的结果。这种简化显著降低了系统复杂性和内存使用量,并使网络能够将更多的能力用于预测线段。

  • 图 6
    在这里插入图片描述
    运动预测模型斜坡函数消融。(a)从单个输入图像对合成的运动模糊移动火车的渲染图。火车前部的运动模糊特写以及相应的输入图像对,上面覆盖了表示预测线段的向量场可视化,分别在(b)和(c)中使用模型 “我们的消融(Ours-abl.)” 和 “我们的(Ours)”,即分别在没有和有斜坡函数的情况下。在图像(b)- 左图中,蓝色箭头表示运动模糊轨迹的整个跨度,红色箭头展示了在模糊轨迹中间最明显的间隙不连续性。

此外,我们消除了由于预测线段端点误差 [Zhang 等人,2016] 所导致的伪影,这些伪影会使线段在跨越的时间间隔末端无法完美衔接,从而在模糊轨迹中间产生非常明显的伪影,如图 6 所示。为避免这一问题,我们通过一个归一化的递减线性斜坡函数 wn 进一步对输入图像纹理样本进行缩放,该函数更倾向于靠近输出像素的样本,并沿着每条预测线段逐渐降低较远样本的权重。对于输入帧对 k,输出像素 (x,y) 的强度为

I k ( x , y ) = ∑ i ∈ k , k + 1 W i ( x , y ) ∑ n = 0 N − 1 w n ∑ n = 0 N − 1 w n I i ( x i n , y i n ) (6) I_{k}(x, y) = \sum_{i\in{k,k+1}} \frac{W_i(x,y)}{\sum_{n=0}^{N-1} w_n} \sum_{n=0}^{N-1} w_n I_{i}(x_{in}, y_{in}) \tag{6} Ik(x,y)=ik,k+1n=0N1wnWi(x,y)n=0N1wnIi(xin,yin)(6)

其中, w n = 1 − n / N w_n = 1 - n/N wn=1n/N, 采样位置定义如下:

x i n = x + ( n N − 1 ) Δ i x ( x , y ) , y i n = y + ( n N − 1 ) Δ i y ( x , y ) x_{in} = x + (\frac{n}{N-1}) \Delta_{i}^{x}(x, y), \quad y_{in} = y + (\frac{n}{N-1}) \Delta_{i}^{y}(x, y) xin=x+(N1n)Δix(x,y),yin=y+(N1n)Δiy(x,y)

我们还对网络架构进行了如下修改。首先,我们将各处的带泄漏修正线性单元(Leaky ReLU)卷积激活函数全部替换为参数化的修正线性单元(ReLU)[He 等人,2015],其中斜率系数是可学习的。接下来,为了避免常见的棋盘格伪影 [Odena 等人,2016],我们将 2 倍重采样层替换为使用平均池化进行下采样,以及双线性上采样后接一个 2×2 卷积。这就得到了在后面分析的标记为 “Ours - large” 的模型。此外,为了改善浮点运算次数、参数数量和感受野之间的平衡,我们进一步将 U - Net 模型拓扑结构减少到仅 3 层,其中每层都使用 1×1 卷积,接着是一个包含 4 个 3×3 卷积层的残差网络(ResNet)块 [He 等人,2016]。这样就得到了一个标记为 “Ours” 的模型,其可学习参数显著减少。
如图 6 所示,斜坡函数 w n w_n wn 对我们所学习的单权重模型有显著益处,因为它使得预测线段在每个输入图像中跨越空间,等同于对整个时间间隔进行积分。当我们的模型在去掉这个项的情况下进行训练,得到 “Ours - abl.” 模型时,网络预测的线段在每一侧大约跨越时间间隔的一半,导致在模糊轨迹中间出现明显的不连续性。更多示例可在后面章节提供的模型比较分析中找到。

Rendering

运动预测网络输出的线条和权重核图由渲染器使用,以合成运动模糊图像。渲染器在 OpenCL 内核中实现,它在移动设备的 GPU 上运行效率非常高,在自适应地对半分辨率输入图像进行纹理采样时利用了硬件纹理单元(纹理样本数量 N 与预测线向量的长度成比例调整)。运动预测和渲染迭代可以每次针对一对输入帧进行,从而产生分段线性运动模糊轨迹。通过使用双线性纹理查找,核图从低分辨率上采样到半分辨率。

样条插值。分段线性运动插值可能会在运动轨迹中引入锯齿状的视觉伪影。为了更平滑地对运动进行插值,我们使用三次埃尔米特样条对帧间推断出的瞬时流 Δ𝑖 进行插值。

通过构建一个与(Δ𝑖⁺ + Δ𝑖⁻)平行的向量𝐻(Δ𝑖⁺, Δ𝑖⁻) 来推断每个像素处的瞬时流量𝛿𝑖,其大小等于 |Δ𝑖⁺| 和 |Δ𝑖⁻| 的调和平均数。上标 “⁺” 和 “⁻” 分别表示时间方向。如果 Δ𝑖⁺和 Δ𝑖⁻与直线路径偏离一个角度𝜃,对于较小的角度偏差(<90°),该向量会进一步按(𝜃/sin𝜃)的比例进行缩放,对于较大的偏差(路径急剧折回的地方),这种调整会逐渐回归到零,以避免出现奇异点。这些校正因子减少了过冲,并使参数样条曲线在中等曲率区域的速度更加稳定。

δ i = H ( Δ i + , Δ i − ) ( θ / sin ⁡ ( θ ) ) × { 1 θ ≤ π / 2 1 − ( 2 θ / π − 1 ) 4 θ > π / 2 (7) \delta_i = H(\Delta_{i}^{+}, \Delta_i^{-})(\theta / \sin(\theta)) \times \left\{\begin{matrix} 1 & \theta \leq \pi/2 \\ 1 - (2\theta/\pi - 1)^{4} & \theta > \pi/2 \end{matrix}\right. \tag{7} δi=H(Δi+,Δi)(θ/sin(θ))×{11(2θ/π1)4θπ/2θ>π/2(7)

对于输出位置(x,y)处图像 I k I_k Ik 在区间 [k…k+1] 上的累积模糊,我们求解一个满足四个约束条件的参数化二维三次样条路径 ρ ( x , y , t ) \rho(x,y,t) ρ(x,y,t)

  • ρ ( x , y , 0 ) = ( x , y ) \rho(x, y, 0) = (x, y) ρ(x,y,0)=(x,y)
  • ρ ( x , y , 1 ) = ( x , y ) + Δ i + ( x , y ) \rho(x, y, 1) = (x, y) + \Delta_i^{+}(x, y) ρ(x,y,1)=(x,y)+Δi+(x,y)
  • ρ ′ ( x , y , 0 ) = δ i ( ρ ( x , y , 0 ) ) \rho'(x, y, 0) = \delta_i(\rho(x, y, 0)) ρ(x,y,0)=δi(ρ(x,y,0))
  • ρ ′ ( x , y , 1 ) = δ i + 1 ( ρ ( x , y , 1 ) ) \rho'(x, y, 1) = \delta_{i+1}(\rho(x, y, 1)) ρ(x,y,1)=δi+1(ρ(x,y,1))

然后,我们通过在参数空间中均匀采样来沿着这条路径累积模糊,并对每个样本的权重进行归一化,以补偿图像空间中的非均匀空间采样,从而确保沿着运动轨迹的空间亮度均匀。在突发序列的端点处,我们通过尝试保持流经这些端点的流的曲率来外推第一帧和最后一帧之外的流。如图 7 所示:如果 “C” 表示突发序列中的最后一帧,那么在 “下一” 帧 D 处的运动轨迹位置是通过将 A 点关于平分 BC 的直线进行反射(构造出 A’)来外推的,然后将 CA’ 的大小限制为 | BC | 以形成 CD。接着,从点 {B,C,D} 推断出 C 处的流。

帧累积, 在实际中,模糊是通过多次遍历进行累积的:每对帧进行两次遍历,其权重在一帧和下一帧之间呈线性下降。对于在帧 I i I_{i} Ii 中位置为 p 的输出像素,通过使用上述的流样条来确定在相对时间 t 下帧 I i I_{i} Ii 中的投影位置 p’,从而累积帧 I i I_{i} Ii I i + 1 I_{i+1} Ii+1 之间的模糊。对于突发序列中的 K 对帧,计算 2K 次这样的遍历(K 次向前,K 次向后)并求和以得到最终的模糊结果。对于每个时间方向:

I ( x , y ) = ∑ i = 0 K − 1 ∑ n = 0 N − 1 I i ( ρ i ( x , y , t n ) ) ∣ ρ i ′ ( x , y , t n ) w n ∣ (8) I(x, y) = \sum_{i=0}^{K-1}\sum_{n=0}^{N-1} I_{i}(\rho_i(x,y,t_n)) \left | \rho_i^{'}(x,y,t_n) w_n \right| \tag{8} I(x,y)=i=0K1n=0N1Ii(ρi(x,y,tn)) ρi(x,y,tn)wn (8)

软伽马色彩空间。非常明亮的高光(例如汽车前灯)往往会使相机传感器饱和,即使在线性色彩空间中进行处理,其模糊的运动轨迹也会变得不真实地暗淡。这种截断是由于输入传感器的有限范围造成的,并且当被截断的输入高光能量分布(即合成地进行运动模糊)在许多输出像素上时,亮度损失会变得明显。

为了解决这个限制,我们在一个有意的非线性色彩空间中处理模糊,在区间 [0…1] 上使用一个可逆的类似伽马的 “软伽马” 函数

这会朝着与线性到 sRGB 色彩转换相反的方向调整亮度曲线,强调高光而不压暗阴影,使得非线性帧能够以可用的保真度存储在 16 位缓冲区中。在创建时,使用 k = 3.0 k=3.0 k=3.0 的值将该函数应用于扭曲下采样的 2 倍缓冲区,并且在累积所有帧的模糊后(通过再次应用 k = 1.0 / 3.0 k=1.0/3.0 k=1.0/3.0)进行反转。

γ s ( v ) = v v + ( 1 − v ) k ≈ v k (9) \gamma_s(v) = \frac{v}{v + (1-v)k} \approx v^{k} \tag{9} γs(v)=v+(1v)kvvk(9)

Compositing

合成的模糊图像以半分辨率计算,以满足设备内存和延迟约束。因此,即使模糊图像中完全对齐的零运动区域,由于以半分辨率计算的结果进行上采样,也会丢失细节。为了保留细节,我们将模糊图像与最大锐度的常规曝光图像进行合成,在我们期望物体清晰的地方。有两类内容需要这种保护:1)静止的场景内容;2)语义上重要且几乎没有移动的主体。

对于第一类,我们生成一个在整个帧对集合中运动非常小的像素的掩码。

  • (1)计算所有帧对中每个像素的最大运动幅度 |𝐹|。
  • (2)计算一个参考运动幅度 |𝐹|_ref,它实际上是 |𝐹| 中所有像素的稳健最大值(即第 99 百分位数)。
  • (3)重新缩放并截断每个像素的运动幅度,使得任何低于𝛼|𝐹|ref 的值被映射为 0,任何高于𝛽|𝐹|ref 的值被映射为 1。我们分别使用 0.16 和 0.32 作为𝛼和𝛽的值。

M f l o w = ∣ F ∣ − α ∣ F ∣ r e f β ∣ F ∣ r e f − α ∣ F ∣ r e f M_{flow} = \frac{|F| - \alpha |F|_{ref}}{\beta |F|_{ref} - \alpha |F|_{ref}} Mflow=βFrefαFrefFαFref

  • (4) 使用清晰图像作为引导应用双边模糊,以确保在 M f l o w M_{flow} Mflow 中的任何边缘对应于真实边缘,并在流场不可靠的地方(例如,像天空这样的均匀或无纹理区域)最小化伪影

第二类更加复杂,它背离了光学运动模糊的物理行为而倾向于美学。例如,如果一个场景中有两个主体以不同的轨迹移动,那么就不可能同时在两者上都清晰对齐。即使是单个主体,由于主体内部的运动(例如,面部表情的变化等)也可能无法对齐。一个主体面部模糊的图像是(不好的)模糊图像。我们的解决方案是重用前面描述的语义面部信号,修改为只包括在对齐的参考帧中具有低平均特征运动的面部。

最终的效果图例:
在这里插入图片描述

相关文章:

论文阅读:Computational Long Exposure Mobile Photography (二)

这篇文章是谷歌发表在 2023 ACM transaction on Graphic 上的一篇文章&#xff0c;介绍如何在手机摄影中实现长曝光的一些拍摄效果。 Abstract 长曝光摄影能拍出令人惊叹的影像&#xff0c;用运动模糊来呈现场景中的移动元素。它通常有两种模式&#xff0c;分别产生前景模糊或…...

基于SSM+小程序的高校寻物平台管理系统(失物1)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 本基于微信小程序的高校寻物平台有管理员&#xff0c;用户以及失主三个角色。 1、管理员功能有个人中心&#xff0c;用户管理&#xff0c;失主管理&#xff0c;寻物启示管理&#xff0c;拾…...

gerrit 搭建遇到的问题

1、启动Apache&#xff0c;端口被占用 : AH00072: make sock: could not bind to address (0S 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。: AH00072: make sock: could not bind to address 0.0.0.:443 a AH00451: no listening sockets available, shutti…...

UBUNTU查看CPU核心数

UBUNTU查看CPU核心数 前言一、使用lscpu命令1. 执行命令2. 查看输出 二、使用/proc/cpuinfo文件1. 查看文件2. 解释输出 三、使用nproc命令1. 执行命令2. 查看输出 四、使用htop或top工具1. 使用htop2. 使用top 五、使用inxi命令1. 执行命令2. 查看输出 六、使用图形界面工具1.…...

【JS】声明提升与块级作用域

我是目录 引言声明提升声明提升的理解函数表达式声明提升总结代码生成与查找变量的过程代码生成词法分析( Tokenizing/Lexing)语法分析( Parsing)代码生成生成代码总结查找变量不同版本中的执行上下文不同版本对执行上下文的定义let/constlet特点const特点let/const声明的变…...

Flink的流、批处理

Flink的数据流处理&#xff0c;是持续流模型&#xff0c;数据不会落地&#xff0c;上游和下游的Task同时启动&#xff0c;等待数据的到达&#xff0c;Flink的批处理还是用的MapReduce计算模型&#xff0c;先处理map端&#xff0c;再执行reduce端。 flink的流处理(STREAMING)&a…...

学习方法该升级了,‌AI时代的弯道超车:【心流学习法】行动与意识合一的巅峰进化

你是否曾感到内心如荒漠般干涸&#xff0c;面对浩瀚的知识海洋&#xff0c;热情逐渐消磨殆尽&#xff1f; 你是否渴望忘却时间的流逝&#xff0c;心无旁骛&#xff0c;与知识展开一场纯粹而深邃的对话&#xff1f; ​在AI时代&#xff0c;智能体处理数据、知识迭代的速率让人…...

【大模型LLM面试合集】大语言模型架构_chatglm系列模型

chatglm系列模型 1.ChatGLM 1.1 背景 主流的预训练框架主要有三种&#xff1a; autoregressive自回归模型&#xff08;AR模型&#xff09;&#xff1a;代表作GPT。本质上是一个left-to-right的语言模型。通常用于生成式任务&#xff0c;在长文本生成方面取得了巨大的成功&a…...

深入理解 Kafka:分布式消息队列的强大力量

一、引言 在现代分布式系统中&#xff0c;消息队列扮演着至关重要的角色&#xff0c;而 Kafka 作为其中的佼佼者&#xff0c;以其高吞吐量、可扩展性和持久性等特点被广泛应用。无论是处理海量的日志数据、实时的用户交互信息&#xff0c;还是复杂的微服务间通信&#xff0c;Ka…...

LabVIEW 离心泵机组故障诊断系统

开发了一套基于LabVIEW图形化编程语言设计的离心泵机组故障诊断系统。系统利用先进的数据采集技术和故障诊断方法&#xff0c;通过远程在线监测与分析&#xff0c;有效提升了离心泵的预测性维护能力&#xff0c;保证了石油化工生产的连续性和安全性。 项目背景及意义 离心泵作…...

GEE土地分类——土地分类的原始remap转化原始的土地分类名称

简介 GEE土地分类——土地分类的原始remap转化原始的土地分类名称 函数 first(image2) Selects the value of the first value for each matched pair of bands in image1 and image2. If either image1 or image2 has only 1 band, then it is used against all the bands…...

一些关于云电脑与虚拟化东西

前言 好久没有更新了&#xff0c;在进行自我校准。 云计算是什么&#xff1f; 云计算是一种模型&#xff0c;它使得用户能够随时随地、方便地、按需访问共享的可配置计算资源池&#xff08;例如&#xff0c;网络、服务器、存储、应用程序和服务&#xff09;&#xff0c;这些资…...

Java实现图片转pdf

该方法可以选择多个图片是否合并为一个pdf输出&#xff0c;也可以选择图片为横向或者纵向输出&#xff0c;也可以选择pdf页面为A3或者A4 第一步 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version…...

【iOS】使用AFNetworking进行网络请求

文章目录 前言AFNetworkingAFNetworking 的核心组件AKNetworking库的常用方法使用AKNetworking进行网络请求的步骤和代码示例 总结 前言 在暑假写天气预报项目时&#xff0c;我们已经接触到网络请求&#xff0c;当时我们是使用URLSession类&#xff0c;即Foundation框架中用于管…...

ThingsBoard规则链节点:RPC Call Reply节点详解

引言 1. RPC Call Reply 节点简介 2. 节点配置 2.1 基本配置示例 3. 使用场景 3.1 设备控制 3.2 状态查询 3.3 命令执行 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 ThingsBoard 是一个开源的物联网平台&#xff0c;提供了设备管理…...

【AI换装整合包及教程】OOTDiffusion:以AI技术引领的时尚换装革命

在当今数字化快速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;技术正以前所未有的速度改变着我们的生活。从智能家居到自动驾驶&#xff0c;从在线教育到虚拟现实&#xff0c;AI的应用范围正在不断扩展。而在时尚领域&#xff0c;一款名为OOTDiffusion&#xff0…...

排序算法详细总结

算法 定义&#xff1a;算法是解决特定问题的明确步骤集合。算法的效率通常用时间复杂度和空间复杂度来衡量。 排序算法 定义&#xff1a;排序算法是计算机科学中用于对元素序列进行排序的一系列算法。排序算法在各种应用中都非常常见&#xff0c;从简单的数据处理到复杂的数…...

uniapp MD5加密

安装&#xff1a; npm install js-md5 -D 引入&#xff1a; import Md5 from js-md5 需求加密一个对象&#xff0c; login_form: {openId: 123456789,phone: ,scenario: 656677,phoneSessionKey: ,openIdSessionKey: ,timeStamp: , }, //10位时间戳&#xff08;秒&#xff09;…...

提升视觉回归测试体验:Cypress 插件推荐

项目介绍 在现代前端开发中&#xff0c;视觉回归测试是确保用户界面在不同版本之间保持一致性的关键步骤。然而&#xff0c;传统的视觉回归测试工具往往复杂且难以使用。为了解决这一问题&#xff0c;我们推荐一款专为 Cypress 设计的插件&#xff1a;Cypress Plugin Visual Re…...

fastbootd模式刷android固件的方法

1. fastbootd追根溯源 Google在Android 10上正式引入了动态分区机制来提升OTA的可扩展性。动态分区使能后&#xff1a;andorid系统可以在开机阶段动态地进行分区创建、分区销毁、分区大小调整等操作&#xff0c;下游厂商只需要规划好super分区的总大小&#xff0c;其内部的各个…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...