尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

让tusimple-benchmark评估代码焕然一新:从Python 2迁移到Python 3的完整步骤

让tusimple-benchmark评估代码焕然一新:从Python 2迁移到Python 3的完整步骤 让tusimple-benchmark评估代码焕然一新从Python 2迁移到Python 3的完整步骤【免费下载链接】tusimple-benchmarkDownload Datasets and Ground Truths: https://github.com/TuSimple/tusimple-benchmark/issues/3项目地址: https://gitcode.com/gh_mirrors/tu/tusimple-benchmarktusimple-benchmark 是 CVPR 2017 TuSimple 自动驾驶竞赛的官方评估代码仓库覆盖车道线检测与速度估计两大经典任务。它的两个核心评估脚本至今仍是 Python 2 语法直接在如今主流的 Python 3 环境中运行会立刻报错。本文面向新手带你用 5 个简单步骤把这套评估代码完整迁移到 Python 3无需深入编程基础也能顺利完成。 为什么要迁移tusimple-benchmark 评估代码还停留在 Python 2tusimple-benchmark 的目录结构非常轻量核心评估逻辑集中在 evaluate/ 目录下evaluate/lane.pyLaneEval类负责车道线检测评估输出Accuracy、FP、FN三项指标evaluate/velocity.pyVeloEval类负责速度估计评估输出EV、EP及近/中/远三个距离段的细分指标。官方数据集包含 3626 个训练视频片段和 2782 个测试片段车道线以折线polyline形式标注详细说明见 doc/lane_detection/readme.md。由于 Python 2 已停止维护如今绝大多数发行版默认只提供 Python 3。直接运行这两个评估脚本会立刻遇到语法错误。好消息是项目依赖极少只需要修复几处语法点即可顺利迁移。 一键克隆仓库最快准备 Python 3 运行环境git clone https://gitcode.com/gh_mirrors/tu/tusimple-benchmark安装评估所需的 3 个依赖pip3 install numpy scikit-learn ujson 小提示evaluate/lane.py 用ujson来加速 JSON 读取如果出现 No module named ujson 的提示安装它即可解决。 报错原因诊断3 类典型的 Python 2 语法问题动手前先认识评估代码里的 3 类 Python 2 写法它们集中出现在文件末尾的入口和打印语句中1. 不带括号的printprint 语句evaluate/lane.py 末尾使用的是 Python 2 风格print LaneEval.bench_one_submit(sys.argv[1], sys.argv[2])在 Python 3 中print是函数必须加括号调用。evaluate/velocity.py 中还有多处同样的语句。2. 已被移除的e.message属性evaluate/lane.py 与 evaluate/velocity.py 相同位置except Exception as e: print e.message sys.exit(e.message)Python 3 中Exception不再有message属性需要改用str(e)获取错误信息。3. 不建议捕获BaseException代码中用except BaseException捕获异常连KeyboardInterrupt等系统级异常也会被拦截。建议顺手改为except Exception属于良好习惯。️ 5 步迁移让评估代码焕然一新第 1 步给 print 加括号把所有print xxx改成print(xxx)例如print(LaneEval.bench_one_submit(sys.argv[1], sys.argv[2]))第 2 步用str(e)替换e.messageexcept Exception as e: print(str(e)) sys.exit(str(e))第 3 步确认依赖已安装确认numpy、scikit-learn、ujson均已就绪安装命令见上文。第 4 步运行车道线检测评估python3 evaluate/lane.py prediction.json ground_truth.json看到包含 Accuracy、FP、FN 的结果 JSON 输出说明迁移成功[{name: Accuracy, value: 0.95, order: desc}, {name: FP, value: 0.02, order: asc}, {name: FN, value: 0.03, order: asc}]第 5 步运行速度估计评估python3 evaluate/velocity.py prediction.json ground_truth.json输出将包含 EV、EP 共 8 项指标。✅ 迁移后验证查看 tusimple-benchmark 评估结果迁移成功后可结合官方示例 notebook 熟悉数据格式与调用方式example/lane_demo.ipynb车道线检测数据格式与评估用法演示example/velocity_demo.ipynb速度估计数据格式与评估用法演示。速度估计任务中评估代码会按目标与相机的距离把车辆分为 Near0–20 m、Medium20–45 m、Far45 m 以上三档分别计算平方误差后取平均得到最终的 EV/EP 总分公式详见 doc/velocity_estimation/readme.md。 常见报错排查清单报错现象原因解决方法SyntaxError: Missing parentheses in call to printprint 语句未加括号按第 1 步修改AttributeError: ... has no attribute message在 Python 3 中使用e.message改用str(e)ModuleNotFoundError: No module named ujson依赖缺失pip3 install ujsonWe do not get the predictions of all the test tasks预测文件缺少部分测试任务补全所有测试片段的预测 总结tusimple-benchmark 的评估代码小而经典修复 print 语法和e.message就完成了迁移工作的九成。按照本文的 5 个步骤操作你就能把车道线检测和速度估计评估工具无缝接入 Python 3 项目为自己的算法迭代提供可靠的评分依据。【免费下载链接】tusimple-benchmarkDownload Datasets and Ground Truths: https://github.com/TuSimple/tusimple-benchmark/issues/3项目地址: https://gitcode.com/gh_mirrors/tu/tusimple-benchmark创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表