Kalman Filter

스터디 회고록: 대민님이 발표를 너무 잘해주셔서 감동받았습니다! 대민님의 발표를 듣고 내가 혼자 공부하며 틀렸던 부분도 바로잡고 대민님의 훌륭한 인사이트를 엿볼 수 있는 소중한 기회였습니다.


대민님이 설명해주신 판서입니다!

  1. 관측값과 예측값의 차이 (Innovation term)

    • Zₜ - H * Xₜ : 여기서 Zₜ는 실제 관측된 값, H * Xₜ는 예측된 관측값입니다. 이 둘의 차이를 Innovation term이라고 부르며, 이는 현재 예측이 얼마나 실제 관측과 차이가 있는지를 나타냅니다.
  2. 잔영 비율 (Kalman Gain, Kₜ)

    • 이 차이에 Kalman Gain (Kₜ) 을 곱하여, 예측값을 얼마나 조정할지를 결정합니다. Kalman Gain은 예측값을 업데이트하는데 있어서 얼마나 신뢰를 줄지 계산한 가중치입니다.
  3. 예측값 업데이트

    • 최종적으로 Xₜ = Xₜ⁻ + Kₜ * (Zₜ - H * Xₜ⁻) : 여기서 Xₜ⁻는 이전에 예측된 값이고, Innovation term에 잔영 비율을 곱한 값을 더해 업데이트된 예측값 Xₜ를 계산합니다.
  4. 닷 H 행렬

    • H 행렬은 시스템을 모델링한 값과 물리량 사이의 차이를 맞추기 위한 변환 행렬입니다. 물리적으로 관측할 수 있는 값과 예측된 상태를 연결해주는 역할을 합니다. 관측 시스템과 상태 시스템 간의 차이를 줄이기 위해 H를 사용합니다.


대민님이 설명해주신 판서입니다!

  1. State prediction (상태 예측)

    • Xₖ⁻는 현재 상태를 예측한 값입니다. 이는 이전 시간에서 예측한 값과 제어 변수 (Uₖ)를 바탕으로 예측됩니다. 이 단계는 미래의 상태를 미리 계산하는 과정입니다.
  2. Measurement process (측정 과정)

    • Zₖ는 실제 관측된 측정값입니다. 이 값은 시스템에서 얻어진 실제 데이터로, 상태 예측과 비교하여 차이를 분석합니다.
  3. A priori & A posteriori update (사전/사후 업데이트)

    • 사전 값인 Xₖ⁻에서 측정값 Zₖ와 비교하여 차이를 이용해 사후 값 Xₖ를 계산합니다. 여기서 Kalman Gain을 활용해 관측값이 예측값을 얼마나 수정해야 할지를 결정하게 됩니다.
  4. Next state prediction (다음 상태 예측)

    • 다음 상태인 Xₖ₊₁⁻를 다시 예측하는 단계로 넘어가며, 이 과정을 반복합니다. 즉, 예측된 값과 실제 측정된 값의 차이를 반영하여 다음 예측값을 개선해 나가는 방식입니다.

      대민님이 설명해주신 판서입니다.
  5. Markov assumption

    • Markov assumption은 현재 상태가 이전의 모든 상태 정보를 포함하고 있다고 가정합니다. 즉, 어떤 시간 t=k에서의 상태는 이전 상태인 t=k-1의 정보만 가지고 있으면 충분하며, 그 이전의 모든 정보는 t=k-1에 압축되어 있다고 볼 수 있습니다. 이는 시스템이 필요한 메모리 상태를 줄여주는 효과를 줍니다.
  6. 트래킹 모델링

    • 트래킹하는 물체가 시간이 지남에 따라 계속 이동하는 경우, 상위 그림에서 설명된 것처럼, t=K에 도달할 때 이전의 모든 상태(t=1부터 t=K-1까지)의 정보를 메모리 상태로 가지게 됩니다.
    • 그러나 마코프 가정을 적용하면, 하단 그림처럼 t=K 상태에 도달할 때 단순히 t=K-1의 정보만 가지고 있어도 충분하다는 결론을 얻게 됩니다. 이로써 연산 및 메모리 사용량을 줄이는 효과를 얻을 수 있습니다.

      대민님의 판서입니다.
  7. 노이즈의 의미

    • 시스템에서 관측되는 값에는 항상 일정량의 불확실성, 즉 노이즈가 존재합니다. 이는 측정 기기의 한계나 외부 요인들로 인해 발생합니다. Kalman 필터는 이러한 노이즈를 모델링하여 상태를 추정합니다.
  8. 노이즈의 범위

    • Kalman 필터에서는 노이즈의 영향을 일정한 범위로 가정하고, 그 범위를 원형이나 타원형의 형태로 추정합니다. 즉, 위치나 속도와 같은 상태 변수에서 노이즈가 있을 경우, 이 노이즈는 정규 분포를 따르며, 노이즈가 존재하는 범위는 Gaussian noise로 나타낼 수 있습니다. 그림에서 나타난 것처럼 노이즈는 각 변수에서 불확실성을 반영하여 원이나 타원의 형태로 가정됩니다.
  9. Gaussian Noise와 AWGN 가정

    • Kalman 필터는 주로 가우시안 노이즈를 가정하며, 이는 평균이 0이고 분산이 일정한 노이즈 모델입니다. 이를 AWGN (Additive White Gaussian Noise) 가정이라 부르기도 하며, 노이즈가 특정 주파수 대역에 상관없이 일정하게 존재하는 경우를 나타냅니다.
  10. 다른 필터와 노이즈 모델링

    • Kalman 필터 외에도 다른 필터들이 존재하며, 각 필터는 다른 방식으로 노이즈를 모델링합니다. 예를 들어, 입자 필터(Particle Filter)는 비선형 시스템에서 복잡한 노이즈 모델링을 적용하는 경우에 사용됩니다.
      여기서 H는 Kalman 필터에서 중요한 역할을 하는 **관측 행렬 (Observation Matrix)**입니다. 이를 더 자세히 설명하면 다음과 같습니다.
  11. H의 역할

    • Kalman 필터는 시스템의 상태를 추정할 때, 상태 변수와 실제 관측값 사이의 관계를 설정해야 합니다. 이때 H 행렬은 시스템 상태관측된 값 사이의 변환을 정의해주는 행렬입니다.
    • 상태 벡터 Xₜ는 위치, 속도 등의 물리적인 상태를 나타내고, 실제로 우리가 측정하는 값 Zₜ는 관측된 물리량입니다. 하지만 이 둘의 단위나 값의 범위가 다를 수 있습니다. 예를 들어, 위치는 미터 단위로 측정되고 속도는 미터/초로 측정되기 때문에 서로 다른 물리적 단위를 가질 수 있습니다.
  12. H의 필요성

    • H 행렬은 이러한 단위 차이를 조정하여 예측된 상태와 관측된 값을 비교할 수 있게 만듭니다. 즉, H는 관측값의 단위를 상태 변수와 일치시키는 역할을 합니다.
    • 예를 들어, 시스템 상태에서 위치는 km 단위로 나타나지만, 센서는 미터 단위로 값을 측정할 수 있습니다. 이 경우, H 행렬을 사용하여 예측된 위치 값을 센서의 단위에 맞춰 변환해야 합니다.
  13. 분포의 평균과 H의 관계

    • H 행렬은 단순히 단위를 맞추는 것뿐만 아니라, 관측된 값의 평균 위치를 예측된 상태로 변환하는 역할도 합니다. 즉, 관측된 값이 특정한 분포를 따를 때, 그 분포의 평균을 Kalman 필터에서 예측된 상태와 비교하여 더 정확한 추정치를 만들 수 있습니다.

      대민님의 판서입니다.

1. System modeling for state space (상태 공간을 위한 시스템 모델링)

2. Sensor/Observer modeling for measurement (관측/센서 모델링)

3. Update process: "prediction vs. measurement" (업데이트 과정: 예측과 측정의 비교)

  1. 센서 관측과 측정 오차

    • Kalman 필터에서 센서는 시스템의 상태를 추적하기 위한 도구로 사용됩니다. 시스템이 수학적으로 모델링되었을 때, 이를 잘 작동하고 있는지 확인하는 것이 바로 센서를 통해 이루어집니다. 즉, 센서가 측정한 값 Zₜ는 상태를 반영한 값으로, 이 값은 **확률 밀도 함수(PDF)**에 따라 수학적으로 복잡해집니다.
    • 센서로부터 얻은 값의 정확성을 평가하려는 목적에서 측정 오차(Measurement Error) 가 등장합니다. 이 측정 오차는 관측된 값이 실제 상태와 얼마나 차이가 나는지를 표현한 것입니다.
  2. 업데이트 과정 (Update Process)

    • Kalman 필터의 핵심 과정은 Innovation term을 기반으로 합니다. Innovation term은 예측된 상태와 관측된 상태 간의 차이로, 이는 필터가 측정된 값을 얼마나 반영할지를 결정하는 요소입니다.
    • 이 Innovation term에 Kalman Gain을 곱하여 예측된 값에 반영하는 방식으로 업데이트를 진행합니다. Kalman Gain은 시스템이 얼마나 빠르게 관측값을 반영할지를 결정하는 가중치로, 업데이트 비율은 노이즈의 분산에 따라 결정됩니다.
  3. 칼만 게인의 수렴

    • 시간이 지나면서 Kalman Gain은 수렴하게 됩니다. 즉, 예측과 측정이 일치해질수록 Kalman Gain의 변화가 줄어들게 되고, 최종적으로 노이즈 분산에 대한 비율로 안정적인 값을 얻게 됩니다.
  4. Particle Filter로의 확장

    • Kalman 필터는 선형 가우시안 시스템을 가정하고 있으나, 비선형 시스템에서 더 복잡한 상황을 다루기 위해 Particle Filter가 사용됩니다. Particle Filter는 Kalman 필터와 달리, 상태의 공분산을 모델링할 때 Innovation term의 공분산을 사용합니다. 즉, 상태 추정을 위한 확률 분포의 변화가 더 복잡한 공분산 형태로 표현됩니다.


대민님의 판서입니다.

1. Kalman 필터의 수식 (Equations)

2. 확장 Kalman 필터 (EKF) 알고리즘

3. Sigma 행렬의 역할

Particle Filter는 베이지안 필터의 일종으로, 많은 입자를 활용하여 상태를 추정하는 확률적인 방법입니다.

  1. 입자 샘플링 (Importance Sampling)

    • 처음에 많은 수의 입자를 무작위로 생성하고, 그 입자들을 통해 상태 공간을 탐색합니다. 예를 들어, 초기값 X₀에서 100개의 입자를 생성한 후, 제어값 Uₜ이 들어왔을 때 상태 Xₜ가 얼마만큼의 값을 가질지를 샘플링합니다.
    • 각 입자는 확률적으로 특정 상태를 나타내고, 각 입자가 현재 관측값에 얼마나 적합한지를 계산하여 가중치를 부여합니다. 이 과정에서 입자들이 실제로 얼마나 의미 있는지를 평가합니다.
  2. 입자 필터링

    • 다음 단계에서는 각 입자의 가중치에 따라 의미 있는 입자들만 남기고 나머지 입자는 제거합니다. 즉, 가중치가 높은 입자들은 남기고, 낮은 입자들은 탈락시킵니다. 이는 상태 추정을 더 정확하게 하기 위해 입자 수를 줄이는 과정입니다.
    • Endfor 루프에서 중요한 점은, 이 과정에서 남은 입자들만 가지고 다음 단계로 넘어간다는 점입니다. 새로운 관측값이 들어올 때마다 샘플링과 필터링 과정을 반복하며, 관련된 입자들만 남깁니다.
  3. 상태 추정

    • 남은 입자들로 다음 상태를 예측하고, 그 상태에서 다시 새로운 입자들을 생성하여 이 과정을 반복합니다. 이를 통해 시간이 지남에 따라 상태 추정을 점차 더 정확하게 해나갑니다.
  4. Stochastic한 과정

    • Particle Filter는 매우 확률적(Stochastic) 인 과정입니다. 즉, 입자들은 랜덤하게 샘플링되고, 그 중 일부가 남겨지며, 남은 입자들이 다음 상태로 이어지게 됩니다. 이 과정은 완전히 결정적이지 않으며, 많은 입자를 활용해 여러 가능성을 추정하는 방식입니다.

Particle Filter는 다수의 입자를 통해 상태를 샘플링하고, 확률적으로 가장 적합한 입자들만 남기면서 상태 추정을 점진적으로 개선해 나가는 방법입니다.

  1. 적자생존 (Survival of the fittest)

    • Particle Filter는 많은 입자를 생성한 후, 그중에서 가장 적합한 입자들만 남기는 방식으로 동작합니다. 즉, 상태 추정에 적합하지 않은 입자들은 제거되고, 적합한 입자들만 다음 단계로 이어지는 방식입니다. 이러한 특성은 자연 선택(Natural Selection), 즉 적합한 개체만이 생존하는 개념과 유사합니다.
  2. 가중치에 따른 입자의 생존

    • 각 입자는 가중치가 부여되고, 이 가중치에 따라 생존 여부가 결정됩니다. 가중치가 높은 입자들은 더 많은 확률로 다음 상태에서 선택되고, 가중치가 낮은 입자들은 제거됩니다.
  3. 유전 알고리즘과의 유사성

    • 이 과정은 유전 알고리즘(Genetic Algorithm) 과 유사한 특성을 보입니다. 유전 알고리즘에서도 적합도가 높은 개체들이 선택되고, 다음 세대에 유전자가 전달되는 방식으로 최적해를 찾아가는 과정이 반복됩니다.
  4. 상태 추정 (Predict step):

    • 그래프에서는 Predict step 4가 나타나 있습니다. 이는 Particle Filter가 상태를 예측하는 과정에서 입자들이 어떻게 분포하고 있는지를 보여줍니다. 여러 입자가 흩어져 있지만, 다음 단계로 넘어갈 때는 가장 적합한 입자들만이 남게 됩니다.
  5. Kalman 필터:

    • 가우시안 분포: Kalman 필터는 상태 변수와 측정 값이 모두 가우시안 분포를 따른다고 가정합니다. 즉, 노이즈 분포인 QR도 가우시안 노이즈로 가정됩니다.
    • 선형 모델: 시스템이 선형일 때 Kalman 필터가 적합합니다. 시스템 모델과 측정 모델이 모두 선형인 경우 상태를 효과적으로 추정할 수 있습니다.
  6. Extended Kalman 필터 (EKF):

    • 비선형 모델: EKF는 시스템이 비선형일 때 사용됩니다. 그러나 EKF는 비선형 시스템을 선형으로 근사하는 방식으로 작동합니다. 즉, 비선형 함수를 선형화하여 필터링을 수행합니다.
    • 가우시안 분포: Kalman 필터와 마찬가지로 EKF도 노이즈가 가우시안 분포를 따른다는 가정을 유지합니다.
  7. Particle 필터:

    • 임의의 모델 및 분포: Particle 필터는 선형, 비선형, 그리고 임의의 분포 모델에도 적용할 수 있습니다. 특정 분포에 의존하지 않기 때문에 매우 유연합니다.
    • 연산량: Particle 필터는 많은 입자를 사용하기 때문에 연산 비용이 큽니다. 따라서 최적의 효율을 낸다고 보기 어렵습니다. 특히 고차원의 상태 공간에서는 연산 부담이 커집니다.
  8. Bayes 필터:

    • 일반적 프레임워크: Bayes 필터는 매우 일반적인 개념으로, 구체적인 구현은 없지만 확률적 추정의 기초가 되는 프레임워크입니다. Kalman 필터와 Particle 필터는 Bayes 필터의 구체적인 구현입니다.
  9. 공분산 업데이트 (Covariance Update):

    • Kalman 필터는 예측관측 간의 불확실성을 고려하여 상태를 추정하는데, 이를 수학적으로 공분산 행렬 P로 표현합니다.
    • 공분산 행렬 Pₜ 은 시스템 상태의 불확실성을 나타내며, 필터의 각 단계마다 이 공분산을 업데이트합니다. 이를 통해 시스템 상태에 대한 불확실성이 어떻게 변화하는지를 추적할 수 있습니다.
  10. Kalman 필터에서 공분산의 역할:

    • Kalman 필터는 예측 단계에서 Pₜ를 업데이트하고, 새로운 관측값이 들어오면 이를 기반으로 공분산을 조정합니다. 이는 관측값과 예측값의 차이, 즉 Innovation term을 반영해 상태를 업데이트할 때 중요한 역할을 합니다.
    • Kalman Gain Kₜ 역시 공분산 행렬에 의해 계산되므로, 공분산의 업데이트는 상태 업데이트의 비율을 결정하는 핵심 요소입니다. Kₜ가 클수록 관측값에 더 많은 가중치가 부여되고, 작을수록 예측값에 더 많은 가중치가 부여됩니다.
  11. 상태의 정확성 향상:

    • Kalman 필터는 각 단계에서 상태의 불확실성을 감소시키기 때문에 시간이 지남에 따라 상태 추정이 점점 더 정확해집니다. 이는 공분산 행렬이 점점 작아지거나 수렴하면서 상태에 대한 확신이 커지는 것을 의미합니다.
  12. 완전 파생 모델:

    • Kalman 필터는 이러한 공분산 업데이트 덕분에 단순한 상태 예측 알고리즘이 아니라 확률적 추정을 가능하게 해주는 고도화된 필터입니다. 이는 단순한 선형 필터링 방식에서 파생된 완전한 형태의 확률 기반 필터라고 볼 수 있습니다.
    • 이 때문에 Kalman 필터는 베이지안 필터의 구체적인 구현이자, 상태 추정의 정확성을 점진적으로 향상시키는 강력한 방법론으로 자리잡고 있습니다.
  13. 상태 (State)와 제어 입력 (Control Input):

    • u(t-1), u(t) 등은 제어 입력으로, 시스템에 들어가는 입력 값을 의미합니다. 이러한 제어 입력은 시스템 상태에 영향을 미치며, 각 시점의 상태는 이전 시점의 제어 입력에 의해 결정됩니다.
    • x(t-1), x(t) 등은 시스템의 상태로, 이 상태는 시스템 내부의 현재 상황을 나타냅니다. 이 상태는 이전 상태 x(t-1)과 제어 입력 u(t-1)에 의해 결정됩니다.
  14. 관측 (Observation):

    • z(t-1), z(t) 등은 관측값을 의미합니다. 관측값은 상태에서 직접적으로 얻어지며, 시스템 상태 x(t)는 관측 모델 h(x(t))을 통해 관측값 z(t)로 변환됩니다. 즉, 관측값은 상태로부터 유도된 값입니다.
  15. 생성 모델 (Generative Model):

    • 관측값 z(t)는 상태 x(t)를 기반으로 생성됩니다. 수식으로는 z(t) = h(x(t))로 표현되며, 이는 상태에서 관측값을 추정하는 방식입니다.
  16. 베이지안 필터 (Bayes Filter):

    • 하단에 있는 베이지안 필터 알고리즘은 상태 추정 과정에서 어떻게 확률적으로 상태를 업데이트하는지를 보여줍니다.
      • 먼저, 이전 상태 x(t-1)에 대한 정보를 바탕으로 현재 상태에 대한 믿음(belief)을 계산합니다.
      • 제어 입력 u(t)과 관측값 z(t)를 고려하여 상태 x(t)에 대한 새로운 확률 분포를 계산합니다.
      • 마지막으로, 이 분포를 사용하여 현재 상태에 대한 믿음을 업데이트하고 반환합니다.
  17. Point Cloud와 3D 객체 포즈 추정:

    • Point Cloud는 3D 객체의 형상과 위치 정보를 포함한 데이터로, 3D 객체를 관측할 때 사용됩니다. 이 포인트 클라우드를 통해 6자유도(6DoF) 객체 포즈를 추정하게 됩니다. 6DoF는 3D 공간에서 위치(3차원)와 회전(3차원)을 의미합니다.
    • Particle Filter를 사용하여, 여러 개의 입자(Particles) 가 다양한 포즈를 가정하고 생성됩니다. 이러한 입자들은 객체가 어느 위치와 자세를 가질 수 있는지를 나타냅니다.
  18. 입자 샘플링과 최적 포즈 찾기:

    • 각 입자는 다른 포즈(자세)를 나타내며, 이 입자들은 다양한 위치에 분포되어 있습니다. Importance Sampling을 통해 각 입자가 얼마나 관측된 Point Cloud와 일치하는지 평가됩니다.
    • 평가된 결과로 입자들 중에서 가장 적합한(가장 Point Cloud와 일치하는) 입자들이 선택됩니다. 선택된 입자들의 포즈가 현재 3D 객체의 최적 포즈를 나타냅니다.
  19. Rendered Particles:

    • 그림에서 보이는 여러 개의 렌더된 입자는 객체의 다양한 포즈를 나타내며, 이를 통해 최적의 포즈를 찾는 과정입니다. 입자들 중에서 가장 적합한 포즈가 남고, 이 최적 포즈가 객체의 현재 위치와 자세를 나타냅니다.
  20. I(t)와 0과 1로 이루어진 매트릭스:

    • 일반적으로 I(t)입력 이미지(input image) 를 의미합니다. 이 이미지는 object detection에 사용되는 데이터로, 2차원 또는 3차원일 수 있습니다. 2차원 이미지는 픽셀 값을 가지며, 이 값들은 일반적으로 0에서 255 사이의 값을 가지거나, 특정 조건에 따라 0과 1로 표현될 수 있습니다.
    • 만약 이 이미지가 바이너리로 표현된 경우, 0과 1은 특정 객체의 존재 여부를 나타낼 수 있습니다. 예를 들어, 1은 객체가 있는 픽셀, 0은 없는 픽셀을 나타낼 수 있습니다.
  21. 3차원 정의와 관측:

    • 3차원 데이터는 일반적으로 2차원 이미지 + 색상 채널(RGB) 또는 깊이 정보 등으로 이루어진 경우가 많습니다. 따라서 I(t)는 3차원 데이터로 볼 수 있고, 여기서 object detection이 이루어질 수 있습니다.
  22. Observation과 Detection:

    • Observation z(t)상태 x(t) 로부터 생성된 값입니다. 즉, 상태는 실제 시스템의 상태(위치, 속도 등)이고, 관측 값은 이 상태를 기반으로 측정된 정보입니다. 여기서 관측값은 2차원 이미지로 표현될 수 있습니다.
    • Detectiong(I(t))로 표현되며, 이는 Object Detector를 통해 이미지 데이터 I(t)에서 객체를 감지하는 과정을 의미합니다.
  23. j에 대한 의문:

    • g(I(t))에서의 j는 여기서 나타나지 않기 때문에, 특별한 역할이 없을 가능성이 높습니다. 만약 j가 특정한 객체 또는 클래스에 대한 인덱스라면, 각각의 객체가 감지될 때마다 해당 객체를 가리키는 인덱스로 j를 사용할 수 있지만, 이 그림에서는 언급되지 않은 것 같습니다.
  24. Tracking ID의 역할:

    • Tracking ID는 객체마다 고유한 ID를 부여함으로써, 각 객체가 여러 프레임에서 식별 가능하도록 합니다. 즉, 동일한 객체가 연속된 프레임에서 추적될 수 있으며, 추적 중 객체가 다른 객체와 혼동되지 않도록 고유 ID로 식별합니다.
    • 예를 들어, 하나의 프레임에서 자동차와 보행자를 동시에 감지하고, 다음 프레임에서도 두 객체를 각각 추적할 수 있습니다. 이때 Tracking ID가 객체 간 혼동을 방지하고 추적을 이어나갈 수 있게 합니다.
  25. Threshold를 통한 제거:

    • Threshold는 객체가 추적에서 제외될 조건을 의미할 수 있습니다. 객체가 감지되지 않거나 신뢰도(Confidence Score)가 특정 기준 이하일 때 추적에서 제외됩니다. 이는 트래킹 시스템에서 노이즈를 제거하거나 불필요한 객체를 배제하는 데 사용됩니다.
    • 예를 들어, 감지된 객체의 신뢰도가 너무 낮다면, 그 객체는 제거되고 더 이상 추적되지 않게 됩니다.
  26. 색상과 의미:

    • 색상은 일반적으로 각 객체의 Tracking ID와 연결되어 있습니다. 즉, 객체마다 고유한 색상으로 시각화되며, 이를 통해 여러 객체를 쉽게 구분할 수 있습니다. 예를 들어, 빨간색은 자동차, 파란색은 보행자 등의 색상으로 표시될 수 있습니다.
    • 각 객체에 부여된 Tracking ID와 색상이 일치하게 설정되며, 이를 통해 프레임 간 동일 객체를 쉽게 시각적으로 추적할 수 있습니다.
  27. 3D 객체 검출 (3D Object Detection):

    • t-1, t, t+1 등 각 시간 단계에서 센서 입력이 들어오고, 이를 통해 3D Object Detector가 동작하여 객체들을 검출합니다. 이 검출된 결과가 Detection으로 표현되며, 각 객체의 위치와 자세(포즈), 그리고 속성들이 포함된 정보를 얻게 됩니다.
    • 이 과정에서 7DOF(7 Degrees of Freedom) 객체의 위치, 크기, 회전 각도 등 모든 정보를 포함한 검출값이 생성됩니다.
  28. Mahalanobis 거리 기반 매칭:

    • 각 시간 단계에서 검출된 객체들과 이전 시간의 예측값을 Mahalanobis 거리를 이용해 매칭합니다. Mahalanobis 거리는 두 분포 간의 차이를 계산할 때 유용한 방법으로, 객체가 같은 객체인지 여부를 판단하는 데 사용됩니다.
    • 즉, 이전 시간 t-1에서 예측된 객체와 현재 시간 t에서 검출된 객체를 비교하여, 같은 객체인지 확인하는 매칭 작업을 진행합니다.
  29. Kalman 필터의 예측과 업데이트:

    • Kalman Filter는 매칭된 결과를 바탕으로 예측값을 계산하고, 이를 업데이트합니다.
    • 먼저, 이전 상태를 기반으로 예측(Predict) 단계를 수행하여 각 객체의 현재 위치를 추정하고, 이후 매칭된 검출값을 이용해 그 추정을 **업데이트(Update)**합니다.
    • 이 과정을 반복함으로써 객체의 상태(위치, 속도, 포즈 등)를 지속적으로 추적합니다.
  30. Tracking ID와 결과:

    • 각 객체는 고유한 Tracking ID를 가지고 추적됩니다. 예를 들어, Tracking ID 1, 2, 3 등 각 객체가 다양한 시간 단계에서 정확하게 추적될 수 있습니다.
    • Tracking Result는 매칭된 결과를 바탕으로 각 시간 단계에서 객체들이 잘 추적되고 있는지, 그 추적 결과를 시각적으로 보여줍니다. 여기서 Tracking ID에 따라 색상이 다르게 표현되며, 각 객체가 어떻게 움직이고 있는지 쉽게 확인할 수 있습니다.
  31. 시스템 매칭과 예측:

    • 이 과정은 시스템 매칭의 핵심입니다. 검출된 객체들과 이전 예측값을 매칭하고, Kalman Filter를 통해 예측된 값들을 업데이트하는 방식으로, 객체의 상태를 추정하는 시스템입니다.
  32. 상태 벡터 (s_t):

    • 상태 벡터는 객체의 위치(Position), 회전(Rotation), 크기(Scale), 선형 속도(Linear Velocity), 각속도(Angular Velocity) 등을 포함하는 변수들로 정의됩니다.
    • 여기서 상태 벡터는 다음과 같습니다:
      st=(x,y,z,a,l,w,h,dx,dy,dz,da)T
      • x, y, z: 객체의 위치 (3차원 공간에서의 위치).
      • a: 객체의 회전 각도 (보통 Z축을 기준으로 회전).
      • l, w, h: 객체의 크기 (길이, 너비, 높이).
      • d_x, d_y, d_z: 객체의 선형 속도 (X, Y, Z 방향).
      • d_a: 객체의 각속도 (회전 속도).
  33. 프로세스 모델 (Process Model):

    • 프로세스 모델은 현재 상태에서 다음 상태로 예측하는 모델로, 일정한 **속도 운동(Constant Velocity Motion)**을 가정한 상태에서 다음 상태를 예측합니다.
    • 각 변수는 예측을 통해 시간이 지나면서 변화하며, 이는 Kalman 필터가 지속적으로 상태를 업데이트하는 방식으로 사용됩니다.
      x^t+1=xt+dx+qx
      • q_x: 잡음 요소를 의미하며, 상태의 불확실성을 반영합니다. 다른 변수도 동일한 방식으로 선형 속도와 잡음을 더하여 다음 상태를 예측합니다.
  34. 도메인마다 다른 프로세스 모델:

    • 실제로 프로세스 모델을 잡기가 어려운 이유는 각 도메인에서 객체의 상태 변화를 정확히 모델링해야 하기 때문입니다. 예를 들어, 자동차를 추적하는 경우와 사람을 추적하는 경우, 물체의 회전이나 속도 변화는 다를 수 있습니다. 이러한 특성에 따라 프로세스 모델은 달라져야 합니다.
    • 여기서는 객체의 위치(Position)회전(Rotation), 크기(Scale) 를 다루며, 속도(d_x, d_y, d_z)와 각속도(d_a)는 각각 선형 속도각속도로 정의됩니다.
  35. Mahalanobis Distance (마할라노비스 거리):

    • 수식에서 z_t관측값을 의미하고, Cμ_t예측값입니다. 이 둘의 차이 z_t - Cμ_tInnovation term(차이값)입니다.
    • 이 차이에 대해 공분산 행렬 S_t를 사용하여 거리를 계산합니다. 즉, 차이값을 공분산 행렬로 스케일링하여 측정하는 것입니다.
    • 수식에서 공분산 행렬의 역행렬을 곱하고, 차이값 벡터에 대한 내적을 계산한 후, 마지막으로 제곱근을 취해 Mahalanobis 거리를 계산합니다.
  36. 공분산과 차이값 (Delta):

    • S_tInnovation covariance로, 예측값과 관측값 사이의 불확실성을 나타냅니다. 이 공분산 행렬을 사용하여 두 값의 차이가 얼마나 신뢰할 수 있는지를 반영합니다.
    • 두 값의 차이에 대해 공분산을 곱해주는 방식으로, 공분산에 따라 차이값의 중요도가 달라집니다. 공분산이 작을수록 차이값이 더 중요한 영향을 미치게 됩니다.
  37. 루트를 씌워서 손실 함수로 사용:

    • 최종적으로 제곱근을 취한 값이 Mahalanobis 거리 m로 계산됩니다. 이 거리를 손실 함수로 사용하여 추적 과정에서 예측값과 관측값 간의 차이를 최소화하려고 합니다.
    • Kalman 필터의 예측값과 실제 감지된 객체 사이의 차이를 줄여가며 객체를 정확하게 추적하는 데 사용됩니다.
  38. Mahalanobis 거리와 아웃라이어 제거:

    • Mahalanobis 거리 m 는 관측된 값과 예측된 값 사이의 거리(차이)를 공분산으로 스케일링한 값입니다.
    • 이 거리가 3표준편차 이상(m > 3 * σ)인 경우, 99.7%의 값이 3σ 이내에 들어오기 때문에, 이를 아웃라이어로 판단하고 제거할 수 있습니다.
    • 즉, 예측된 객체의 위치와 관측된 객체 위치 사이의 차이가 너무 클 경우, 그 값을 신뢰하지 않고 제외합니다. 이는 추적 정확도를 높이기 위한 중요한 검증 과정입니다.
  39. 데이터 연관(Data Association)과 그리디 매칭:

    • Data Association은 예측된 객체 상태와 실제 검출된 객체를 서로 매칭하는 과정입니다. 이 과정에서는 Mahalanobis 거리를 사용하여 두 값이 얼마나 가까운지 평가하고, 가장 가까운 값들을 서로 매칭합니다.
    • Greedy 매칭은 가장 가까운 객체부터 순차적으로 매칭해 나가는 방식입니다. 이 방식은 단순하지만, 성능이 충분히 좋을 수 있습니다.
      • 예를 들어, Kalman Filter Predictions에서 예측된 객체와 Detections에서 실제 감지된 객체 사이의 거리를 계산한 후, 가장 작은 거리부터 매칭하여 추적을 이어갑니다.
      • 이 과정에서, 앞서 언급한 Mahalanobis 거리가 일정 값 이상인 경우 아웃라이어로 판단하고 매칭에서 제외할 수 있습니다.
  40. 검증된 알고리즘의 흐름:

    • Kalman 필터의 예측값과 실제 감지값을 매칭한 후, 잘못된 매칭이나 오류를 최소화하기 위해 거리 기반의 검증 절차를 거치게 됩니다. 이때 Mahalanobis 거리를 기준으로 하여 매칭 여부를 결정하고, 잘못된 매칭(아웃라이어)을 제거합니다.
    • 이 과정이 반복되며 각 객체의 상태가 정확하게 추적됩니다. 특히 객체가 가려지거나 일시적으로 감지되지 않는 경우에도 이전 프레임의 예측값을 기반으로 추적을 이어나갈 수 있게 됩니다.

1. 불확실성의 의미:

2. Kalman 필터에서 불확실성:

3. 불확실성 정보의 활용:

4. Mahalanobis 거리에서의 불확실성:

5. 실생활 예시로 비유:

불확실성(uncertainty) 는 우리가 예측하거나 측정할 때 그 값이 얼마나 신뢰할 수 있는지를 나타내는 중요한 개념입니다. Kalman 필터는 이 불확실성을 수학적으로 계산하여, 예측과 측정값을 조합해 최적의 추적 성능을 유지합니다. 불확실성을 제대로 이해하고 사용하는 것이 추적 알고리즘의 핵심입니다.

1. 우리가 알고 있는 정보:

2. 확률적 필터링의 원리:

3. Stochastic한 방법:

4. Process Noise와 Measurement Noise:

5. 확률적 특성을 이용한 문제 해결:

  1. Differentiable Kalman Filter:

    • 칼만 필터의 미분 가능 버전으로, CNN 등과 결합하여 이미지를 입력으로 받아 상태를 직접 추정합니다.
    • 이미지 시퀀스(비디오)를 관측값으로 사용하며, 각 프레임에서 객체(여기서는 빨간 원)의 위치를 추적합니다.
  2. 가려짐(Occlusion)과 불확실성:

    • 가려짐이 적은 시퀀스에서는 상태를 쉽게 추적할 수 있지만, 가려짐이 많은 시퀀스에서는 객체의 위치를 정확하게 추적하기 어렵습니다.
    • 가려짐이 많아질수록 측정 노이즈(R) 값이 커지며, 이는 이노베이션(측정값과 예측값의 차이) 이 커지고 칼만 게인이 커지면서 추적 상태가 불안정해질 수 있습니다.
    • 이 불안정성은 예측값에 대한 신뢰도가 줄어들어 불확실성이 커지는 상황을 나타냅니다.
  3. Loss 계산 및 학습:

    • Loss 함수는 **MSE(Mean Squared Error)**로 정의되어 있으며, 각 배치와 시퀀스에 대해 추적 성능을 평가합니다.
    • Loss는 fully connected layer를 통해 전달되며, 필터의 파라미터(가중치) 를 업데이트하는 데 사용됩니다. 이 과정에서 필터는 오차를 줄이기 위해 점진적으로 학습하게 됩니다.
    • 즉, 예측값과 실제값의 차이(이노베이션)를 계산하여 필터의 성능을 개선하는 방식입니다.
  4. PDF값과 업데이트:

    • 출력은 PDF(확률 밀도 함수) 형태로 제공되며, 이는 상태(위치, 속도 등)에 대한 평균값공분산을 포함합니다.
    • 추적 과정에서 예측값과 관측값 간의 불확실성을 반영한 PDF 값을 바탕으로, 필터는 학습을 통해 점진적으로 정확도를 높여갑니다.
  5. Negative Log Likelihood (음의 로그 가능도):

    • 수식에서 (\log(|Σ_t|))는 공분산 행렬 Σ결정값(determinant) 을 로그로 변환한 것입니다. 이 값은 상태 추정에서의 불확실성을 나타내며, 추정된 상태가 얼마나 신뢰할 수 있는지를 측정합니다.
    • 로그 가능도는 확률 분포에서 발생한 데이터에 대한 불확실성을 처리할 때 자주 사용됩니다. 음의 로그 가능도를 최소화하는 것이 확률적으로 더 정확한 상태 추정을 의미합니다.
    • 또한, (\log(|Σ_t|)) 를 포함하는 이유는 확률 밀도 함수(pdf) 에서 정규 분포의 특성에 따라 정규화를 위한 항목이 필요하기 때문입니다. 로그 함수는 큰 값을 다룰 때 계산적으로 안정적인 값을 제공합니다.
  6. 공분산의 로그 사용 목적:

    • 공분산 행렬 Σ의 로그값을 포함시키는 것은 시스템의 상태 추정에서 불확실성을 직접적으로 반영하기 위한 방법입니다. Σ가 크면, 불확실성이 높아 상태에 대한 신뢰도가 떨어지며, 이를 로그 값으로 다루어 불확실성을 최적화할 수 있습니다.

1. Prediction (예측 단계):

2. Resampling (재샘플링 단계):

3. Measurement Update (측정값 업데이트 단계):

4. 입자 기반 상태 추정 반복:

1. 동적 모델을 미분해서 구하는 차이점:

2. 입자의 추가와 제거:

핵심 차이점: