86 lines
2.5 KiB
Python
86 lines
2.5 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
"""
|
|||
|
|
测试Phase 4B完整配置是否能正确构建模型
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
import os
|
|||
|
|
import sys
|
|||
|
|
sys.path.insert(0, '/workspace/bevfusion')
|
|||
|
|
|
|||
|
|
def test_phase4b_config():
|
|||
|
|
"""测试Phase 4B配置"""
|
|||
|
|
try:
|
|||
|
|
print("🔧 测试Phase 4B完整配置...")
|
|||
|
|
|
|||
|
|
# 加载配置
|
|||
|
|
from mmcv import Config
|
|||
|
|
config_file = 'configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/multitask_BEV2X_phase4b_rmtppad_segmentation.yaml'
|
|||
|
|
cfg = Config.fromfile(config_file)
|
|||
|
|
|
|||
|
|
print("✅ 配置文件加载成功")
|
|||
|
|
|
|||
|
|
# 简化配置用于测试
|
|||
|
|
cfg.data.samples_per_gpu = 1
|
|||
|
|
cfg.data.workers_per_gpu = 0
|
|||
|
|
|
|||
|
|
# 设置训练模式
|
|||
|
|
cfg.model.train_cfg = {
|
|||
|
|
'object': {
|
|||
|
|
'grid_size': [1440, 1440, 41]
|
|||
|
|
},
|
|||
|
|
'map': {}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
print("🔧 检查模型组件...")
|
|||
|
|
|
|||
|
|
# 检查所有必要的组件
|
|||
|
|
model_config = cfg.model
|
|||
|
|
|
|||
|
|
required_components = [
|
|||
|
|
'encoders.camera.backbone',
|
|||
|
|
'encoders.camera.neck',
|
|||
|
|
'encoders.camera.vtransform',
|
|||
|
|
'encoders.lidar.backbone',
|
|||
|
|
'fuser',
|
|||
|
|
'decoder.backbone',
|
|||
|
|
'decoder.neck',
|
|||
|
|
'heads.object',
|
|||
|
|
'heads.map'
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
for component in required_components:
|
|||
|
|
keys = component.split('.')
|
|||
|
|
value = model_config
|
|||
|
|
try:
|
|||
|
|
for key in keys:
|
|||
|
|
value = value[key]
|
|||
|
|
print(f"✅ {component}: {value.get('type', 'configured')}")
|
|||
|
|
except (KeyError, TypeError):
|
|||
|
|
print(f"❌ 缺少组件: {component}")
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
print("🎉 Phase 4B配置验证通过!")
|
|||
|
|
print("\n配置摘要:")
|
|||
|
|
print(f"- Camera: SwinTransformer + GeneralizedLSSFPN + DepthLSSTransform")
|
|||
|
|
print(f"- LiDAR: SparseEncoder")
|
|||
|
|
print(f"- Fusion: ConvFuser")
|
|||
|
|
print(f"- Decoder: SECOND + SECONDFPN")
|
|||
|
|
print(f"- Heads: TransFusionHead + EnhancedTransformerSegmentationHead")
|
|||
|
|
print(f"- 分割类别数: {len(cfg.map_classes)}")
|
|||
|
|
print(f"- 检测类别数: {len(cfg.object_classes)}")
|
|||
|
|
|
|||
|
|
return True
|
|||
|
|
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"❌ 配置测试失败: {e}")
|
|||
|
|
import traceback
|
|||
|
|
traceback.print_exc()
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
success = test_phase4b_config()
|
|||
|
|
if success:
|
|||
|
|
print("\n🚀 Phase 4B配置准备就绪,可以开始训练!")
|
|||
|
|
else:
|
|||
|
|
print("\n❌ 配置存在问题,需要修复")
|