69 lines
2.1 KiB
Python
69 lines
2.1 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
"""
|
|||
|
|
快速评估Phase 4B RMT-PPAD模型并显示指标
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
import os
|
|||
|
|
import sys
|
|||
|
|
import subprocess
|
|||
|
|
|
|||
|
|
def run_evaluation():
|
|||
|
|
"""运行快速评估并显示结果"""
|
|||
|
|
os.chdir('/workspace/bevfusion')
|
|||
|
|
|
|||
|
|
# 评估命令
|
|||
|
|
cmd = [
|
|||
|
|
'/opt/conda/bin/python', 'tools/test.py',
|
|||
|
|
'configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/multitask_BEV2X_phase4b_rmtppad_segmentation.yaml',
|
|||
|
|
'runs/run-4c8ec7e5-fabdc997/epoch_1.pth',
|
|||
|
|
'--eval', 'bbox', 'map',
|
|||
|
|
'--cfg-options', 'data.val.samples_per_gpu=1', 'data.workers_per_gpu=0', 'data.val.load_interval=10'
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
print("🚀 开始Phase 4B RMT-PPAD快速评估...")
|
|||
|
|
print("📊 评估配置:")
|
|||
|
|
print(" - 数据集: NuScenes Val (10x降采样)")
|
|||
|
|
print(" - 样本数: 602个")
|
|||
|
|
print(" - 指标: 3D检测 + BEV分割")
|
|||
|
|
print()
|
|||
|
|
|
|||
|
|
try:
|
|||
|
|
# 运行评估
|
|||
|
|
result = subprocess.run(cmd, capture_output=True, text=True, timeout=1800) # 30分钟超时
|
|||
|
|
|
|||
|
|
print("📋 评估输出:")
|
|||
|
|
print("="*80)
|
|||
|
|
|
|||
|
|
# 解析输出,查找评估结果
|
|||
|
|
lines = result.stdout.split('\n')
|
|||
|
|
metrics_found = False
|
|||
|
|
|
|||
|
|
for line in lines:
|
|||
|
|
# 查找评估结果行
|
|||
|
|
if any(keyword in line.lower() for keyword in ['ap', 'iou', 'nds', 'map', 'evaluation results']):
|
|||
|
|
print(line)
|
|||
|
|
metrics_found = True
|
|||
|
|
|
|||
|
|
if not metrics_found:
|
|||
|
|
print("⚠️ 未找到评估指标,显示最后50行输出:")
|
|||
|
|
print("\n".join(lines[-50:]))
|
|||
|
|
|
|||
|
|
if result.stderr:
|
|||
|
|
print("\n❌ 错误信息:")
|
|||
|
|
print(result.stderr[-1000:]) # 只显示最后1000字符
|
|||
|
|
|
|||
|
|
print("="*80)
|
|||
|
|
|
|||
|
|
if result.returncode == 0:
|
|||
|
|
print("✅ 评估完成!")
|
|||
|
|
else:
|
|||
|
|
print(f"❌ 评估失败 (返回码: {result.returncode})")
|
|||
|
|
|
|||
|
|
except subprocess.TimeoutExpired:
|
|||
|
|
print("⏰ 评估超时 (30分钟)")
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"❌ 评估执行失败: {e}")
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
run_evaluation()
|