다중 카메라 입력으로부터 특징(feature)을 추출하고, 객체 검출 및 (모션/플래닝) 예측을 수행하는 모듈이미지 백본 (img_backbone):
이미지 넥(neck):
헤드 (head): V1SparseDriveHead
객체 검출 및 모션 플래닝 예측을 담당합니다. Depth Branch (옵션):
추가적인 깊이 정보를 예측하는 모듈로, 추출된 특징으로부터 depth map을 예측하고, Grid Mask:
옵션 – Deformable 기능:
extract_feat(img, return_depth, metas):
img: 다중 뷰 이미지 텐서. 보통 shape은metas: 카메라 행렬, focal 등 메타 정보 (옵션)return_depth: 깊이(branch 사용 시 True 설정) forward:
forward_train(img, data):**
img: 위와 같이 다중 뷰 이미지 텐서 data: GT 정보(예: gt_depth, GT trajectory, 기타 메타 데이터 등) forward_test(img, data) / simple_test(img, data):
img: 다중 뷰 이미지 텐서 (또는 list로 들어오는 경우 aug_test를 사용) data: 메타 정보 및 기타 입력 보통 List[dict] 형태로, 각 dict는 예측 결과(예: "img_bbox": bounding boxes 등)를 담습니다.논문(예: DiffusionDrive 논문)에서는 end-to-end 자율주행 시스템에서 센서(카메라) 데이터를 입력받아, 다중 모드 주행 경로 및 객체 검출을 동시에 수행하는 방식을 제안합니다.
V1SparseDrive 클래스는 이 시스템의 “감지기” 부분으로,
V1SparseDrive는 설정파일에서 정의된 대로,
Grid Mask로 증강하며, 통합 헤드(V1SparseDriveHead)를 통해 모션 플래닝은 diffusion 기반 정제 과정을 통해 다중 모드 주행 경로를 예측리스트 형태의 dict로 반환되며, “img_bbox” 또는 플래닝 결과가 포함되어, 자율주행의 후처리에 활용이미지 텐서 (img):
input_shape = (704, 256)로 지정되어 있으므로, 각 이미지가 (704,256) 크기로 리사이즈됨 LoadMultiViewImageFromFiles, ResizeCropFlipImage, NormalizeMultiviewImage 등의 파이프라인 단계를 거쳐 입력됩니다.추가 데이터 (data):
gt_ego_fut_trajs, gt_ego_fut_cmd 등)가 포함forward_test → simple_test 메서드가 호출되어, V1SparseDriveHead)에 전달하고, post_process 메서드를 통해 최종 결과를 생성합니다."img_bbox"라는 키를 가지고 예측된 bounding box 혹은 주행 경로, 모션 플래닝 결과 등을 담습니다.task_config가 플래닝 작업(with_motion_plan=True)을 포함하고 있으므로, 헤드 내부의 모션 플래닝 모듈(V13MotionPlanningHead)에서 주행 궤적(trajectory) 예측 및 플래닝 결과가 생성주행 경로, 예측된 trajectory, 혹은 future motion에 대한 정보를 포함할 수 있습니다.모듈 통합 구성:
Diffusion 기반 모션 플래닝:
diffusion scheduler(DDIMScheduler)를 포함하여, Grid Mask 데이터 증강:
use_grid_mask = True 설정으로, 입력 이미지에 Grid Mask augmentation이 적용되어,모델이 다양한 패턴의 occlusion 상황에 강인하게 학습FP16 혼합 정밀도:
fp16 = dict(loss_scale=32.0)이 있어, 데이터 파이프라인:
NuScenes3D Dataset을 기반으로 하는 ResizeCropFlipImage, NormalizeMultiviewImage, NuScenesSparse4DAdaptor 등이 적용되어, 모델이 필요한 입력 형태로 데이터를 전처리