|
|
DeepWiki
: Cognition Labs(Devin 개발팀)가 2025년 공개한 AI 기반의 코드 저장소(GitHub) 분석 및 문서화 플랫폼
https://deepwiki.com/autonomousvision/transfuser
Repositoty Structure
team_code_transfuser/
TransFuser 모델 구현, 훈련 및 평가 코드 포함
team_code_autopilot/
데이터 수집에 사용되는 오토파일럿 에이전트 포함
leaderboard/
평가, CARLA 리더보드 연동(통합) 및 시나리오 정의를 위한 코드
tools/
데이터셋 관리 및 결과 파싱(분석)을 위한 유틸리티 스크립트 포함
setup_carla.sh
CARLA 시뮬레이터 환경 설정
download_data.sh
훈련 데이터셋 다운 (210GB)
environment.yml
conda 환경, 필요한 dependencies 정의
TransFuser Model Code Structure
team_code_transfuser/ 주요 파일
model.py
모델 아키텍처 및 컴포넌트 정의 - LidarCenterNet & GRU 구현
transfuser.py
트랜스포머 기반의 sensor fusion backbone - TransFuserBackbone 구현
submission_agent.py
평가 및 리더보드 제출에 사용되는 에이전트 구현
train.py
훈련(학습) 로직 및 설정을 포함
team_code_transfuser/transfuser.py의 TransfuserBackbone 블럭도
transfuser.py 7-211 line에 해당
transfuser.py의 214-281 line까지는 segmentation & depth map 예측을 위한 decoder로 구성됨
ImageCNN - RGB 이미지 인코딩 역할, pre-trained model
LidarEncoder - BEV input인 LiDAR(라이다) 포인트 클라우드 데이터를 처리
team_code_transfuser/model.py - LidarCenterNet 블럭도
데이터를 여러 갈래로 쪼개어 객체의 중심점, 크기, 방향, 속도를 각각 따로 예측한 다음,
중심점을 기준으로 그 정보들을 모아 하나의 3D 박스를 그려내는 과정 구현
https://github.com/autonomousvision/transfuser/blob/3852e65e/team_code_transfuser/model.py#L33-L514
team_code_transfuser/model.py - GRU(Waypoint Prediction) 블럭도
https://github.com/autonomousvision/transfuser/blob/3852e65e/team_code_transfuser/model.py#L611-L646
mmcv, mmdet 관련 라이브러리들이 torch로 변경 가능한지
| from mmcv.cnn import bias_init_with_prob, normal_init from mmcv.ops import batched_nms from mmcv.runner import force_fp32 from mmdet.core import multi_apply from mmdet.models import HEADS, build_loss from mmdet.models.utils import gaussian_radius, gen_gaussian_target from mmdet.models.utils.gaussian_target import (get_local_maximum, get_topk_from_heatmap, transpose_and_gather_feat) from mmdet.models.dense_heads.base_dense_head import BaseDenseHead from mmdet.models.dense_heads.dense_test_mixins import BBoxTestMixin |
1. bias_init_with_prob
: 초기 bias 설정
내부 구현이 단순 함수라서 그냥 이걸로 대체할 예정
2. normal_init
마찬가지로 내부 구현이 torch.nn으로 되어있어 이 구조 그대로 사용할 예정
3. batched_nms
: class 별로 NMS를 따로 적용하는 방식
torchvision에 같은 기능을 하는 함수가 있어서 이걸로 대체 예정
4. force_fp32
: 학습 시에 특정 함수를 강제로 FP32로 실행하는 함수임
-> 현재는 추론만 진행할 거라서 내부 함수값들 모두 return시키는 방식으로 대체
5. multi_apply
: 리스트의 각 요소에 함수를 적용하고 결과를 변환해주는 함수
내부 구현이 map이랑 zip 사용하여 구현한 거라 그대로 사용할 예정
6. HEADS, build_loss
@HEADS.register_module()
HEADS는 config 파일에서 문자열로 클래스를 동적 생성하기 위함
https://mmcv.readthedocs.io/en/master/understand_mmcv/registry.html
https://better-tomorrow.tistory.com/entry/MMCV-%EC%9D%98-Registry
TransFuser는 자기 자신인 LidarCenterNetHead 클래스명을 직접 호출함..
그래서 그냥 데코레이터 주석처리하면 됨 (사용을 실제로 안하는 중임)
build_loss는 학습할 때 사용되는 함수임
현재는 추론만 돌릴 거라 model.py에서 모두 None으로 대체함
7. Gaussian 관련 함수들
numpy/torch로 동일하게 구현할 예정
8. BaseDenseHead, BBoxTestMixin
https://github.com/open-mmlab/mmdetection/blob/main/mmdet/models/dense_heads/base_dense_head.py
BaseDenseHead가 상속 받은게 BaseModel
내부 구현이 torch의 nn.Module을 상속받음
실제로 TransFuser model.py에서 사용하는 부분은
super(LidarCenterNetHead, self).__init__(init_cfg) 인데,
그냥 nn.Module로 변경하고 super().__init__()만 정상호출 되면
추론에는 문제가 없음
BBoxTestMixin은 simple_test_bboxes, aug_test_bboxes 등의 함수를 구현해놓은 class인데
https://github.com/open-mmlab/mmdetection/blob/main/mmdet/models/dense_heads/dense_test_mixins.py
실제로 TransFuser의 model.py 내에서 저 메서드를 한 번도 호출하지 않음
그래서 그냥 class BBoxTestMixin이라는 빈 클래스에 내부 pass만 넣어서 그냥 형식만 유지
https://github.com/mxnseo/TransFuser
