본문 바로가기
딥러닝(Machine Deep learning)

CNN기반의 object detection 동향

by Park Hyun Kook 2019. 12. 19.

---

object detection = object classification + localization

객체 검출(detection)이란 위의 그림과 같이, 이미지에서 다른 객체들을 찾고 그들을 분류(classify)하는 것을 말한다. 

물체의 바운딩 박스를 추정

 

Two stage: region proposal을 뽑고 분류를 진행하는것

-RCNN: 어떤 영역이 물체가 있을법하면 feature를 뽑아내고 뽑아낸 feature를 SVM으로 분류한다.

Input: 이미지
Outputs: 박스로 영역 표시(Bouding box) + 각 객체에 대한 라벨링(class label)

무수히 많은 박스들을 생각한 다음에 그 중에 어떤 것이든 실제 객체에 해당하는 것을 찾는 방식이다.

 

Selective search를 통해 이 상자들, 또는 region proposal라고 불리는 영역을 생성해낸다.

 

문제점:

  1. 매번 하나 이미지에서 나오는 모든 각각의 제안된 영역을 각각 CNN(AlexNet)을 통과시켜야 하는데, 이는 하나의 이미지당 2000번의 forward pass를 거쳐야 한다는 이야기이다.
  2. 3개의 다른 모델을 학습시켜야 했다. Image feature를 생성하는 것, classifier가 class를 예측하는 것, regression model이 bouding box를 찾아낸 것. 이것이 전체적인 pipeline을 학습시키 어렵게 하였다.

 

RCNN의 속도가 느린것을 빠르게 하기 위해 변형한것이 아래의 2가지 기법

-fast RCNN: 전체 피처를 뽑고 selective search

-faster RCNN

 

==오래걸리고 비효율적 but 정확하다

 

 

One stage(또는 Single stage) 제일 마지막의 피처맵을 사용하는 방식에서 벗어남

-YOLO: 다크넷으로 피처를 뽑고 각 그리드마다 요소를 ESTIMATION을 통해 

-SSD: 중간 피처맵마다 뽑아내 합친다

 

==속도가 빠르다

 

---

최근 기법들

1. Anchor box는 반드시 필요한가?-필요없다.

2. Pre-trained 모델이 필요한가?

3. 더 나은 구조가 있는가?

 

ExtremeNet

 

CenterNet #1

중앙을 찾고 양쪽 점을 찾아 잘 grouping후 바운딩박스를 찾자

 

CenterNet #2

코너도 필요없고 센터만 잘 찾자.

 

FCOS

기존의 포인터 기반의 물체감지 방식

 

2. Pre-trained 모델이 필요한가?

DSOD, ScratchDet

pre-trained 모델을 사용하지 않고 처음부터 학습

 

---

Rethinking ImageNet Pre-Training

-Normalization

-Training Time

 

-배치노말라이제이션

모든 채널마다 배치사이즈에 대해서 값을 구한다.

모든 채널을 축으로 값을 구한다.

 

-그룹노말라이제이션

몇개의 정해진 채널간의 variance를 구한다..

==

큰영상 사용시 배치노말라이제션을 사용하기 어려울때, 그룹노말라이제션을 사용하자 

 

학습시간이 길어질수록, Pre-Training과 scratch의 결과가 비슷해진다.

 

 

 

References:

https://junn.net/archives/2517

댓글