1 stage Detectors
1.1 Background
2Stage Detector는 Localization과 Classification을 하기때문에 realtime으로 활용이 불가능하다
1 Stage Detector 특징
- Localization, Classification이 동시에 진행
- 전체 이미지에 대해 특징 추출, 객체 검출이 이루어짐 → 간단하고 쉬운 디자인
- 속도가 매우 빠름 (Real-time detection)
- 영역을 추출하지 않고 전체 이미지를 보기 때문에 객체에 대한 맥락적 이해가 높음
- Background error가 낮음
- YOLO, SSD, RetinaNet 등이 있음
1.2 History
2. YOLO v1
2.1 Overview
YOLO Version
- YOLO v1 : 하나의 이미지의 Bbox와 classification 동시에 예측하는 1 stage detector 등장
- YOLO v2 : 빠르고 강력하고 더 좋게, 3가지 측면에서 model 향상
- YOLO v3 : multi-scale feature maps 사용
- YOLO v4 : 최신 딥러닝 기술 사용, BOF : Bag of Freebies, BOS: Bag of Specials
- YOLO v5: 크기별로 모델 구성, Small, Medium, Large, Xlarge
Yolo 특징
- Region proposal 단계 X
- 전체 이미지에서 bounding box예측과 클래스를 예측하는 일을 동시에 진행
- 이미지, 물체를 전체적으로 관찰하여 추론 (맥락적 이해 높아짐)
2.2 Pipeline
Network
- GoogLeNet 변형
- 24개의 convolution layer : 특징 추출
- 2개의 fully connected layer : box의 좌표값 및 확률 계산
- 입력이미지를 SXS 그리드 영역으로 나눔(S=7)
- 각 그리드 영역마다 B개의 Bounding box와 Confidence score를 계산 (B=2)
- confidence(신뢰도) = Pr(Object) X IoU(truth pred)
-> 박스에 Object가 있을확률 X groundtruth X IoU
- 각 그리드 영역마다 C 개의 class에 대한 클래스일 확률 계산(C=20)
- conditional class probability = Pr(Class_i|Object)
- 마지막 output 사이즈가 7X7X30으로 나오게되는데 이때 7x7은 첫 input에서 이미지를 7x7그리드로 나눈것과 동일한 대칭을 해주기 위해서다
- 채널이 30개인 이유는 각 그리드에 대해서 2개의 Bounding box가 있는데 그 Bounding box를 각각 표현하기위해 총 5X2개의 channel이 사용되고 PASCAL VOC dataset을 사용하였기때문에 나머지 20개의 channel은 클래스의 개수다.
- YOLO는 background의 여부를 포함하지 않는다
inference
첫번째 바운딩박스의 confidence score와 20개의 클래스 수를 곱해서 나온 결과는 첫번째 바운딩박스가 해당 클래스일 확률을 나타난다
위와같이 계산하면 각 그리드마다 2개의 그리드셀을 만들어낸다
총 98(7X7X2)개가 만들어진다
나온 98개의 그리드셀을 Threshold로 걸러내고 descending한다
나온 박스를 대상으로 NMS연산을 수행한다
그렇게 남아있는 박스들을 Object에 그려주면 inference가 끝난다
Loss
람다는 밸런스를 조절하는 term
1) Localization Loss
- 첫 시그마 2개: 각 grid cell에 각 박스별로 , 중심점을 예측한다
ex) 0번째 gridcell에서 0번째 박스가 object를 포함하고있을때의 중심점의 위치를 regression loss를 사용
- +부분 : 각 grid cell별로 각 박스에 object가 있을 때 width와 height를 regression loss를 사용
2) confidence Loss
- 각 그리드셀에 각 박스별로 object가 있을때 confidence 스코어를 계산한다
- 각 그리드셀에 각 박스별로 object가 없는 박스를 대상으로 confidence 스코어를 계산한다
3) Classification Loss
- 각 그리드셀별로 object가 있을 때 클래스에대한 MSE를 계산
2.3 Results
YOLO가 background 에러가 비교적낮기때문에 YOLO를 거치고 Faster Rcnn사용하는 앙상블기법을 이용하면 더 나은 성능을 기대할 수 있다
장점
- Faster R-CNN에 비해 6배 빠른 속도
- 다른 real-time detector에 비해 2배 높은 정확도
- 이미지 전체를 보기 때문에 클래스와 사진에 대한 맥락적 정보를 가지고 있음 -> 백그라운드 에러가 낮음
- 물체의 일반화된 표현을 학습
- 사용된 dataset외 새로운 도메인에 대한 이미지에 대한 좋은 성능을 보임
3. SSD
3.1 Overview
YOLO의 단점
- 7x7 그리드 영역으로 나눠 Bounding box prediction 진행
→ 그리드보다 작은 크기의 물체 검출 불가능
- 신경망을 통과하며 마지막 feature만 사용
→ 정확도 하락
YOLO vs SSD
YOLO는 Fully Connected때문에 어느정도 속도를 느리게 만들지만 SSD는 1x1 conv를 사용해서 좀더 나은 성능을 보임
YOLO는 마지막 레이어에서 Detection을 하지만 SSD는 extra conv를 수행함으로 각 conv에 대하여 detection을 수행
SSD 특징
- Extra convolution layers에 나온 feature map들 모두 detection 수행
- 6개의 서로 다른 scale의 feature map 사용
- 큰 feature map (early stage feature map)에서는 작은 물체 탐지
- 작은 feature map (late stage feature map)에서는 큰 물체 탐지
- Fully connected layer 대신 convolution layer 사용하여 속도 향상
- Default box 사용 (anchor box), 서로 다른 scale과 비율을 가진 미리 계산된 box 사용
3.2 Pipeline
Network
- VGG - 16 (backbone) + Extra convolution Layers
- 입력 이미지 사이즈 300 x 300
5X5 feature로 예시를들어보면
256채널을 3X3 conv로 채널을 변경해준다
C = NBbox *(offsets + Nc)
- offsets = cx, cy, w, h (4)
- Nc = numclasses(20) + background(1)
- SSD는 background를 포함한다
- 그래서 토탈 25개를 예측하게된다
NBbox = Different scale per feature maps(Smin = 0.2, Smax = 0.9, m =6)
0.2~ 0.9까지 선형적으로 스케일을 늘려간다
예시
이렇게 6개의 default box를 활용하게된다
Default Box
- feature map의 각 cell마다 서로 다른 scale, 비율을 가진 미리 정해진 box 생성
- Faster R-CNN의 anchor box와 유사
모델은 총 8732개의 defaultbox를 사용하게된다
큰 피쳐맵에서는 작은물체 탐지에유리
Training
• Hard negative mining 수행
• NMS(Non maximum suppression) 수행
3.3 Results
4. YOLO Follow-up
4.1 YOLO v2
3가지 파트에서 model 향상
- Better: 정확도 향상
- Faster: 속도 향상
- Stronger: 더 많은 클래스 예측(80 -> 9000)
1) Better
• Batch normalization
• mAP 2% ↑
• High resolution classifier
▪ YOLO v1: 224x224 이미지로 사전 학습된 VGG를 448x448 Detection 태스크에 적용
▪ YOLO v2 : 448x448 이미지로 새롭게 finetuning
▪ mAP 4% ↑
▪ Convolution with anchor boxes
▪ Fully connected layer 제거
▪ YOLO v1 : grid cell의 bounding box의 좌표 값 랜덤으로 초기화 후 학습
▪ YOLO v2 : anchor box 도입
• K means clusters on COCO datasets
• 5개의 anchor box
▪ 좌표 값 대신 offset 예측하는 문제가 단순하고 학습하기 쉬움
▪ mAP 5% ↑
▪ Fine-grained features
▪ 크기가 작은 feature map은 low level 정보가 부족
▪ Early feature map은 작은 low level 정보 함축
▪ Early feature map을 late feature map에 합쳐주는 passthrough layer 도입
▪ 26x26 feature map을 분할 후 결합
▪ Fine-grained features
▪ 크기가 작은 feature map은 low level 정보가 부족
▪ Early feature map은 작은 low level 정보 함축
▪ Early feature map을 late feature map에 합쳐주는 passthrough layer 도입
▪ 26x26 feature map을 분할 후 결합
• Multi-scale training
▪ 다양한 입력 이미지 사용 {320, 352, …, 608}
▪ ≠ multi-scale feature map
2) Faster
• Backbone model
• GoogLeNet → Darknet-19
• Darknet-19 for detection
▪ 마지막 fully conected layer 제거
▪ 대신 3x3 convolution layer로 대체
▪ 1x1 convolution layer 추가
▪ channel 수 125 (=5 x (5+20))
2) Faster
▪ Classification 데이터셋(ImageNet), detection 데이터셋(Coco) 함께 사용
▪ Detection 데이터셋 : 일반적인 객체 class로 분류 ex) 개
▪ Classification 데이터셋 : 세부적인 객체 class로 분류 ex) 불독, 요크셔테리어
• “개”, “요크셔테리어”, 배타적 class로 분류하면 안된다.
• WordTree 구성 (계층적인 트리)
▪ Ex. “요크셔테리어” = 물리적객체(최상위 노드) – 동물 – 포유류 – 사냥개 – 테리어(최하위 노드)
▪ ImageNet 데이터셋과 CoCo 데이터셋 합쳐서 구성 : 9418 범주 • ImageNet 데이터셋 : Coco 데이터셋 = 4: 1
▪ Detection 이미지 : classification loss는 특정범주에 대해서만 loss 계산
ex. 개 이미지 : 물리적객체 – 동물 –포유류 – 개 에 대해서 loss 계산
▪ Classification 이미지 : classification loss만 역전파 수행 (IoU)
4.2 YOLO v3
Backbone을 Darknet53으로 변경
• Skip connection 적용
• Max pooling x, convolution stride 2사용
• ResNet-101, ResNet-152와 비슷한 성능, FPS 높음
Multi-scale Feature maps
▪서로 다른 3개의 scale을 사용 (52x52, 26x26, 13x13)
• Feature pyramid network 사용
▪ High-level의 fine-grained 정보와 low-level의 semantic 정보를 얻음
5. RetinaNet
5.1 Overview
1-Stage가 가지고있는 문제점을 해결한 paper
1-Stage Detector는 RPN이 없고 Grid별로 bounding box를 무조건 예측하게 한다
그래서 background를 잡는 경우가 더 유력하게 생긴다 -> class imbalance 문제
▪ Class imbalance
▪ Positive sample(객체 영역) < negative sample(배경영역)
▪ Anchor Box 대부분 Negative Samples (background)
▪ 2 Stage detector의 경우 region proposal에서 background sample 제거 (selective search, RPN)
▪ Positive/ negative sample 수 적절하게 유지 (hard negative mining)
5.2 Focal Loss
Cross entropy에 scaling factor를 추가함
• 새로운 loss function 제시 : cross entropy loss + scaling factor
• 쉬운 예제에 작은 가중치, 어려운 예제에 큰 가중치
• 결과적으로 어려운 예제에 집중
'부스트캠프 AI Tech 2기 > 2기 CV P-Stage-Objectdetection' 카테고리의 다른 글
Advanced Object Detection 1 (0) | 2021.10.05 |
---|---|
EfficientDet (0) | 2021.10.02 |
Neck (0) | 2021.09.30 |
MMDetection & Detectron2 (0) | 2021.09.29 |
2-Stage Detectors (0) | 2021.09.28 |