在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
相关产品推荐
相关产品推荐

