跳过正文
  1. 技术博客/

260328

·1997 字·4 分钟·
Somnus
作者
Somnus
记录学习、项目、实验和一些被密码保护起来的日常。

一、轻量化部署方向工作总结
#

1、研究动机
#

在前期实验中,基于 RAFT-Stereo 的 refinement head、边缘感知损失以及 partial unfreeze 等改进方法,并未在 Middlebury 数据集上取得稳定、显著的精度提升,说明原始 raftstereo-middlebury 模型本身已经具有较强性能,小规模真实域数据下难以通过小幅结构改动进一步提升整体指标。

因此,后续工作将研究重点由“继续提升精度”转向“在尽量保持精度的前提下降低模型部署开销”,即探索 RAFT-Stereo 在边缘设备上的轻量化部署方案。


2、轻量化研究思路
#

本阶段主要围绕以下两个方向展开:

(1)、官方轻量模型对比:realtime 版本
#

首先,选择官方提供的 raftstereo-realtime.pth 作为轻量化基线模型,与高精度的 raftstereo-middlebury.pth 进行对比。该模型通过减少网络规模、降低迭代次数、共享部分骨干结构等方式提升实时性,目标是在更低资源消耗下完成双目匹配任务。

这一实验的目的在于验证:直接采用官方轻量模型,是否能够在保证可接受精度的前提下实现部署端优化。

(2)、半精度部署:FP16
#

在发现 realtime 模型精度下降较明显后,进一步尝试 FP16 半精度部署方案。该方案不改变原始 RAFT-Stereo 网络结构,也不重新训练模型,而是直接将高精度的 raftstereo-middlebury.pth 转换为半精度权重模型,并在推理与评测阶段采用 FP16 进行部署测试。

这一方案的核心思想是:

  • 保留原始高精度模型结构;
  • 避免重新训练带来的额外成本;
  • 通过降低数值精度减少模型文件大小、显存占用和推理时间;
  • 在尽量保持原始精度的前提下,实现更适合边缘设备的部署形式。

3、实验设置
#

(1)、模型与环境
#

项目设置
高精度基线模型RAFT-Stereo (raftstereo-middlebury.pth)
轻量化对照模型RAFT-Stereo Realtime (raftstereo-realtime.pth)
半精度模型RAFT-Stereo FP16 (raftstereo-middlebury-fp16.pth)
推理设备GPU:NVIDIA 4090
correlationreg

(2)、对比方案
#

本阶段主要设置了三组对比:

  • Baseline FP32:原始 raftstereo-middlebury.pth
  • Realtime:官方轻量化实时模型 raftstereo-realtime.pth
  • FP16:由 raftstereo-middlebury.pth 转换得到的半精度模型 raftstereo-middlebury-fp16.pth

(3)、评价维度
#

为了从部署角度评价模型轻量化效果,本阶段不仅关注匹配精度,还额外统计了以下指标:

  • EPE:平均像素误差
  • D1:离群点比例
  • 模型大小:模型文件存储开销
  • Average Inference Time:平均推理时间
  • FPS:每秒处理帧数
  • Max CUDA Memory Allocated:推理阶段显存占用峰值

4、实验结果
#

(1)、官方 realtime 模型与高精度模型对比
#

模型参数量EPED1
RAFT-Stereo Middlebury11.14M2.375812.0526
RAFT-Stereo Realtime9.89M11.155728.5460

从结果可以看出,官方 realtime 模型参数量相较高精度 Middlebury 模型有所减少,但在 Middlebury2014 数据集上的精度下降非常明显:

  • EPE 由 2.3758 上升到 11.1557
  • D1 由 12.0526 上升到 28.5460

这说明:直接采用官方轻量模型虽然能够降低模型规模,但会带来较大的精度损失,不适合作为当前任务的最终部署方案。


(2)、FP16 半精度部署结果
#

模型EPED1平均推理时间FPS最大显存占用模型大小
Baseline FP322.375812.0526209.80 ms4.77844.91 MB43 MB
FP162.353512.0593173.59 ms5.76662.34 MB22 MB

进一步计算可得:

  • 模型大小:43 MB → 22 MB,下降约 48.8%
  • 显存占用:844.91 MB → 662.34 MB,下降约 21.6%
  • 平均推理时间:209.80 ms → 173.59 ms,缩短约 17.3%
  • FPS:4.77 → 5.76,提升约 20.8%

而在精度方面:

  • EPE:2.3758 → 2.3535,基本保持一致
  • D1:12.0526 → 12.0593,几乎不变

这说明:将高精度 Middlebury 模型直接转换为 FP16 半精度模型后,模型精度基本保持稳定,同时明显降低了模型存储、显存占用和推理时间。

原图baselinefp16

5、结果分析
#

通过本阶段实验,可以得到如下分析:

a、官方 realtime 轻量模型存在明显精度代价
#

虽然 realtime 模型在参数量上比高精度 Middlebury 模型更小,但在 Middlebury2014 数据集上的 EPE 和 D1 均大幅恶化,说明这种结构级轻量化方式是以显著牺牲匹配精度为代价实现的。

b、FP16 半精度部署是一种更稳妥的轻量化方式
#

与直接更换轻量模型不同,FP16 方案不改变原始网络结构,因此保留了高精度模型已经学习到的匹配能力。实验表明,在几乎不损失精度的情况下,FP16 能够显著减小模型文件体积,并降低显存和时间开销。

c、对于当前任务,部署优化比结构替换更合适
#

结合前面对 refinement 系列方法和 realtime 模型的实验可以看出,对于 Middlebury 这种偏高精度需求的双目匹配任务,直接替换为更小的轻量结构往往会带来较大精度损失;相比之下,在保持主模型结构不变的基础上做半精度部署,更适合作为当前阶段的轻量化方案。


6、实验结论
#

通过本次轻量化部署实验,可以得到以下结论:

  • 官方 raftstereo-realtime 模型虽然在参数规模上更小,但在 Middlebury2014 数据集上的精度下降明显,难以满足高精度双目匹配任务需求;
  • 基于 raftstereo-middlebury.pthFP16 半精度部署方案,在不改变原始模型结构、也不重新训练的前提下,实现了模型体积、显存占用和推理时间的有效下降;
  • FP16 模型在 EPE 和 D1 指标上与原始 FP32 模型基本保持一致,说明其能够在较好保留模型性能的同时降低部署开销;
  • 相较于直接采用官方轻量化结构,FP16 半精度部署是一种更适合当前任务场景的轻量化方法
  • 该方法工程实现成本较低,部署路径清晰,具有进一步面向边缘设备应用的可行性。

7、后续规划
#

后续可以继续围绕以下方向展开:

  • 在 FP16 部署基础上,进一步补充不同输入分辨率下的推理速度与显存测试;
  • 尝试在 Jetson 等边缘硬件平台上验证实际部署效果;
  • 进一步探索剪枝、蒸馏等轻量化方法,与 FP16 方案形成对比;
  • 在保持精度的前提下,研究更适合嵌入式或低功耗场景的双目匹配部署策略。