먼저 nuScenes의 data를 간단하게 설명을 하고 metric을 정리해보겠습니다. detection 뿐 아니라 tracking task등에 대한 metric도 존재하지만 detection metric에 대해서만 정리하겠습니다.
About nuScenes Dataset
nuScenes dataset은 2019년에 공개된 오픈데이터로 detection, tracking, prediction & localization task을 지원하는 multi modal dataset입니다. multi modal dataset이라고 표현한 이유는 단순히 image만 제공하는 것이 아닌 camera로 수집한 image, Lidar로 수집한 point cloud, radar로 수집한 point cloud 등이 제공되기 때문입니다.
dataset안에는 140만 개의 카메라 이미지, 39만 개의 라이다 정보, 140만 개의 레이더 정보, 140만 개의 object bounding box가 포함되어 있습니다.
위 그림과 같이 차량에 부착된 센서들을 통하여 정보를 수집하게 됩니다. (LiDAR 1개, Radar 5개, Camera 6개)
nuScenes에서 detection에서 사용하는 class는 총 10가지 입니다. 차례대로 나열하면 아래와 같습니다.
Car, Bus, Bicycle, Barrier, Construction_vehicle, Motorcycle, Pedestrian, Traffic_cone, Trailer, Truck
annotation을 한 기준을 살펴보면
- 물체는 위치와 모양을 알 수 있도록 적어도 LiDAR나 Radar point 1개가 포함되어야 합니다.
- 물체를 나타내는 직육면체는 매우 tight해야합니다.
- 물체와 끝과 끝은 모두 포함되어야 합니다.
→ 물체가 이어져있다면 끊기지 않고 하나에 전체를 포함해야 합니다. - 보행자가 운반하는 물건도 포함합니다.
- 간혹 움직이지 않는 물체가 움직이는 경우 에러를 방지하기 위해 별도의 bbox를 만듭니다.
- LiDAR나 Radar에 잘 찍히지 않는 물체는 카메라 이미지를 통해 크기를 판별합니다.
- 모든 카메라가 볼 수 있는 물체는 특별한 속성을 부여합니다.
자세한 data의 내용은 nuScenes 논문이나 홈페이지를 가면 확인할 수 있고 데이터를 확인해보고 싶다면 아래의 tutorial을 진행해보시길 바랍니다.
https://www.nuscenes.org/tutorials/nuscenes_tutorial.html
nuscenes_tutorial
We generally track an instance across different frames in a particular scene. However, we do not track them across different scenes. In this example, we have 16 annotated samples for this instance across a particular scene.
www.nuscenes.org
이제 detection이 얼마나 잘 되었는지 평가하는 지표, metric을 정리해보겠습니다.
위에서도 언급했듯이 detection에서 사용되는 annotation의 경우는 10개의 class, 3D bbox, attribute, velocity입니다. nuScenes은 원래 23개의 class가 있지만 detection task의 경우에는 그중 10가지만 사용하고 attribute의 경우 물체가 앉아 있는지 서 있는지를 판단하는 속성을 의미합니다.
Average Precision metric
가장 먼저 알아볼 metric은 detection 성능을 평가하기 위해 주로 쓰이는 Average Precision metric입니다.
nuScenes에서 사용되는 AP(Average Precision)의 경우엔 IOU를 사용하지 않고 2D center와의 거리 d로 threshold를 사용해서 매칭을 해줍니다. 이는 detection을 object size와 object의 방향을 두 가지로 나누어서 평가를 하기 위함입니다. 또한 위 그림에서 보듯 크기가 작은 객체의 경우에는 IOU를 사용하게 되면 작은 에러 때문에 조금만 bbox가 움직여도 IOU가 매우 작아지는 것을 볼 수 있는데 이런 문제를 해결하기 위해서 Center distance를 기준으로 AP를 평가하게 됩니다.
mAP를 구하는 식은 위와 같습니다. 이때 C는 class의 집합을 의미하고 D는 matching threshold로 {0.5, 1, 2, 4} meter(center distance)를 의미합니다.
True Positive metrics
AP와 더불어서 GT box에 매칭 되는 각각의 예측된 bbox를 위한 True Positive metrics(TP metrics)를 사용합니다. 모든 TP metric들은 d = 2m의 center distance를 사용하여 계산하고 TP metric은 모두 양수의 값만을 사용합니다. matching과 scoring은 각 class에서 일어나고 recall level이 10%가 넘는 곳들의 누적 합의 평균값을 사용합니다. 만약 recall level이 10% 미만이라면 TP error는 1로 설정됩니다.
사용되는 TP metric들은 아래와 같습니다.
- Average Translations Error (ATE) : 2D 상에서의 Euclidean center distance (meters)
- Avearge Scale Error (ASE) : orientation과 translation을 align 해 준 뒤의 3D IOU (1 - IOU)
- Average Orientation Error (AOE) : 예측 값과 GT 사이의 가장 작은 yaw angle 차이 값 (radians)
- Average Velocity Error (AVE) : velocity 차이의 L2 norm으로 써 velocity error의 절댓값 (m/s)
- Average Attribute Error (AAE) : 1에서 attribute classification accuracy를 빼준 값 (1 - acc)
위에서 정의한 TP들의 평균값을 구해서 최종적으로 mTP의 값으로 사용하게 됩니다.
mTP를 구하는 식은 아래와 같습니다.
몇몇 class들은 위에서 정의한 TP를 사용하지 않는 경우가 있습니다.
먼저 cone, barrier와 같은 경우 정적인 물체이므로 AVE, velocity에 대한 error를 구하지 않습니다. cone의 경우 head의 위치가 애매하여 방향에 대한 정보가 부족합니다. 따라서 AOE를 구하지 않습니다. cone, barrier의 경우 attribue(sitting or standing)가 없기 때문에 AAE를 구하지 않습니다.
nuScenes detection score
object detection에서 주로 사용되는 IOU를 threshold로 사용하는 mAP의 경우에 nuScenes에서 사용하는 velocity나 attribute와 같은 부분을 평가할 수 없습니다. 게다가 location, size, orientation이 구분되어 있지 않고 한 번에 평가가 진행됩니다.
이러한 문제를 ApolloScape 3D car instance challenge에서는 각각의 error type을 위한 threshold와 recall threshold를 정의하여 구분을 지어주었습니다. 하지만 이러한 평가 방식은 많은 threshold를 사용해 복잡하고 임의적이며 직관적이지 못합니다.
따라서 nuScenes에서는 여러 다른 error type을 하나의 scalar 값인 nuScenes detection score(NDS)로 통합하여 평가를 진행합니다.
NDS를 구하는 식은 위와 같습니다.
앞서 언급했듯 mAP는 mean Average Precision, TP는 5가지 True Positive metrics의 평균의 집합을 의미합니다.
NDS의 절반은 detection 성능에 달려있고 나머지 절반은 detection의 품질(box location, size, orientation, attributes, velocity)에 달려있다고 할 수 있습니다.
mAVE, mAOE, mATE는 1보다 클 수 있고 나머지 metric들은 0과 1 사이의 값들을 가지게 됩니다.