보행자 계산 알고리즘


12

현재 보행자 카운터 프로젝트를 개발 중입니다 (Linux에서 OpenCV + QT 사용). 접근 방식에 대한 나의 아이디어는 다음과 같습니다.

  1. 프레임 캡처
  2. 백그라운드 빼기
  3. 맑은 소음 (침식, 팽창)
  4. 얼룩 찾기 (cvBlobslib)-전경 객체
  5. 각 Blob에 대해 ROI를 설정하고이 Blob에서 보행자 (DetectMultiScale이있는 LBP)를 검색하십시오 (성능 향상).
  6. 찾은 보행자마다 중첩 된 상체 검색 (확실하지 않음)을 수행하십시오 (신뢰성 향상)
  7. 연속 프레임에서 동일한 보행자가 발견되면 (3-4 프레임)-캠 시프트 및 추적에 해당 영역 추가-보행자로 표시
  8. 다음 프레임의 얼룩 감지에서 캠 시프트 추적 영역 제외
  9. 보행자가 줄 단위를 넘으면

올바른 길을 가고 있는지 확인하고 싶습니다. 내 접근 방식을 개선하는 방법에 대한 제안이 있습니까? 누군가 비슷한 작업을 한 경우이 문제에 대한 유용한 팁, 리소스 (및 비판)에 감사드립니다.


5
질문을 바꾸고 OpenCV 부품을 제외하고 싶을 수도 있습니다. 실제 질문 (보행자 카운팅 및 추적 알고리즘)과 같은 문구로 표현하십시오.
Geerten

2
귀하의 접근 방식이 합리적으로 들리므로 관련 학술 문헌을 검색하셨습니까? 그것은 당신에게 최신 기술에 대한 아이디어를 줄 것입니다. 배경 뺄셈은 까다 롭고 환경적인 영향뿐만 아니라 그림자도 문제가 될 수 있습니다.
geometrikal

답변:


8

이 방법으로 여러 가지 가능한 문제를 볼 수 있습니다. 나는 매우 유사한 접근 방식으로 보행자 계산 시스템을 개선함으로써 내 자신의 경험에서 이야기하므로 낙담하지 않을 것입니다. 반대로, 정확하고 강력한 시스템을 구축하기 위해 극복해야 할 장애물에 대해 경고하고 싶습니다.

첫째, 백그라운드 뺄셈 은 관심 객체가 항상 움직이고 계산에 관심이없는 객체는 완전히 정지 상태를 유지한다고 가정합니다. 확실히, 이것은 귀하의 시나리오에서 해당 될 수 있지만, 여전히 매우 제한적인 가정입니다. 또한 배경 뺄셈이 조명의 변화에 ​​매우 민감하다는 것을 알았습니다 (지오메트리 칼에 동의합니다).

환경이 잘 관리된다고 생각하더라도 한 블로 브 = 한 사람이라는 가정을 조심하십시오 . 사람들에 해당하는 얼룩이 움직이지 않거나 너무 작기 때문에 감지되지 않은 경우가 너무 자주 발생하여 침식이나 임계 값 기준에 의해 삭제되었습니다 (및 모든 것이 작동 할 때까지 임계 값을 조정하십시오 "트랩. 작동하지 않습니다;)). 한 방울이 함께 걷는 두 사람 또는 일종의 수하물을 들고있는 한 사람에 해당 할 수도 있습니다. 아니면 개 따라서 얼룩에 대해 영리한 가정을하지 마십시오.

운 좋게도, 당신이 사람 감지를 위해 LBP를 사용하고 있다고 언급 했으므로 , 나는 당신이 위 단락에서 실수를하지 않는 올바른 길을 가고 있다고 생각합니다. 그래도 LBP의 효과에 대해서는 언급 할 수 없습니다. HOG (그라디언트 히스토그램)는 사람 감지의 최첨단 방법이라는 것을 읽었습니다 . 인간 감지를위한 방향 그라디언트 히스토그램을 참조하십시오 .

내 마지막 그립은 Camshift 사용과 관련이 있습니다. 색상 히스토그램을 기반으로하므로 추적 창이 충분히 크고 폐색이나 급격한 변화가없는 한 색상으로 구분하기 쉬운 단일 객체를 추적 할 때 자체적으로 잘 작동합니다. 그러나 바로이 매우 유사 색상의 설명을 가질 수 있으며, 이는 여러 대상을 추적 할 필요로 합니다 서로 아주 가까운 이동을, 당신은 단순히 어떻게 든 여러 가설을 유지 할 수있는 알고리즘없이 할 수 없습니다. 이는 MCMCDA (Markov Chain Monte Carlo Data Association)와 같은 프레임 워크 필터 또는 프레임 워크 일 수 있습니다. 다중 대상 추적을위한 Markov Chain Monte Carlo Data Association 참조). 여러 객체를 추적 할 때 Meanshift를 단독으로 사용한 경험은 추적에서 잃어 버릴 수없는 모든 것입니다 : 추적 손실, 대상 혼동, 백그라운드 수정 등. 결국 여러 사람을 세는 것의 핵심 (목표는 추적하지 않기 때문에 "있을 수 있습니다"라고 말하므로 추적하지 않고 계산되는 영리한 접근법의 가능성을 완전히 버리지 않습니다 ...)

조언의 마지막 조각은 다음과 같습니다 거기에만 너무 많은 주어진 접근 할 수는 , 당신은 것입니다 (나는이 점에서 user36624에 동의하지 때문에) 더 나은 성능을 달성하기 위해 애호가 물건을 필요로한다. 이것은 더 강력한 것으로 알고리즘을 변경하거나 아키텍처를 완전히 변경하는 것을 의미합니다. 물론, 어떤 멋진 물건이 당신에게 정말로 유용한 지 알아야합니다. 원칙적으로 문제를 해결하려고 시도하는 출판물이 있지만 다른 사람들은 단순히 주어진 데이터 세트에 대한 알고리즘을 제시하고 실제로 문제에 적합하지 않은 분류기를 훈련시키면서 요구합니다. 몇 가지 임계 값도 조정하십시오. 세는 사람들 지속적인 연구가 진행될 것이므로 상황이 쉽게 올 것으로 기대하지 마십시오. 자신의 능력을 약간 넘어서는 것을 배우려고 노력한 다음 반복해서하십시오.

나는 어떤 해결책도 제시하지 않았으며 대신 당신의 접근 방식 (모두 내 경험에서 비롯된)의 결함 만 지적했습니다. 영감을 얻으려면 실시간 감시 비디오의 안정적인 다중 대상 추적과 같은 최근 연구를 읽는 것이 좋습니다 . 행운을 빕니다!


9

나는 당신이 묻는 것은 보행자 알고리즘의 실현 가능성에 관한 것이라고 생각합니다.

이러한 종류의 문제에 대한 두 가지 일반적인 전략이 있습니다.

  1. (아래에서 위로) 각 프레임에서 보행자 만 감지하는 순수한 감지 문제로 생각하십시오. 당신이 그들을 감지하면, a) 프레임에서 번호를 계산하는 것은 매우 쉽습니다; b) 연속 프레임에서 이들 중 하나를 추적하는 것도 쉽습니다. 따라서 모든 것을 해결합니다.

  2. (위에서 아래로) 연속 프레임의 ROI가 보행자인지 여부를 감지하는 동작 인식 문제로 간주하십시오. 이 문제를 해결하면 탐지 및 추적 문제를 동시에 해결합니다.

휴리스틱 알고리즘이 첫 번째 범주에 있습니다. 나는 당신을 낙담시키고 싶지 않지만 보행자를 감지하는 방법의 요점을 놓칠 수 있습니다. 실제 데이터는 생각보다 복잡 할 수 있기 때문입니다. 예를 들어, 이것이 보행자로 가득 찬 프레임이 지하철 카메라 인 경우 배경을 제거하거나 얼룩을 감지해도 전혀 도움이되지 않습니다. 이 경우 얼굴을 발견하면 보행자를 찾을 수 있으므로 얼굴 인식 및 얼굴 인식 알고리즘을 사용하여 문제를 해결하는 것이 더 합리적 일 수 있습니다. 반면에, 보행자에 대한 귀하의 정의에 따라, 프레임에 모든 사람이 보행자로 취급되는 것은 아닙니다. 이 경우 행동 인식 알고리즘 (두 번째 범주)을 사용하는 것이 합리적 일 수 있는데, 여기서 행동에 따라 보행자를 명시 적으로 정의 할 수 있습니다.

내 경험을 바탕으로 한 몇 가지 팁이 있습니다.

  1. 아는 것과 쉽게 집을 수있는 것을 고수하십시오. 멋진 것에 시간을 투자하지 말고 많은 배경이 필요합니다. 날 믿어,이 모든 알고리즘은 어떤 경우에는 좋지만 어떤 경우에는 나쁘다. 따라서 첫 번째는 아무리 좋든 나쁘 든 무언가를 작동시키는 것입니다.

  2. 데이터에 대해 자세히 알고 분석법을 결정하십시오. 많은 경우에 문제에 대한 일반적인 설명이 충분하지 않습니다.

  3. 아이디어를 보여주고 싶다면 MATLAB을 사용하고 프로토 타입을 만드는 것이 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.