news 2026/6/10 1:06:46

【光流模型 (Optical Flow) 】让机器看懂“运动”的魔法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【光流模型 (Optical Flow) 】让机器看懂“运动”的魔法

光流模型 (Optical Flow) 完全指南:让机器看懂“运动”的魔法

📚专为深度学习与计算机视觉初学者打造
🎯目标:用最通俗的语言,拆解“光流”(Optical Flow)这个听起来很高大上,但实际上无处不在的概念。
🎧核心问题:光流到底是什么?为什么它是视频压缩(NVC)和自动驾驶的基石?现在的深度学习模型(如 RAFT, PWC-Net)是怎么算出光流的?


📋 目录

  • 1. 为什么要学习光流?
  • 2. 光流是什么?(核心直觉)
  • 3. 光流长什么样?(可视化)
  • 4. 光流模型的发展史:从数学公式到深度学习
  • 5. 深度学习光流模型的王者:RAFT 与 PWC-Net
  • 6. 光流在 NVC(神经视频编码)中的关键角色
  • 7. 代码视角的“计算光流”
  • 8. 常见误区与问答

1. 为什么要学习光流?

你可能觉得:“我只要能识别出图里有一辆车就行了,为什么要关心它怎么动?”

但对于视频处理来说,“动”“是什么”更重要:

领域光流的作用
视频压缩 (NVC)90% 的视频数据是冗余的,算出光流,就能复用上一帧的像素 。
自动驾驶仅仅识别出前方有车不够,必须通过光流判断它是在靠近还是远离
动作识别区分“挥手”和“举手”,靠的是手臂运动的轨迹(光流)。
视频插帧想要 30fps 变 60fps?需要用光流算出中间那一帧该长什么样。

2. 光流是什么?(核心直觉)

一句话定义:

📌光流就是描述图像中每一个像素点,在时间 到 之间移动了多少距离的向量场。

通俗类比:

想象你在看一场大规模的团体操表演(每个演员代表一个像素)。

  • 时刻 1:所有人站成一个方阵。
  • 时刻 2:方阵整体向右移动了两步。

光流就是给每个演员发一张纸条,上面写着:(dx=+2, dy=0)

  • dx: 水平移动距离
  • dy: 垂直移动距离

如果所有人的纸条都拼起来,就是一张光流图


3. 光流长什么样?(可视化)

光流本身是一堆数字 ,人类看不懂。所以我们通常用颜色来画出它。

标准配色方案(Color Wheel):

  • 颜色(色相):代表方向

  • 红色 🔴 = 向右动

  • 蓝色 🔵 = 向左动

  • 黄色 🟡 = 向下动

  • 深浅(饱和度):代表速度

  • 颜色越鲜艳 = 动得越快

  • 颜色越淡(接近白色) = 动得越慢

举个例子:
如果图中有辆车从左往右飞驰,那么在光流图里,这辆车的区域就是鲜艳的红色


4. 光流模型的发展史:从数学公式到深度学习

1. 传统派 (Lucas-Kanade, 1981)

  • 核心假设亮度恒定假设。即假设物体怎么动,它的颜色是不会变的。
  • 方法:解微分方程。
  • 缺点:一遇到光照变化、阴影、大动作,马上歇菜。

2. 深度学习派 (FlowNet, PWC-Net, RAFT)

  • 核心思想:不再解方程,而是喂给神经网络两张图,让它直接“猜”出光流。
  • 优势
  • 即使物体被遮挡、光照变化,AI 也能根据上下文猜出大概率的运动。

精度极高,是目前 NVC 中“显式运动建模”的首选 。


5. 深度学习光流模型的王者:RAFT 与 PWC-Net

虽然这篇论文主要讲 DCVC-RT,但它提到了目前最强的光流评估工具SEA-RAFT。理解这些模型有助于你理解 NVC 里的“运动估计”模块。

🌊 RAFT (Recurrent All-Pairs Field Transforms)

这是目前的霸主架构。

  • 原理:它像一个画师修图一样,先画一个粗糙的光流,然后通过一个循环神经网络 (GRU) 不断微调(Iterative Refinement)。
  • 特点:精度极高,能处理非常细微的运动。

在 NVC 中的角色:虽然很强,但计算量大。DCVC-RT 论文中用它来评估运动幅度(作为 Ground Truth 工具) 。

🕸️ PWC-Net (Pyramid Warping)

这是 NVC 中最常用的结构原型。

  • 原理:金字塔结构。先在缩略图上算个大概(大运动),再在高清图上算细节(小运动)。
  • 特点:速度和精度的平衡。

6. 光流在 NVC(神经视频编码)中的关键角色

这部分直接联系到你正在阅读的论文。

🎯 传统 NVC 的“显式运动建模” (Explicit Motion Modeling)

在传统的 NVC(如 DCVC-FM)中,光流模型是核心组件 。

流程如下:

  1. 输入F r a m e t − 1 Frame_{t-1}Framet1F r a m e t Frame_tFramet。。

  2. 运动估计 (Motion Estimation):跑一遍光流模型,算出像素位移 。

  3. 运动补偿 (Motion Compensation):根据光流,把 的像素“搬运”过来,生成预测帧 。

⚠️ 为什么 DCVC-RT 要“砍掉”光流?

尽管光流很有用,但在实时任务中它是累赘:

  1. 层数太多:光流网络通常很深(例如 123 层),虽然计算量 (FLOPs) 可能不大,但函数调用开销极大 。

  2. 操作复杂度高:导致了所谓的Operational Complexity瓶颈 。

所以,DCVC-RT 提出了“隐式时域建模”,不再显式计算光流,而是让网络自己去领悟运动 。


7. 代码视角的“计算光流”

如果你想在 PyTorch 中调用一个光流模型(比如 RAFT),流程非常简单:

importtorchimporttorchvision.transforms.functionalasFfromtorchvision.models.optical_flowimportraft_large# 1. 加载预训练的光流模型 (RAFT)model=raft_large(pretrained=True).cuda().eval()# 2. 准备两张相邻的图片 (Batch, 3, H, W)img1=load_image("frame_0.jpg").cuda()img2=load_image("frame_1.jpg").cuda()# 3. 前向传播:计算光流withtorch.no_grad():# output 是 list,最后一个元素是最终光流list_of_flows=model(img1,img2)predicted_flow=list_of_flows[-1]# predicted_flow 的形状是 (Batch, 2, H, W)# Channel 0 是 dx (水平位移)# Channel 1 是 dy (垂直位移)

🎉祝你天天开心,我将更新更多有意思的内容,欢迎关注!

最后更新:2026年1月
作者:Echo

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 15:33:39

Azure VM迁移成本飙升?你必须知道的8个优化技巧

第一章:Azure VM迁移成本飙升的根源剖析企业在将本地虚拟机迁移到 Azure 云平台时,常面临迁移后运营成本远超预期的问题。这一现象的背后,是多种技术与架构因素叠加导致的资源浪费与计费模型误判。未优化的虚拟机规格配置 许多迁移项目直接采…

作者头像 李华
网站建设 2026/6/10 13:34:19

停车场车牌外车辆识别:低成本实现进出车辆类型统计

停车场车牌外车辆识别:低成本实现进出车辆类型统计 引言:从实际需求出发的智能识别方案 在城市智慧交通与社区管理中,停车场出入口的车辆类型统计是一项高频但长期被忽视的需求。传统方案依赖高清摄像头车牌识别系统,成本高、部署…

作者头像 李华
网站建设 2026/6/10 3:18:12

海洋生物识别系统:潜水爱好者的水下百科全书

海洋生物识别系统:潜水爱好者的水下百科全书 引言:当AI潜入深海,万物皆可识 想象一下这样的场景:你正漂浮在蔚蓝的珊瑚礁之间,镜头对准了一只色彩斑斓却叫不出名字的热带鱼。它一闪而过,留下的是照片和满脑…

作者头像 李华
网站建设 2026/6/10 2:01:33

5分钟搭建GIT CHERRY PICK怎么用原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 快速创建一个GIT CHERRY PICK怎么用概念验证原型,展示核心功能和用户体验。点击项目生成按钮,等待项目生成完整后预览效果 在团队协作开发中,我…

作者头像 李华
网站建设 2026/6/10 1:31:07

AI应用商店:即插即用的万物识别功能模块

AI应用商店:即插即用的万物识别功能模块 作为一名小程序开发者,你是否遇到过这样的需求:想要为应用增加AR识别功能,却苦于没有足够的算力和时间从头训练模型?现在,通过AI应用商店提供的即插即用的万物识别功…

作者头像 李华
网站建设 2026/6/10 14:15:59

边缘计算方案:轻量级万物识别模型部署指南

边缘计算方案:轻量级万物识别模型部署指南 在物联网(IoT)场景中,边缘设备往往面临计算资源有限的挑战。如何在资源受限的环境下部署高效的物体识别功能,是许多工程师头疼的问题。本文将介绍一种轻量级万物识别模型的部…

作者头像 李华