FlowNetPytorch
FlowNetPytorch 是经典光流估计模型 FlowNet 的 PyTorch 版本复现,由 Dosovitskiy 等人原始论文衍生而来。它主要解决计算机视觉中如何精准计算两帧图像间像素运动矢量(即光流)的难题,广泛应用于视频分析、动作识别及自动驾驶感知等场景。
该项目特别适合人工智能研究人员和深度学习开发者使用。对于希望深入理解光流算法原理、复现经典论文结果,或需要在 PyTorch 生态中进行相关二次开发的团队,FlowNetPytorch 提供了极佳的起点。工具内置了 FlowNetS 和 FlowNetC 两种核心架构及其批归一化变体,并提供了基于"Flying Chairs"数据集的完整训练示例与数据增强方案。
其技术亮点在于不仅还原了原始 Caffe 版本的训练超参数以确保效果对齐,还贴心地提供了预训练权重供用户直接调用或微调。此外,项目集成了 TensorBoard 可视化支持,让开发者能直观监控训练过程中的误差变化与预测效果。虽然部分实验性变体在特定数据集上表现有待优化,但整体代码结构清晰,参考了官方 ImageNet 示例风格,是进入光流领域研究的高效工具。
使用场景
某自动驾驶初创公司的感知算法团队正在开发一套基于单目摄像头的车辆运动估计系统,需要实时计算连续帧之间的像素级光流以判断周围物体的移动速度与方向。
没有 FlowNetPytorch 时
- 团队不得不依赖传统的稠密光流算法(如 Farnebäck),在高分辨率图像上推理速度极慢,无法满足车载嵌入式设备的实时性要求。
- 若尝试自行复现经典的 FlowNet 深度学习模型,需从零搭建复杂的网络结构(如 FlowNetS 或 FlowNetC),极易因细节偏差导致收敛困难。
- 缺乏高质量的预训练权重和标准化的数据增强流程,导致模型在“飞椅”等标准数据集上的验证误差(EPE)居高不下,调优周期长达数周。
- 训练过程缺乏可视化的监控手段,难以直观分析损失曲线与预测效果,排查问题如同“盲人摸象”。
使用 FlowNetPytorch 后
- 直接调用 FlowNetPytorch 中成熟的 FlowNetS 架构,利用其高效的 PyTorch 实现,将推理延迟降低至毫秒级,成功部署于实时系统中。
- 复用官方提供的经过 Caffe 迁移或直接训练的预训练模型(如
flownets_EPE1.951.pth.tar),无需从头训练即可在特定场景下获得接近 SOTA 的精度。 - 内置针对 Flying Chairs 数据集的完整训练脚本与数据增强策略,团队仅需调整少量超参数即可完成微调,将研发周期从数周缩短至数天。
- 集成 TensorBoard 可视化支持,开发人员可实时监控训练过程中的光流预测热力图与误差指标,快速定位并解决过拟合或欠拟合问题。
FlowNetPytorch 通过提供开箱即用的高性能光流模型与完整训练闭环,帮助团队跨越了从理论复现到工程落地的巨大鸿沟。
运行环境要求
- 未说明
- 未明确必需,但代码提及多 GPU 支持未经过测试
- 训练大数据集(如 Flying Chairs)建议使用高性能 GPU
- CUDA 版本需与安装的 PyTorch 版本匹配
未说明(建议配备充足内存以处理 ~64GB 数据集及数据增强线程)

快速开始
FlowNetPytorch
由Dosovitskiy等人提出的FlowNet的PyTorch实现。
本仓库是Alexey Dosovitskiy等人在PyTorch中对FlowNet的实现。请参阅Torch实现此处。
此代码主要受官方imagenet示例的启发。目前尚未针对多GPU进行测试,但应该能够像原始代码一样正常工作。
代码提供了一个使用飞椅数据集并结合数据增强的训练示例。未来可能会添加针对场景流数据集的实现。
当前提供了两种神经网络模型及其批归一化变体(实验性):
- FlowNetS
- FlowNetSBN
- FlowNetC
- FlowNetCBN
预训练模型
感谢Kaixhin,您可以在weights文件夹中下载FlowNetS的预训练版本(来自Caffe,而非PyTorch)。该文件夹还包含从头开始训练的网络。
关于加载网络的说明
直接将下载的网络文件输入脚本即可,无需解压,即使您的桌面环境提示需要解压也无需操作。
关于Caffe中的网络
这些网络期望输入为BGR格式(而PyTorch中为RGB格式)。不过,BGR顺序并不十分关键。
前置条件
以下模块可以通过pip安装:
pytorch >= 1.2
tensorboard-pytorch
tensorboardX >= 1.4
spatial-correlation-sampler>=0.2.1
imageio
argparse
path.py
或者
pip install -r requirements.txt
在飞椅数据集上训练
首先,您需要下载飞椅数据集。该数据集约64GB,建议将其放置在SSD硬盘上。
main.py中提供的默认超参数与Caffe训练脚本中的设置相同。
- FlowNetS的使用示例:
python main.py /path/to/flying_chairs/ -b8 -j8 -a flownets
我们建议在使用数据增强时将线程数j设置得较高,以避免数据加载拖慢训练速度。
如需进一步帮助,可以输入:
python main.py -h
可视化训练过程
使用Tensorboard-pytorch进行日志记录。要可视化结果,只需输入:
tensorboard --logdir=/path/to/checkpoints
训练结果
模型可在weights文件夹中下载。
除非另有说明,模型均采用默认选项进行训练。未使用颜色扭曲技术。
| 架构 | 学习率 | 批量大小 | epoch数量 | 文件名 | 验证EPE |
|---|---|---|---|---|---|
| FlowNetS | 1e-4 | 8 | 2700 | flownets_EPE1.951.pth.tar | 1.951 |
| FlowNetS BN | 1e-3 | 32 | 695 | flownets_bn_EPE2.459.pth.tar | 2.459 |
| FlowNetC | 1e-4 | 8 | 2700 | flownetc_EPE1.766.pth.tar | 1.766 |
注:FlowNetS BN训练时间更长且效果较差,强烈建议不要用于飞椅数据集。
验证样本
预测由FlowNetS完成。
光流到颜色图的完整代码可在此处找到。
| 输入 | 预测 | 真实值 |
|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
对一组图像对进行推理
如果您需要在自己的图像上运行该网络,可以从这里下载预训练网络,并在您的图像对文件夹上运行推理脚本。
您的文件夹需要将所有图像对放在同一位置,文件命名模式为:
{image_name}1.{ext}
{image_name}2.{ext}
python3 run_inference.py /path/to/images/folder /path/to/pretrained
与main.py脚本类似,推理脚本也提供帮助菜单以供选择其他选项。
关于变换函数的说明
为了使输入和目标之间的变换保持一致,我们必须定义同时作用于输入和目标的新变换,因为每次调用随机变换时都会生成一个新的随机变量。
光流变换
为了实现数据增强,我们考虑了输入的旋转和平移,以及它们对目标光流图的影响。以下是实现正确数据增强需要注意的几点:
光流图直接与img1相关联
如果对img1应用变换,必须对光流图应用完全相同的变换,以确保光流的起点一致。
img1和img2之间的平移
假设对img2施加一个平移(tx,ty),则有:
flow[:,:,0] += tx
flow[:,:,1] += ty
缩放
对img1和img2同时应用缩放,缩放参数为alpha,光流也会相应地放大或缩小:
flow *= alpha
对两幅图像同时进行旋转
对两幅图像同时按角度theta旋转时,光流向量(flow[i,j])也会旋转相同的角度:
\for_all i,j flow[i,j] = rotate(flow[i,j], theta)
rotate: x,y,theta -> (x*cos(theta)-x*sin(theta), y*cos(theta), x*sin(theta))
仅对img2进行旋转
假设以图像中心为基准旋转角度theta。
我们必须根据每个光流向量所处的位置来调整其方向。对于每个坐标(i, j),有:
flow[i, j, 0] += (cos(theta) - 1) * (j - w/2 + flow[i, j, 0]) + sin(theta) * (i - h/2 + flow[i, j, 1])
flow[i, j, 1] += -sin(theta) * (j - w/2 + flow[i, j, 0]) + (cos(theta) - 1) * (i - h/2 + flow[i, j, 1])
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。








