-
[자료 읽기] Object detection(객체 검출)자료 읽기 2022. 3. 14. 09:59
출처 : 한땀한땀 딥러닝 컴퓨터 비전 백과사전 https://wikidocs.net/136482
객체 검출 : 주어진 이미지에서 각 인스턴스들의 사이즈를 박스 테두리로 예측하고, 해당 인스턴스의 클래스를 예측
(1) 객체검출 아이디어
객체검출 : 한 이미지에서 객체와 이 객체를 둘러싸는 가장 작은 직사각형으로 정의되는 bounding box를 찾는 작업
Image classification : 하나의 object에 대해 무엇인지를 분류함.
Image localization : 하나의 object에 대해 어디에 위치하는지 파악함.
Object detection : 여러가지 물체에 대해서 위치를 파악하고, 각각이 무엇에 해당하는지를 파악함.
1) 객체검출 데이터셋 소개
* PASCAL VOC
- 2005년에서 2012년까지 진행되었던 PASCAL VOC challenge에서 쓰이던 데이터셋
- PASCAL 2007과 PASCAL 2012 데이터셋이 벤치마크 데이터셋으로 자주 쓰입니다.
- VOC 데이터셋 구조
- VOC 데이터셋 크기
* ImageNet
- ImageNet Large Scale Visual Recognition Challenge (ILSVRC) 대회에서 Image classification, Object detection 성능평가 데이터셋으로 사용
- ILSVRC 2012 데이터셋이 자주 쓰입니다.
- ImageNet 데이터셋 크기
- ImageNet 데이터셋 단점
* COCO
- COCO 데이터셋 장점
- COCO 데이터셋 크기
(2) 객체검출 모델 이해를 위한 사전지식
1) 객체검출 일반적 프로세스
1. Specify Object Model
어떤 object를 detection할지 정하고 feature를 define 하는 단계
NN을 베이스로한 모델들은 사람이 뽑아낼 feature를 정해주지 않기때문에 이 과정이 생략
* Statistical Template in Bounding Box
object는 이미지 어딘가에 존재하고, Feature는 bounding box의 coordinate에 대해 정의
* Articulated parts
정형화된 구조를 지닌 객체의 경우, 객체는 부분 요소요소들의 configuration이 되고, 이러한 구조를 feature로 이용
detection 그 자체보다는 사실 역으로 pose estimation을 할 때나, graphics 쪽에서 애니메이션을 위해 아직 많이 사용하는 구조
* Hybrid Template & body
2. Generate Hypotheses
Ojbect의 후보군을 뽑고 Scoring
* Sliding Window
Scale을 고려하면서 모든 pixel location에 대해서 일정 크기의 patch만큼 돌아다니면서 검사하는 방법
3. Score Hypothesis
4. Resolve Score
* Non-max Suppression (NMS)
Sliding window를 통해 각 patch별로 scoring을 하게 되면, 이미지의 주변에 있는 patch들이 전부 높은 score를 갖게 되는 문제점 발생
object 주위로 좋은 score를 갖는 여러개의 bounding box 중에서 가장 좋은 것 하나를 뽑기 위한 방법이 NMS
* 실제 모델에서의 이해
2) Localization
* Sliding window object detection
모든 location에 대해 scale을 고려하여 object candidate를 만드는 방법
- Sliding window 작동법
예시 : 원하는 patch size 안에서 차를 classification 하는 CNN 모델
sliding winodw가 만들어내는 candidate들은 patch 각각이 차인지, 아닌지 분류하고 scoring
- Sliding window 문제점
CNN 같은 DL 기반의 classifier를 활용하는 경우, pixel-wise로 전체 location을 돌면서 상당한 계산비용 소요
- Convolutional implementation sliding windows
* Selective Search
이미지에서 객체 (object)가 있을 법한 영역(ROI)을 제시하고 이 영역에 대해서만 classification
ROI를 찾아내는 방법 : selective search, RPN 등
Selective Search를 적용한 R-CNN, Fast R-CNN의 경우, Region Proposal에 상당히 오랜 시간이 소요
- 알고리즘 구조
주변 pixel 간의 유사도를 평가합니다.
비슷한 영역을 합쳐서 segmented area를 만듭니다.
다시 해당 segmented area를 합쳐서 더 큰 segmented area를 만듭니다.
이전 과정을 반복하여 최종적으로 2000 여 개의 ROI를 만듭니다.* RPN (Region Proposal Network)
RPN을 사용한 모델은 Faster R-CNN
RPN에서 주목할 것은 Anchor box라는 새로운 개념의 등장
Anchor box는 bounding box가 될 후보군으로, 미리 정해둔 크기와 비율을 가집니다.
추후 학습을 통해 Bounding box가 아닐 것 같은 anchor box는 NMS을 통해 후보군에서 탈락시키고, 가능성있는 anchor box에 대해서만 Regression 하여 최종 bounding box를 찾아냅니다.
Selective Search가 2000개의 RoI를 제시하는데 반해 RPN은 800개 정도의 RoI를 제시합니다.
CPU에서 작동하는 Selective Search와는 달리, GPU에서 작동하므로 속도는 더더욱 빠릅니다.
* Unified detection
1-stage detection 중 하나인 YOLO에서 사용하는 기법
기존의 Object Dection은 region proposal과 classification으로 두 단계로 나누어서 진행했다면 Unified detection은 한번에 Object Detection을 수행
2) NMS & Anchor box
* 서론
object detector가 예측한 bounding box 중에서 정확한 bounding box를 선택하도록 하는 기법
* 일반적인 NMS
- NMS 과정
- 모든 Bounding box는 자신이 해당 객체를 얼마나 잘 잡아내지 나타내는 confidence score를 가집니다. 모든 bounding box에 대하여 threshold 이하의 confidence score를 가지는 Bounding Box는 제거합니다. Confidence score가 일정 수준 이하인 bounding box들에 대해 일차적으로 필터링을 거치는 과정입니다.
- 남은 Bounding Box들을 Confidence score 기준 모두 내림차순 정렬합니다.
- 맨 앞에 있는 Bounding box 하나를 기준으로 잡고, 다른 bounding box와 IoU 값을 구합니다. IoU가 threshold 이상인 Bounding box들은 제거합니다. Bounding box끼리 IoU가 높을수록, 즉 많이 겹쳐질수록 같은 물체를 검출하고 있다고 판단하기 때문입니다.
- 해당 과정을 순차적으로 시행하여 모든 Bounding box를 비교하고 제거합니다.
- Confidense threshold가 높을수록, IoU threshold가 낮을수록 더 많은 bounding box가 제거됩니다.
* YOLO에서의 NMS
모든 output prediction은 [pc,bx,by,bh,bw] 형태의 array 일 것입니다.
- Cell마다 pc<0.6인 박스를 버립니다.
- 남아있는 것 중에서 pc가 가장 큰 값을 고릅니다.
- 선택한 박스와 IoU>0.5인 다른 bounding 박스를 모두 제거합니다.
- 이 과정을 다시 반복합니다. (그 다음으로 pc가 높은 박스를 고름)
- NMS의 문제점과 Anchor box
문제점 : object끼리 겹칠 때 다른 object에 대한 bounding box 까지 제외될 수 있다.
해결방법 : Anchor box. 탐지하려는 객체의 모양을 정해놓고 객체가 탐지되었을 때 어떤 anchor box와 유사한지 판단해서 벡터값을 할당하는 방법
(3) 객체검출 모델
1) R-CNN
* 네트워크 구조
1. Image Input
2. Region proposal
Selective search 알고리즘을 통해 ROI를 2000 여 개 정도의 Region을 뽑아내어 bounding box를 생성
3. Warping
CNN에 넣기 전에 같은 사이즈(227 x 227)로 warping 해야 합니다. bounding box 크기의 비율은 고려하지 않고 일률적으로 같은 사이즈로 만들기 때문에 이 과정에서 input image가 왜곡되고 정보가 소실되는 현상이 발생
4. CNN feature extract
3번의 과정을 통해 크기가 조절된 Bounding box를 CNN 모델에 넣습니다.
저자들은 이미지넷 데이터(ILSVRC2012 classification)로 미리 학습된 CNN 모델을 가져온 다음 Object Detection용 데이터 셋으로 fine tuning하는 방식을 취했습니다.
5. Image Classificiation with SVM
CNN을 통해 추출한 벡터를 가지고 각각의 클래스 별로 SVM Classifier를 학습
SVM Classification을 한 후의 2000여개의 bounding box들은 어떤 물체일 확률 값을 갖게 됩니다.
6. NMS
동일 물체에 여러 개의 bounding box가 설정되는 경우가 있기에 NMS를 통해 객체 전체를 대상화할 수 있는 bounding box 한 개를 선택
7. Bounding box regression (BBR)
Selective Search로 찾은 Bounding Box 위치가 부정확하기에 Bounding Box Regression을 시행
bounding box 위치 선정을 교정하고 모델의 성능을 높이기 위한 과정
P : 초기 Bounding Box
G : Ground Truth
P가 input으로 들어왔을 때 이를 이동시켜 G를 잘 예측하는 것이 목표
dx, dy, exp(dw), exp(dh) 를 각각 곱하여 예측치 G_hat을 만듭니다.
d 함수는 P를 G_hat으로 이동시키기 위해서 필요한 이동량을 의미하며 BBR에서 학습시키는 것은 이 d함수입니다.
t 함수는 P를 G로 이동시키기 위해서 필요한 이동량을 의미하며 d함수와 형태는 동일합니다.
loss function은 "t함수와 d 함수의 MSE" + "L2 normalization"을 추가한 형태입니다.* 단점
- AlexNet을 그대로 사용하기위해 image를 강제로 변형 시켜야 합니다.
- warping 하는 과정에서 input 이미지가 왜곡되고 정보 손실이 발생합니다
- Selective Search를 통해 뽑힌 2000개의 Region proposal 후보를 모두 CNN에 집어넣기 때문에 training / testing 시간이 오래 걸립니다.
- Selective Search나 SVM이 GPU에 적합한 구조가 아닙니다.
- Computation sharing이 일어나지 않습니다. (CNN, SVM, Bounding Box Regression 총 세 가지의 모델이 결합된 형태로 한 번에 학습이 불가능합니다. 즉, end-to-end 훈련이 불가능하다는 뜻입니다. SVM, Bounding Box Regression을 학습시켜도 Back propagation이 안되므로 CNN은 업데이트 되지 않습니다. )
2) Fast R-CNN
* 네트워크 구조
1-1. CNN Feature extraction
1-2. Region proposal
2. Region projection
1-2 과정에서 찾은 bounding box를 1-1 과정에서 찾은 feature map 위에 투영(projection)합니다.
작아진 feature map에서 bounding box 에 해당하는 영역을 찾는 것
3. RoI Pooling
'자료 읽기' 카테고리의 다른 글
[자료 읽기] (2022) How does unlabeled data improve generalization in self-training? (0) 2022.03.15 [자료 읽기] 딥러닝논문리뷰 PointNet (0) 2022.03.15 [자료 읽기] (2020) 비대면 시대를 위한 물류로봇 기술 연구 동향 (0) 2022.03.14 빈피킹(Bin picking) vs 피스피킹(Piece picking) (0) 2022.03.11 [자료 읽기] Image Segmentation (이미지 분할) (0) 2022.03.10