CAFE

과제게시판

[자율주행 AI 챌린지] CenterPoint-Pillars

작성자한윤지|작성시간25.08.25|조회수71 목록 댓글 5
2025년 자율주행 AI 챌린지평가기준

이번대회에 작년과 다르게 베이스라인 대비 FLOPs(연산)가 2배 초과하는 모델은 탈락이라는 기준이 있다.

베이스라인 모델은 Centerpoint-pillars이므로 CenterPoint-Pillars의 연산량과 추론속도를 알아야 다른 모델과 비교하여 더 좋은 모델을 고를 수 있기 때문에 한번 훈련을 시켜 연산량과 추론속도를 구하기로 해보았다.

일단 평가기준은  Waymo 3D object Detection 지표를 사용한다고 하였다.

 

<waymo 지표 계산 방식>

1. 클래스별 성능 측정

- Vehicle, Pedestrian, Cyclist (3종)

각 클래스마다 mAP과 mAPH를 계산

  • mAP (mean Average Precision)
    : 클래스별로 3D IoU (Intersection over Union) 기준을 만족하는 검출이 얼마나 정확한지 평가
  • mAPH (heading 고려한 mAP)
    : mAP에 방향(orientation) 정확도까지 포함한 지표.
    → 검출된 bounding box가 올바른 위치/크기일 뿐 아니라 차량의 앞뒤 방향(yaw)까지 제대로 예측했는지 평가

- IoU 기준: Vehicle ≥ 0.7, Pedestrian ≥ 0.5, Cyclist ≥ 0.5

 

2. 거리 구간별 성능 분리

0–30m, 30–50m, 50m+ (3개 구간)

→  각 구간마다 mAP, mAPH 계산

3. 난이도 기준

LEVEL 1: 라벨 포인트 ≥ 5

LEVEL 2: 라벨 포인트 ≥ 1 (더 어려움)
→  즉, L2가 더 난이도가 높음 (희미하게 보이는 객체도 포함)

→  모든 지표(mAP, mAPH)는 L1, L2로 나눠서 별도로 보고됨

→  리더보드 최종 점수는 LEVEL 2 기준

 

4. 최종 점수(mAPH @ LEVEL 2)

클래스 3개 × 거리 3개 = 총 9개 성능 지표

각 지표의 mAPH를 평균 내서 최종 점수로 사용

 

최종수식

<waymo 지표와 KITTI지표의 비교>

항목KITTIWaymo Open Dataset
평가 클래스Car, Pedestrian, Cyclist (3종)Vehicle, Pedestrian, Cyclist (3종)
IoU 기준Car: 0.7
Pedestrian: 0.5
Cyclist: 0.5
동일 (Vehicle: 0.7, Pedestrian: 0.5, Cyclist: 0.5)
거리 구간없음 (전체 대상)0–30m, 30–50m, 50m+ (multi-range 평가)
→ KITTI와 다르게 거리 구간별(multi-range) 성능을 별도로 측정
난이도 구분Easy, Moderate, Hard (occlusion, truncation 기준)LEVEL 1 (≥ 5 points), LEVEL 2 (≥ 1 point)
지표 종류AP (Average Precision)mAP (mean Average Precision), mAPH (heading 고려한 mAP)
방향(Heading) 평가없음포함 (mAPH: 박스 방향까지 정확히 맞췄는지 평가)
최종 리더보드 점수AP (Car Moderate, etc.)mAPH (LEVEL 2, 전체 거리 평균)

 

 

 

<훈련>

작년 자율주행 AI 챌린지의 3D 동적객체 데이터셋으로 훈련진행

--> 작년꺼 베이스라인 코드 다운받아 훈련 진행

ETRI 기술체험 플랫폼

 

작년 자율주행 AI 챌린지 가이드라인

활용 메뉴얼 대로 따라하면 훈련 가능함

pre-trained 모델은 따로 사용하지 않았고, CenterPoint-Pillars로 훈련을 진행중임.

epoch 80. 총 훈련시간 1977시간

훈련이 끝난 후 val.py를 돌릴때 --infer_time 옵션을 주면 추론시간 기록해줌

여기에 --infer_time만 붙여주면 됨
val.py에 나와있음

--infer_time 옵션을 주면 eval‎_utils.py에서 추론시간 기록용 AverageMeter 준비한다.

그다음 각 배치마다 time.time()으로 시작/끝을 기록해서 ms 단위로 저장한다.
→ 현재 배치 시간(val)과 평균 시간(avg)을 tqdm 프로그레스바에 표시

결과적으로 eval‎uation 끝나면 평균 추론 시간이 로그에 찍힌다.

 

 

추론시간은 베이스라인코드가 알아서 구해주는데 FLOPs(연산량)은 직접 구하는 코드를 작성해야함.

 

다음검색
현재 게시글 추가 기능 열기
  • 북마크
  • 신고 센터로 신고

댓글

댓글 리스트
  • 작성자Sungryul Lee | 작성시간 25.08.25 1. FLOPs 논문에 나와있는지 조사해볼것
    2. 논문에 나와있는 mAP, FLOPs를 찾아서 점수 계산해볼것
    3. 설마 1977시간을 기다릴건지 어떻게 할건지 답해볼것
    4. 텐서보드로 실시간 모니터링 확인가능한지?
    5. 작년에 최종점수구하는 코드를 소스분석할것
    6. 오늘내로 모두 완료할것
  • 답댓글 작성자한윤지 작성자 본인 여부 작성자 | 작성시간 25.08.26 3. pre-trained모델로 백본 freeze 해 훈련을 돌릴겁니다.
    4. 실시간 모니터링 가능합니다
  • 작성자Sungryul Lee | 작성시간 25.08.26 왜 빨리 안하냐?
  • 답댓글 작성자한윤지 작성자 본인 여부 작성자 | 작성시간 25.08.26 해서 새로운 게시글로 올린겁니다!
  • 답댓글 작성자Sungryul Lee | 작성시간 25.08.26 한윤지 새로운 게시글은 어디있는데?
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼