publication 탭에서 리뷰를 살펴보니, NIPS 2015에 제출된(아마도 rejected) 논문인 듯 하다.
Darknet이라는 묘한 C++기반의 deep learning framework를 사용한다.

논문의 요지--
기존의 deep learning을 사용하는 object detection 방법들(R-CNN 등)은 기존의 object proposal 방법들(EdgeBoxes와 같은)을 사용하여 물체일 가능성이 높은 patch들을 가지고, deep network에 input으로 사용하여 object classification task로 문제를 풀었다.
이러한 방법은 object proposal의 높은 recall 성능과 DNN의 높은 classification 성능과 맞물려서 전체적으로 outperforming하는 결과를 낸다.
물론 object proposal 방식의 속도가 빠르고 (edgeboxes: < 1 sec),  DNN의 feedforward 과정 또한 꽤 빠르다고는 하나, 
object proposal을 생성하는 과정과 후보 image patch들을 여러번 deep network에 돌려야 하는 과정은 꽤나 redundant해 보인다.

제안하는 논문은, input image를 CNN 모델에 한번 feed forward 과정을 거치는 통합된 object detection알고리즘을 제안한다.
Main contribuion: 
     1) 간단한 framework으로 한번에 이미지 전체에 해당하는 detection을 매우 빠르게 수행. (real-time)
     2) Global reasoning: 각각 patch들의 classification결과로서의 detection이 아닌, 전체 이미지를 고려한(global view) 탐지 결과를 얻을 수 있다.
실험 결과로는, PASCAL VOC 데이터셋에서는 DPM보다는 높은 성능, R-CNN 보다는 낮은 성능을 보인다.
이러한 단점을 보완?하기 위해 그림이나, natural 이미지들의 데이터셋에서의 탐지 결과를 보여주는데, 이러한 natural dataset에서 성능이 더 좋은 이유를 YOLO의 global reasoning을 그 이유로 들고 있다.  


논문 내용 --


입력 이미지를 제안하는 CNN 모델에 통과시킨 후 output으로 (S * S) grid의 결과값을 얻는다. (S=7)
각 grid는 
1) C(=20)개의 class에 대한 label과
2) 이 grid가 가르기는 object의 confidence와
2) B(=2)개의 bounding box를 predict한다.
즉, 이미지당 output으로 7*7*(20+(4+1)*2)짜리 tensor를 얻게 된다.

CNN 모델은 GoogLeNet을 변형시켜, 24 conv. layer + 2 fully connected layer로 구성된다.

논문에서 정의하고 있는 Loss function은 다음과 같다.

논문에는 loss function에 대해 설명이 자세히 안되어 있고 notation에 대한 설명 또한 없어서 대략 추측해본 바는 다음과 같다.

첫 번째 term 은 predicted box 와 ground truth의 center 거리, 즉, bounding box location error.
두 번째는, predicted box 와 ground truth box의 aspect ratio error.
세 번째와 네 번째는 grid의 detection의 confidence에 따른 loss term인 듯 하다. 각각 ground truth object가 있을 경우 (C=1), 없을 경우 (C=0)로 나누어서 다른 weight를 적용하는 식으로 보인다.
마지막 term은 grid에서 predicted ‘class label’에 따른 probability에 의한 error term이다.  YOLO는 각 grid에서 물체가 탐지되었다고 할 때의 20개의 class에 대한 확률 값을 prediction한다. 이 값을 ground truth (true class=1, else =0) 와 비교하여 error를 계산한다.






Posted by 헬벨
ICCV 2015에 발표될 논문으로 caltech pedestrian benchmark 성능을 11%대까지 끌어올림.
전체적인 컨셉:
Adaboost와 같이 boosting 기반으로 weak learner를 cascading할 때 'classifier accuracy' vs 'computation complexity'의 trade-off를 최적화하는 framework를 제안.

<Adaboost>
weak learner f_i 들로 구성된 predictor F에 iterative하게 new weak learner g를 추가하기 위한 일련의 과정들..
(수식 설명은 패스)
epsilon을 이용한 미분식이 명확하게 이해가 되지 않는다.
weak classifier는 feature의 binary decision을 이용한다.

<Complexity-aware cascading>
각 weak learner의 time Complexity를 의미하는 complexity risk term이 추가된다.


Complexity risk term에는 Omega function이 존재한다.
단일 feature를 사용하여 boosting을 하는 경우, 이 Omega function은 step 순서에 상관없이 constant한 값을 갖게 된다. 
논문에서는 여러 feature들 (ACF, HOG, SS, CB, LDA, CNN 논문참고)을 사용하기 때문에,
Classifier의 miss-classification에 의한 risk와 시간이 오래걸리는 feature가 갖는 time complexity risk의 합 (전체 Loss)을 최소화하는 방향으로 weak learner를 선택하게 된다.
즉 complexity 를 고려하지 않는 경우에 비해, 시간이 오래걸리는 feature는 가벼운 feature에 비해 cascade의 뒷단에 위치하게 된다. 

<성능>
단일 feature 대상으로 boosting을 할 경우 complexity term이 의미가 없어지므로 기존 boosting과 차이가 없음.
multi feature로 제안된 방법을 수행할 경우: 수행속도와 detection 성능의 향상을 보임. 하지만 state-of-the-art 보다는 낮은 성능
Large-CNN 모델에의 적용: Large-CNN에의 적용이란, 제안된 방법으로 detect해낸 pedestrain candidate들을 VGGnet 같은 framework의 input으로 넣고 최종 결과를 얻는 것을 의미한다.
즉 R-CNN에서의 region proposal부분을 complexity aware boosting으로 구하겠다는 것이다. 
이렇게 하면 성능이 11%대로 양자쩜프가 일어난다. -0-

<결론>
complexity term을 정의하고 boosting optimization 에 넣은 부분은 참신함.
miss rate 11% 대의 성능이 나오려면, 결국 R-CNN과 같이 Deep learning framework를 사용해야 한다.




Posted by 헬벨
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 헬벨
  • 이터셋




각각 특징?

  • 물체 인식 관련 논문들

[Dieter Fox] RGB-D object recognition: Features, algorithms, and a large scale benchmarkCDC4CV 2013


[Dieter Fox] Unsupervised feature learning for RGB-D based object recognition, ISER 2012


Recognizing RGB Images by Learning from RGB-D Data, CVPR 2014


[Dieter Fox] Depth Kernel Descriptors for Object Recognition, IROS 2011


Holistic scene understanding for 3d object detection with rgbd cameras, ICCV 2013


[Dieter Fox] Detection-based object labeling in 3D scenes, ICRA 2012


각 논문 읽고 방법론?


  • 물체 추적 

Automatic Video Segmentation and Object Tracking with Real-Time RGB-D Data, ICCE 2014




Posted by 헬벨

Integral Channel Feature (BMVC 09)

The Fastest Pedestrian Detector in the West (BMVC 10)


Pedestrian Detection: An Evaluation of the State of the Art  에서 성능 1, 2위를 다리고 있는 디텍터.

이 survey 논문의 저자 또한 동일 인물(Dollar et al)이기 때문에, 뭔가 냄새는 나지만 그래도 성능이 좋다니까 읽어보려함.

Posted by 헬벨

Pedestrian Detection: An Evaluation of the State of the Art 

에서 성능이 DPM보다 높게 나왔다길래 읽어봄.(아놔 낚임.. 성능이 2위가 아니라 뒤에서 2위였음..)


한줄요약 : 보행자 탐지를 위해 Shapelet이라는 mid-level feature를 제안함.


<전체 algorithm>

low-level feature --(adaboost)--> shaplet --(adaboost)--> final classifier 

1. low-level feature
일반적인 탐지 알고즘에서 사용하는 gradient feature를 low-level feature로서 사용함
(물체 탐지, 특히 보행자 탐지에서는 edge 정보를 이용하는 gradient feature를 넘어서는 패러다임이 언제쯤 등장할까?)
Detection window에 존재하는 각 pixel 마다 low-level feature를 보유.

2. shapelet (mid-level feature) 
Adaboost를 통해 low-level feature를 중첩하여 shapelet feature 를 구성.
Detection window를 여러 개로 나눈 sub-window 마다 shapelet feature를 보유.
(즉, 하나의 shapelet feature는 하나의 sub-window 내에 있는 pixel들의 low-level feature들의 adaboost 결과이다)

3. final classifier
최종적으로 detection window에 대한 보행자인지, 아닌지에 대한 classifier.
sub-window로부터 나오는 shapelet feature들을 adaboost를 통해 통합하여 하나의 classifier로 구성한다.



실험 결과에서 HOG보다 성능이 높게 나왔다고 하는 주장은 저자 홈페이지 에서 오류로 정정함.


low-level feature를 Adaboost를 이용하여 classifier를 만드는 방법은 당시에도 진부하게 쓰이는 방법이었으나,

Adaboost의 단점 (정보의 양이 적다. redundant feature를 이용하면 성능을 높일 수 있다)을 해결하고자 mid-level인 shapelet을 제안.

Shapelet feature에 해당하는 sub-window 내부의 low-level feature들은 첫번째 Adaboost를 통해 충분한 정보의 양을 가진 채로 뽑히게 됨.

이렇게 구성된 shapelet feature들의 adaboost selection 결과는 통상적인 low-level feature의 adaboosting 결과보다 높게 나온다.







Posted by 헬벨