Algorithm/Paper

[Review] Joint Cascade Face Detection and Alignment

빠릿베짱이 2015. 4. 16. 12:01
반응형

 

 

  2. Alignment Helps Detection: a Post Classifier
                                   
( Joint 방법의 타당성을 주장하기 위한 절)

 

OpenCV 얼굴 검출기를 이용하여 얼굴을 검출한다. 여기서 최대한 많은 얼굴을 검출하기 위해 낮은 임계값을 이용한다.

검출기의 출력은 매우 많은 얼굴 영역을 출력한다.

Linear SVM을 학습하기 위해 먼저 Positive 영역과 Negative 영역을 구분한다.

두번째 단계에서는 모든 출력 영역을 사용한다.

이 두번째 단계의 분류기를 post classifier 라고 부른다.

모든 윈도우는 96 * 96 사이즈로 리사이즈 한다.

우리는 3종류의 특징을 비교한다. 또한 각 특징에서 alignment를 수행했을 때와, 안했을 때를 함께 비교한다.

1. 윈도우를 6*6의 오버랩되지 않는 셀로 나누고, 각 셀에서 SIFT 디스크립터를 추출한다.
2. 27 랜드마크의 고정된 평균 모양을 사용하고, 각 랜드마크를 중심으로 SIFT 특징을 추출한다.
3. 27 랜드마크를 21번 논문을 사용하여 정렬하고, 각 포인트를 중심으로 SIFT 특징을 추출한다.

 

3 종류의 경우에서 SIFT 디스크립터는 모두 SVM을 위한 특징 벡터로 사용된다.

각 3종류에 따른 샘플 분포를 확인해보았다.

그림 2에서 1)은 기본 케스케이드 의 분류 점수이며, 2,3,4는 3종류의 특징으로 SVM을 이용하여 분류된 분포이다.

결과적으로 정렬된 랜드마크를 이용한 방법( fig2,(4), 특징 3)이 가장 효과적인 것을 볼 수 있다.

하지만 이러한 방법이 효과적인 반면에, post classifier 에 기반한 얼굴 정렬은 매우 느리다. 결국 high recall를 만족한 후에 처리를 해야하기 때문에,,,

경험적으로, OpenCV에서 99%의 recall를 획득하기 위해 낮은 임계값을 적용한 결과, 평균적으로 이미지당 3000개의 윈도우를 검출하였다.

이러한 경우, 출력된 모든 윈도우에  Post Classifier를 적용하는 경우, 몇 초가 걸린다.

 

 

  3. A Unified Framework for Cascade Face Detection and Alignment

 

Alignment 의 정보를 최대한 잘 활용하기 위해, 우리는 케스케이드 얼굴 검출과 정렬을 위한 통합된 프레임워크를 제안한다. 

 

- 케스케이드 분류기와 케스케이드 regression 에 대한 일반적인 설명 ( 생략)

케스케이드 정렬에서 가장 중요한 핵심은 각 regressor R^t는 이전 Shape S^t-1에 의존적인 것인다.

학습하는 동안 이러한 특징은 S^t-1에 연관되어 정의 되며, 이를 post/shape indexed features라 한다.

이러한 특징은 다양한 형태에 대해 기하학적으로 좀 더 불변하도록 도움을 주고, 이것이 케스케이드 프레임워크에서 매우 중요한 점이다.

우리는 검출기에서 약분류기로 적용하기 위한 얼굴 형태에 의존적인 특징을 제안한다. 검출기에서 약분류기의 수 N은 보통 보통 100~1000개 정도 되는 점에 주목하라

 

같은 스테이지에서 regression과 classification이 동시에 학습되고 적용될 필요는 없다. 알고리즘 1에서 보는 것과 같이 검출과 정렬은 분리되어 있다. 그러나, 실제로 우리는 두 부분이 연관되거나, 같은 특징이 공유되기를 원한다. 왜냐하면, 그것이 학습과 테스트에서 좀 더 효과적이기 떄문이다.

 

Fig 3은 제안하는 케스케이드의 개념을 보여준다. 네거티브 윈도우는 스테이지를 지나갈수록 점차 제거되고 랜드마크는 정렬되는 것을 볼 수 있다.

 

 

  4. Our Approach

3장에서 이야기한 것과 같이, 어떤 Shape indexed cascade 방법은 케스케이드 검출기를 위해 실제로 사용할 수 있다. 우리는 [21]논문을 적용하기로 했다. 왜냐하면 가장 정확하고, 빠르고 검출기를 위한 약분류기 학습 과정에 통합하기 쉽기 때문이다. 특히, 이전 가장 좋은 방법들보다 매우 빠르고, 랜드마크를 정렬하는데 엄청한 속도를 갖기 때문에, 이러한 높은 속도는 실시간 얼굴 검출기를 위한 매우 중요한 점이다.

4.1 에서 [21]논문 간단하게 리뷰하고, 4.2에서 검출기와 정렬을 위한 확장에 대해 설명한다.

4.1은 생략

 

 

  4.2 Joint Learning of Detection and Alignment

수식 4와 5는 유사한 추가적인 형태(additive form)를 공유한다. 우리는  하나의 결정 트리에서 분류과 regression을 학습하는 것을 제안한다. 즉, 각 regression 트리의 R은 모양에 대한 변화와 분류기 점수를 통합하여 업그레이드 된다.

결과적으로, 테스팅하는 동안, 분류와 회귀는 동시에 평가된다. CR은 둘다 같은 특징을 사용하고, 그래서 좀 더 속도가 빠른 효과를 갖는다.

분류기와 회귀가 혼합된 트리를 학습하기 위해, 우리는 허프 포레스트와 유사한 전략을 사용한다. 각 노드의 분할에서 우리는 랜덤하게 분류기를 위한 binary entropy 또는 랜드마크의 변화가 최소가 되는 것을 선택한다.

직관적으로 네거티브 샘플들을 빠르게 제거하고 싶다면, 파라미터 p는 클 것이다. 반면에 regression 결과의 정확성을 개선하고 싶다면 p는 작을 것이다.

우리는 경험적으로 파라미터 p가 스테이지에 따라 줄어들도록 만들었다. 즉 , 0.9, 0.8....

노드의 분할 테스트 하는 동안, 우리는 멀티 스케일에 대해 shape indexed pixel difference로 확장한다.

특히, 우리는 3개의 스케일로 이미지를 생성한다. 특징을 생성하기 위해, 우리는 랜덤하게 이미지 스케일을 선택하고, 두개의 랜덤 랜드마크를 현재 모양에서 선택한다. 그리고, 랜덤 오프셋를 선택된 랜드마크 기준으로 생성하고, 두개의 오프셋, 즉 랜드마크로부터 오프셋 만큼 이동된 두개의 픽셀 차이를 특징으로 사용한다.

우리는 멀티 스케일에서 학습하는동안  추출한 특징이 노이즈에 좀 더 강건하고 필요하다는 것을 찾았다.

우리는 realboost를 사용하여 분류 학습을 한다. 결정 트리 학습 전에, 각 샘플 i에 가중치 wi가 할당된다.

    wi = e^(-yi*fi)

yi 는 얼굴, 배경 라벨이며, fi는 현재 분류기 스코어이다. 이러한 가중치는 노드의 분할 테스트 하는 동안 바이너리 엔트로피 계산을 위해 사용된다.

각 트리의 리프 노드에서 분류 스코어는 수식 7과 같이 계산된다.

회귀와 분류에 대한 통합된 알고리즘은 알고리즘 3에 요약되어 있다. 여기서 주의할 점은 모든 shape은 주어진 윈도우에 정규화 되어 있다.

 

 

 

 

 

반응형