You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Google Colab中用argparse运行PWC-Net提取光流遇必填参数错误求助

问题解决:Colab中PWC-Net光流提取的参数缺失错误

错误原因

你使用ArgumentParser来获取参数,但Colab是交互式笔记本环境,不会通过命令行传入img1、img2等必填参数,因此parse_args()会抛出参数缺失错误并终止程序。

修正后的完整代码

# 挂载Google Drive,确保能访问存储的图像文件
from google.colab import drive
drive.mount('/content/drive')

# 安装依赖库
!pip install -q mmcv-full
!pip install -q mmflow

import os.path as osp
import mmcv
from mmflow.apis import inference_model, init_model
from mmflow.datasets import visualize_flow, write_flow

# 手动定义参数,替代命令行参数解析
args = type('Args', (), {
    'img1': '/content/drive/My Drive/resizedImages_river/frame1.jpg',
    'img2': '/content/drive/My Drive/resizedImages_river/frame2.jpg',
    'config': 'configs/pwcnet/pwcnet_8x1_slong_flyingchairs_384x448.py',
    # 使用公开预训练模型地址,init_model会自动下载权重
    'checkpoint': 'https://download.openmmlab.com/mmflow/pwcnet/pwcnet_8x1_sfine_flyingthings3d_subset_384x768.pth',
    'flow_map': '/content/drive/My Drive/flow_results',  # 结果保存目录
    'out_prefix': 'river_flow',
    'device': 'cuda:0',
    'valid': None  # 无valid文件时设为None
})()

def main(args):
    # 从配置和权重构建模型
    model = init_model(args.config, args.checkpoint, device=args.device)
    
    # 执行光流推理
    result = inference_model(model, args.img1, args.img2, valids=args.valid)
    
    # 创建结果保存目录
    mmcv.mkdir_or_exist(args.flow_map)
    
    # 保存可视化光流图
    visualize_flow(result, osp.join(args.flow_map, f'{args.out_prefix}.jpg'))
    # 保存光流数据文件(可选)
    write_flow(result, osp.join(args.flow_map, f'{args.out_prefix}.flo'))

# 运行主逻辑
main(args)

关键修改说明

  • 移除命令行参数解析:在Colab环境中直接用自定义对象传递参数,避免依赖命令行输入。
  • 添加Drive挂载:确保代码能访问存储在Drive中的图像文件,这是Colab环境的必要步骤。
  • 修正权重路径:使用官方预训练模型的公开地址,init_model会自动下载权重到缓存,无需手动处理本地文件。
  • 修复代码缩进:原代码中main函数内的代码缩进错误,修正后保证逻辑正常执行。
  • 移除重复推理调用:原代码两次执行inference_model,保留一次即可。

内容的提问来源于stack exchange,提问作者hosein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 14:36:03