资讯动态

深入理解 .flo 光流文件:pytorch-pwc 输出结果的读取与可视化教程

发布时间:2026/8/20 21:10:38 来源:尧图企业网站定制
深入理解 .flo 光流文件pytorch-pwc 输出结果的读取与可视化教程【免费下载链接】pytorch-pwca reimplementation of PWC-Net in PyTorch that matches the official Caffe version项目地址: https://gitcode.com/gh_mirrors/py/pytorch-pwc如果你刚接触计算机视觉或光流估计第一次跑通 pytorch-pwc 这样的深度学习模型时十有八九会被输出文件搞懵一个后缀为.flo、用记事本打开全是乱码的神秘二进制文件。别担心这篇 .flo 光流文件教程将用最通俗的语言带你彻底搞懂它——从光流场的基本概念、.flo文件的底层二进制格式到用 Python 一行代码读取再到把抽象的运动向量变成五彩斑斓的光流可视化图片让你不仅能读懂 pytorch-pwc 的输出还能亲手把光流场画出来。什么是 .flo 光流文件光流场入门光流Optical Flow描述的是相邻两帧图像之间每个像素的运动方向和速度。比如视频里一辆车从左边开到右边光流算法就会告诉计算机画面里每个点往哪个方向移动了多少像素。而.flo文件就是存放这种运动信息的标准文件格式它由 Middlebury 光流评估基准提出是目前学术界和工业界最通用的光流文件格式之一。pytorch-pwc 作为一个用 PyTorch 重新实现 PWC-Net 的光流估计模型它的输出结果就是标准的.flo光流文件。![pytorch-pwc 输出的光流可视化结果](https://raw.gitcode.com/gh_mirrors/py/pytorch-pwc/raw/fc2188815595b9fe3db94c7218c6f051eea0b012/comparison/this - pytorch.png?utm_sourcegitcode_repo_files)上图就是光流文件经过颜色编码可视化后的效果不同的颜色代表不同的运动方向颜色的深浅代表运动速度的快慢。是不是很直观.flo 光流文件格式详解魔数 PIEH 与二进制布局.flo文件看似神秘其实结构非常简单只有三部分数据段字节数内容说明魔数Magic Number4 字节固定为 ASCII 字符PIEH字节值 80, 73, 69, 72用于校验文件合法性宽度 Width4 字节int32 小端整数图像的宽高度 Height4 字节int32 小端整数图像的高光流数据W × H × 8 字节每个像素依次存放 float32 类型的 u水平位移、v垂直位移所以一个完整.flo文件的总大小可以这样计算文件大小 4魔数 4宽 4高 W × H × 8数据字节在 pytorch-pwc 中写出.flo文件的逻辑就在入口脚本run.py的末尾先写入魔数字节PIEH再写入宽高最后把网络的输出按float32逐像素写入代码非常简洁。用 pytorch-pwc 生成 .flo 光流文件三步上手想要亲手生成一个.flo光流文件跟着下面三步走全程不需要写一行深度学习代码。第一步克隆仓库并安装依赖git clone https://link.gitcode.com/i/d207eb594ae9768a0a30ec8fcfc8239b cd pytorch-pwc pip install -r requirements.txt依赖清单在 requirements.txt主要包括torch、numpy、Pillow以及用于代价体加速的cupy。第二步准备一对输入图像光流估计需要两张相邻帧项目自带了一对示例图片上面两张图是同一场景中运动前后的两帧光流算法要估计的就是这两个画面之间每个像素的位移。第三步运行模型输出 .flo 文件python run.py --model default --one ./images/one.png --two ./images/two.png --out ./out.flo命令跑完后你就能在当前目录下看到一个out.flo文件——这就是 pytorch-pwc 输出的光流结果。其中--model可选default或chairs-things两种预训练模型。Python 读取 .flo 光流文件最快最稳的两种方法拿到了.flo文件怎么把它读进 Python 里这里推荐两种方法任选其一即可。方法一用 NumPy 手写解析零依赖推荐新手理解了上面的二进制结构读取代码其实只有短短几行import numpy as np def read_flo(path): with open(path, rb) as f: magic np.fromfile(f, np.float32, count1)[0] assert magic 202021.25, 不是合法的 .flo 光流文件 w int(np.fromfile(f, np.int32, count1)[0]) h int(np.fromfile(f, np.int32, count1)[0]) data np.fromfile(f, np.float32, count2 * w * h) return np.resize(data, (h, w, 2)) # 形状为 (高, 宽, 2)这里有个小知识点魔数PIEH以 float32 小端方式读取时正好等于202021.25这也是业界判断.flo文件是否合法的标准做法。方法二用 OpenCV 内置函数一行搞定如果你已经安装了 OpenCV它内置了现成的读取函数import cv2 flow cv2.readOpticalFlow(out.flo)读取结果flow[..., 0]是水平位移 uflow[..., 1]是垂直位移 v与手写版本完全一致。光流可视化把运动向量变成彩色图片读出来的光流数据只是一堆浮点数肉眼无法直接理解。光流可视化的核心思路是Middlebury 颜色编码把每个像素的 (u, v) 运动向量映射到色相环上——方向对应颜色速度对应明暗。你不需要自己实现这套复杂的映射直接用现成的flow_vis库即可pip install flow_visimport flow_vis import cv2 flow cv2.readOpticalFlow(out.flo) color_map flow_vis.flow_to_color(flow, convert_to_bgrTrue) cv2.imwrite(flow_visualization.png, color_map)几行代码抽象的位移向量就变成了直观的彩色光流图。pytorch-pwc 与官方 Caffe 实现的输出对比在项目comparison目录下也能看到动图版的效果可以看到PyTorch 版本与官方 Caffe 版本的光流可视化结果几乎完全一致这也验证了该实现的可靠性。常见问题与避坑指南Q1读取时报不是合法的 .flo 光流文件检查文件是否被文本编辑器修改过.flo是纯二进制文件任何另存为文本的操作都会破坏文件头。Q2输出的光流尺寸和输入图像不一致pytorch-pwc 为了计算效率会把输入缩放到 64 的倍数如 1024×436在run.py的estimate函数中会自动把结果插值回原始尺寸正常情况下输出与输入尺寸一致。Q3out.flo文件大小如何自查按前面公式验证4 4 4 W×H×8字节。例如 1024×436 的图像文件应为约 3.4 MB偏差过大说明数据异常。Q4想查看光流结果但不想写代码可以把.flo转成 PNG 后用普通图片查看器浏览或者直接用支持光流可视化的工具打开。现在你已经完整掌握了 .flo 光流文件的格式、读取与可视化全流程。下次再拿到任何光流模型不止 pytorch-pwc的输出都可以用同样的方法快速解读让运动信息一目了然【免费下载链接】pytorch-pwca reimplementation of PWC-Net in PyTorch that matches the official Caffe version项目地址: https://gitcode.com/gh_mirrors/py/pytorch-pwc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价