'computer vision'에 해당되는 글 1건

  1. 2015.11.19 [ICCV 2015] Deep Learning Strong Parts for Pedestrian Detection (3)
ICCV 2015에 발표될 논문으로 benchmark 성능을 큰 폭으로 향상시킨 논문.
특히 part based detector를 학습시켰다길래 흥미를 갖고 읽어봄.




목적: 보행자 탐지 (pedestrian detection)
특징: Deep learning 이용 (CNN), occlusion handling에 중점을 둠.

기존 연구와의 차별점: 
1) 기존 part-based 연구 (DPM등) 에 비해 단순한 configuration (썩 공감이 되지는 않음).  또한 part annotation이 필요없는 part-based detector 라는 장점이 있음.
2) 기존 occlusion handling 하는 논문과 달리 occlusion pattern을 pre-define하지 않음. extensive part pool로부터 자동 생성한다. 
3) 기존 deep model (중 occlusion을 다루는 연구들) 은 최상위 layer에서 occlusion을 학습하기 때문에 제대로 occlusion 과 visibility가 학습되지 않는다.


<Training Part Detector>
사람 모델을 6 by 3의 cell로 구성하며, part detector의 최소 2 by 2 부터 6 by 3 까지 45개의 part pool을 생성한다. (위 그림 참고)


학습으로는 caltech pedestrian dataset을 사용.
사람 영역을 나타내는 human bounding box 뿐만 아니라, 
보이는 영역을 의미하는 visible region의 bounding box 도 annotation된 정보로 사용한다. (dataset에서 제공되는지는 잘모름)

이를 이용하여 45개의 part detector를 학습하는 방법은 간단하다.
(위 그림 참고)
1) Part patch들을 mining하는 방법
Training data의 ground truth human patch 중, part template에 해당하는 영역(패치)을 positive sample로 사용. 
당연히 grount truth의 visible region이 part template 영역을 포함하고 있어야 한다.
Negative sample은 LDCF[[각주:1]] 라는 성능이 좋은 channel filter 기반으로 탐지된 false positive들을 사용한다. (분석: 자연스럽게 hard negative mining 의 효과를 얻을 수 있다.)

2) Part detector 학습
그 유명한 R-CNN[[각주:2]] framework를 사용.
Pre-training: (i) no pre-training, (ii) use full images, (iii) use cropped images 의 세 가지 방법으로 수행 하고 비교. 당연히 (iii)의 방법이 가장 좋은 성능.
Fine-tuning: R-CNN의 n(=1000) class의 output을 내는 마지막 layer를 2 class (0=not human, 1=human)의 classifier로 바꾼 후 재학습.

이 방법으로 45개의 R-CNN 기반의 part detector가 생성된다. 

3) IOU를 높이기 위한 shifting handling.. 은 생략..



<학습된 45개의 part detector로 최종 결과를 내려면?>
논문에서는 complementarity 라고 최종 과정을 언급함. (각 part detector들의 결합? 이라는 의미?)
//part detector의 outputs (45개) 위에 SVM 과 같은 classifier 를 스택하여 final decision을 찾는 방법을 사용하지 않고, 
45개의 part detector의 complementarity 를 학습하기 위해 45 detector scores 를 입력으로 하는 linear SVM을 학습하고,
SVM weights의 top 6 weight 를 갖는 part detector를 선별하여 (아래 그림 참고)

이 파트들의 ensemble SVM으로 학습하여 최종 결과를 낸다고 한다. 
허나 이부분이 clear하게 설명되어있지 않음. ensemble classifier인 bagging이나 boosting을 의미하는 것 같지는 않음.

실험 결과부분에서, 6개 part detector의 simple combining에 비해 학습된 complementarity를 이용한 것이 성능이 좋다고 표현한 것으로 보아
추측하건데, complementarity는 linear SVM의 weight를 의미하며, complementarity를 고려한 combination은 weighted sum이 아닐까 생각해본다..


<내 결론>
큰 성능의 향상 가져옴. 
기술적으로는 wow 할만큼 새로운 것은 없는 듯.
코드가 공개되면 학습된 모델을 part detector로 사용하여 crowded scene에서 적용해보는 것이 목표.










  1. http://vision.ucsd.edu/~pdollar/files/papers/NamNIPS14ldcf.pdf [본문으로]
  2. http://arxiv.org/abs/1311.2524 [본문으로]
Posted by 헬벨