Detection, tracking, recognition의 차이

영상처리 2014. 5. 8. 13:13

댓글로 문의해 주신 내용인데, 답글을 달다가 게시글로 올려도 괜찮겠다 싶어서 따로 글로도 올립니다.


비전, 영상처리에서 나오는 용어로 detection(검출), tracking(추적), recognition(인식)이 있습니다.


가끔 이들 용어들이 혼동스러울 수가 있는데 그 차이는 다음과 같습니다.


먼저 detection과 recognition의 차이를 살펴보면 영상에서 대상을 찾는 것은 detection, 찾은 대상이 무엇인지 식별하는 것은 recognition입니다. 예를 들어, 얼굴인식의 경우 먼저 영상에서 얼굴을 찾은(detection) 후 찾아진 얼굴이 DB에 등록된 얼굴인지를 식별(recognition)하는 과정을 거칩니다. 즉, recognition은 일종의 identification 개념입니다.


다음으로 detection과 tracking의 차이를 살펴보면 detection은 하나의 영상에서 대상을 찾는 것이고 tracking은 비디오 영상에서 특정 대상의 위치 변화를 추적하는 것입니다 (즉, tracking은 일종의 matching 또는 data association 문제임). 비디오는 일련의 영상 프레임으로 구성되고 인접한 영상 프레임들 사이에서는 시공간적 유사성(영상내 대상의 위치, 크기, 형태 등이 유사)이 존재하기 때문에 tracking에서는 특정 대상을 추적하기 위해 이러한 history 정보를 활용합니다. 하지만 detection에서는 아무런 부가정보 없이 현재의 입력 영상만으로 대상을 찾을 수 있어야 하기 때문에 객체모델(object model) 및 검출 알고리즘이 영상에서의 다양한 변화(크기, 형태, 시점 등)를 커버할 수 있어야 합니다. 그래서 보통 detection에는 tracking보다 좀더 강력한 알고리즘이 요구됩니다.


사실 detection(또는 recognition)만 완벽하게 된다면 tracking 문제는 자연스럽게 풀리는 문제입니다. detection, tracking은 어떤 알고리즘 부류를 지칭하는 것이 아니라 우리가 풀어야 될 문제를 지칭하는 용어임을 유의해야 합니다. tracking 문제를 풀기 위해 detection 알고리즘이 사용될 수도 있고 detection 문제를 풀기 위해 tracking 알고리즘 기법들이 활용될 수도 있습니다.


by 다크 프로그래머


  • 밥버러지 2014.05.15 14:56 ADDR 수정/삭제 답글

    좋은 글 항상 감사합니다!^^
    다름이 아니라 헷갈리는 게 있어서 여쭈어 보고 싶은데, Optical Flow와 같은 일종의 tracking 알고리즘이 결국엔 Descriptor를 각 특징점에서 추출 후, Putative Matching (Data Association)을 돌린 것과 동일한 과정에 대응된다고 생각하는 것이 맞을까요??
    혹시 둘 다 Data Association의 동일한 과정이라고 생각할 수 있다면, 제가 문득(?) 든 생각이, 사실 영상에서 어떤 특정 물체가 갑자기 순식간에 사라지는 것보다 보통 등속모델과 같은 연속적인 움직임이 많은데 구태여 연산량이 훨씬 더 많아보이는 매칭 과정 (Descriptor계산 -> 서로 매칭 -> RANSAC으로 아웃라이어 제거) 대신 모두 Tracking으로 데이터 정합과정을 처리해버리면 안되는 건가요?? ^^;; 비전에 대해 무지해서 이런 생각이 드네요...

    • BlogIcon 다크pgmr 2014.05.15 17:06 신고 수정/삭제

      비디오 영상에서의 추적 문제의 경우에는 말씀하신 것처럼 대부분 optical flow 방식으로 매칭점을 찾습니다. 하지만 Scene matching이나 object detection과 같이 DB에 있는 영상과 매칭을 해야 할 경우에는 이미지의 연속성 정보를 이용할 수가 없으니 특징점추출-매칭-ransac 과정을 거쳐는 것이 일반적입니다. 특징점을 뽑아서 매칭할 것인지, optical flow와 같이 local 탐색 방법을 이용할 것인지는 문제 특성에 따라서 적당한 방법을 선택하시면 될 것 같습니다.

    • 밥버러지 2014.05.15 21:20 수정/삭제

      아 제가 비디오 영상의 경우만을 생각해서 위와 같은 생각이 들었네요
      항상 다크프로그래머님의 글을 보면 혼란스러운 개념들이 명쾌해지네요 ㅎㅎ 감사합니다!

  • 곰돌맨^^ 2017.02.03 18:06 ADDR 수정/삭제 답글

    안녕하세요. 간만에 들렀습니다.
    얼굴 검출에 중간중간 빈곳이 발생하여(검출실패) 추적을 넣으려고 하는데, 만일 장면이 바뀌어서 추적이 불가하거나 대상이 화면밖으로 벗어나서 추적 할 필요가 없을 때는 트래커를 어떻게 제거 하나요.
    대부분의 트래커는 그런 경우에도 기어이(?) 살아남아서 화면구석에서 뱅뱅 돌던지 하더라고요.

    즉, 정리하자면 트래커의 종료시점을 적당하게 알아낼 방법이 있는가 하는 겁니다.
    검색을 해봐도 검출/추적을 동시에 사용할 경우에 대한 정책을 적당하게 기술해둔 것으로 못찾겠네요

    • BlogIcon 다크pgmr 2017.02.09 14:53 신고 수정/삭제

      안녕하세요. 어떤 식으로든 매칭 score 같은 것을 계산해서 threshold 이하일 경우에는 추적에 실패한 것으로 판단하는 방법이 있을 것 같습니다..

  • 즐겨라! 2017.07.26 16:59 ADDR 수정/삭제 답글

    안녕하세요 다크님 오래간만에 질문드리네요

    제가 Multi object Tracking을 해보고 있는데요

    3~4명정도 되는 물체를 일정시간 id를 부여해서 추적 하고 있습니다

    KNN으로 동선을 예측하고 가장 가까운걸 hungarian방식으로 매핑하는데

    물체가 겹치거나 뭉쳐서 다시 흩어질경우 기존에 추적하던 id는지워지고 새로운 id가 부여됩니다

    또는 detector가 일정 프레임을 놓칠경우 역시 새로운 id가 부여됩니다

    후자의 경우 사라졌을때 id의 좌표를 기억하고 있다가 새로 나타나는 놈의 좌표와 이전에 사라졌던 좌

    표의 거리가 가장 가까운걸 매칭 해서 완벽히는 아니지만 이전보다는 조금 나아지긴 했습니다

    혹시 tracking쪽에서 이런 문제들을 어떻게 해결(?)하거나 [완벽히는 되지 않을거라고 생각합니다]

    보완 하는 방법이 있을까요? 근본적인 해결이 아니어도 윗단에서 라도 보정할 수 없을까요?

    • BlogIcon 다크pgmr 2017.07.26 18:50 신고 수정/삭제

      multiple target tracking 쪽은 저도 잘 모릅니다. 어쨌든 data association 문제일 텐데요, 전역적 최적화 문제로 풀든 헝가리언 거리로 풀든 결국은 유사도를 어떻게 계산하느냐의 문제가 아닐까요? 공간적 유사도(knn), 모션 유사도(칼만 필터 등), 색상 유사도, 특징 유사도... 등등 다양한 측면을 고려하여 매칭 점수를 계산하면 좋을 것 같습니다.