정보공간_1

[4기 강남 김태협] HOG와 SVM 분류기를 활용한 사람검출 방법2 본문

IT 놀이터/Elite Member Tech & Talk

[4기 강남 김태협] HOG와 SVM 분류기를 활용한 사람검출 방법2

알 수 없는 사용자 2013. 10. 23. 22:18

안녕하세요. 강남 멤버십 22-2기 김태협 입니다 :)

 

잘 지내셨나요?ㅎㅎ 그럼, 오늘은 저번에 이어서 HOG와 SVM분류기를 이용한 사람검출 방법 두 번째 이야기를 시작해볼까 합니다.

 

보행자 인식을 위해서

이전 포스팅에서 전경객체 검출에 대해서 이야기 하였습니다. 전경객체 검출을 통해서 화면상의 관심객체를 찾을 수 있었지만, 아직 해당영상이 사람인지, 아닌지는 알 수 없었습니다. 따라서 해당 전경객체가 사람인지 아닌지 판단을 할 수 있는 기준이 있어야 정확한 사람 검출을 할 수 있게됩니다.

 

HOG 특징 기술자
관심 객체의 영상이 우리가 원하는 사람인지 판별을 위해 보행자 인식에서 널리 사용되는 HOG 특징 기술자에 대해서 알아보도록 하겠습니다. HOG 특징 기술자는 영상의 Edge 성분을 이용해 특징을 생성하므로 조명의 영향에 강건한 장점이 있습니다. HOG 특징 기술자는 관심 영상을 BlockCell을 통해 구분하고 Cell안에서 각 픽셀들 간의 기울기를 계산하여 기울기에 관한 히스토그램을 만들게 됩니다.  (Block은 복수의 Cell로 구성)

 

 

 

 

한 Block에서 좌측상단의 Cell 부터 모든 Cell에 대한 히스토그램을 나열하면, Block에 대한 특징벡터가 만들어지게 됩니다. 그럼 방법을 이용해 HOG 특징 기술자를 통해 사람 영상에 관한 특징은 어떻게 생성하는지 알아보도록 하겠습니다.

 

 

 

 

위 사진을 보면, 모자를 쓴 사람에 대한 관심영상이 있습니다. 가장 우측에 있는 영상은 관심영상에 대해 HOG특징을 적용하여 각 Cell에 대하여 가장 우세한 기울기를 시각화한 영상입니다. 자세히 보시면, 기울기들이 사람의 형상을 하고 있는 것을 확인할 수 있습니다.

이 영상에 대해 HOG 특징 기술자를 이용하여 특징벡터를 생성하는 방법은 다음과 같습니다. 먼저 영상을 Block단위로 나누고(Blcok4개의 Cell로 정의되어 있습니다.) 앞서 설명한 방법으로 각 Cell에 대해 기울기에 관한 히스토그램을 만듭니다. 이것은 한 Block의 특징 벡터가 되며, 이와 같은 과정을 영상의 모든 Block에 적용하여 특징 벡터를 나열하면 관심영상에 대한 최종 HOG 특징 벡터를 구할 수 있습니다.

 

 

Support Vector Machine 분류기(SVM Classifier)

앞서 우리는 HOG 특징 기술자를 이용하여 관심영상으로부터 HOG 특징벡터를 만드는 방법을 알아보았습니다. 그럼, 이제부터 컴퓨터가 어떤 HOG 특징벡터가 사람인지 아닌지 판단하는 방법을 알아보도록 하겠습니다. 여기서는 대표적인 예로 일반화 성능이 좋은 SVM 분류기에 대해 소개를 드리고자 합니다

먼저, 이해를 돕기 위해 간단한 예를 들어보겠습니다. 만약, 100명의 사람영상과 100개의 배경영상(사람이 아닌 물체 또는 배경)에 대해 HOG 특징 기술자를 적용해 특징을 각각 추출하고 특징 벡터 공간에 표현하면 어떻게 될 까요?

 

  

 

 

 

위 그림을 보면, 사람영상에서 추출한 특징, 배경영상에서 추출한 특징은 서로 다른 군집을 이루고 있는 것을 보실 수 가 있습니다.(각 파란색 원은 한 사람에 대한 학습 이미지, 각 붉은색 원은 한 배경에 대한 학습이미지입니다. HOG는 고차원의 특징벡터를 사용하고 있지만 이해를 돕기 위해 2차원 공간으로 표현하였습니다.) 이러한 이유는 사람영상과 배경영상은 서로 구분되는 HOG 특징 벡터를 갖기 때문입니다. 그렇다면 여기서, 두 군집을 구분하는 평면의 방정식을 구하면 어떻게 될까요? 맞습니다. 그러면 우리는 하나의 평면 방정식으로 어떤 관심 영상이 들어와도 사람인지 사람이 아닌지 판단을 할 수 있게 될 것입니다. 패턴인식과 기계학습 분야에서 이러한 과정을 학습이라고 합니다. 이미 답이있는 데이터 셋을 학습하므로써 새로 들어온 특징이 어디에 속하는지 예측할 수 있게 되는 것이죠.

여기서 SVM 분류기는 HOG 특징벡터공간에서 사람에 대한 특징, 그리고 사람이 아닌 특징들의 군집을 구분할 수 있는 마진을 최대로하는 초평면의 식을 구하게 됩니다. 따라서, 이후 어떤 관심영상의 특징벡터가 들어와도 사람인지 아닌지 판별 할 수 있게 됩니다.

 

 

사람검출

자 그럼, 관심 영상에 대해서 HOG 특징 기술자를 만들고, SVM을 통해 학습 데이터셋을 학습하는 방법에 대해서도 알았습니다. 그럼 실제 영상에서 지금까지 알아본 HOG 특징 기술자와 SVM 분류기를 이용하여 사람을 검출하는 방법에 대해서 알아보도록 하겠습니다.

 

 

 

 

 

위 영상은, HOG 특징 기술자와 SVM을 이용하여 사람을 검출한 영상입니다. 사람을 검출하기 위해서는 전경객체 검출을 통해 얻은 관심 영역에 대해 일정한 간격으로 윈도우를 설정하고 HOG 특징 기술자를 구해야 합니다. 그리고 SVM을 통해 해당 윈도우가 사람인지 아닌지를 판별하게 됩니다. 관심영역의 HOG 특징 벡터가 초평면과 떨어진 거리를 통해서 분류 결과 값의 신뢰도를 구할 수도 있습니다. 위 영상에서는 윈도우가 밝은 노랑색일 수록 신뢰도가 높은 영역입니다. 그리고 지역적 최적화 기법(Non Maximum Suppression)을 통해서 가장 신뢰도가 높은 영역만 남겨두면 최종적으로 사람의 위치를 검출 할 수 있습니다.

 

 

사람추적

지금까지 HOGSVM분류기를 이용해서 사람을 검출하는 과정을 알아보았습니다. 하지만, 실제 영상에서는 여러가지 방해요소가 존재하게 됩니다. 예를 들어, 밝기변화, 부분적 가림, 완전한 가림 등이 있습니다. 이러한 노이즈가 심하게 존재할수록 사람 검출의 성능은 떨어지게 되고, 실제 영상에서 오검출이 발생하거나, 검출이 안되는 상황도 발생하게 됩니다. 따라서, 이러한 제약 조건을 극복하기 위해서는 검출 후 추적기술이 자연스럽게 필요하게 됩니다.

 

 

 

 

위 영상은 칼만 필터를 이용하여 사람 검출 후 추적을 적용한 영상입니다. 노랑색 계통 박스가 검출된 영역이고, 분홍색이 인식된 객체를 추적하는 박스입다. 그리고 초록색 선은 객체의 움직임을 표시한 경로가 되겠습니다. 이러한 추적 알고리즘을 적용할 때는, 시간상 연속적인 프레임에서 인식된 객체들 간의 데이터 연관성(Data Association)이 중요하게 작용합니다. 데이터 연관성은 이전 프레임에서 인식된 객체와 현재 프레임에서 인식된 객체의 유사도(Affinity)라고 이해하시면 됩니다. 객체의 유사도는 이전, 현재 프레임의 객체들을 비교할 때 객체간의 거리, 색상, 외관정보를 통해 계산되게 됩니다. 따라서, 제일 유사한 객체를 칼만 필터를 통해 추적할 수 있게 됩니다. (위 영상에서는 사람을 추적하기 위해 칼만 필터를 썼지만, 또 많이 쓰이는 방법으로 파티클 필터가 있습니다.)

 

지금까지 보행자 인식 분야에서 사람을 검출하고 추적하기 위한 방법에 대해서 단계적으로 알아보았습니다. 보행자 인식은 예전부터 많은 사람들이 관심을 기울인 분야이며 많은 연구가 진행된 분야입니다. 그렇지만, 실제 환경을 고려하면 정말 많은 변수들이 존재하기 때문에 어렵고 도전적인 분야이기도 하지요. 그래서 연구된 시간에 비해 상용화된 결과물이 부족했었습니다. 그렇지만 최근에는 오랜 연구의 결실로 어느정도 상용화된 결과물도 볼 수 있습니다. (이미 이전 포스팅에서 언급했지요 :D )

 

그럼, 이번 포스팅을 마지막으로 보행자 인식에 대해서는 마무리 하도록 하겠습니다.

지금까지 읽어주셔서 감사드리며, 다음 블로그 포스팅은 제스쳐 인식으로 찾아 뵙도록 하겠습니다.