아키텍처, 학습방법, 성능개선전략
Abstract
- YOLO9000(can detect 9000 categories), SOTA(state of the art)
- both novel and drawn from pior work
- Using a novel, multi-scale training method
- art detection like PASCAL VOC and COCO
- 67FPS_76.8mAP, 40FPS_78.6mAP
- 학습방법: jointly train on object detection and classification
- 핵심 아이디어: Better, Faster, Stronger
Better
- Batch normalization
- 기울기 소실 문제 해결 2가지 중 1개에 속한다. (2015, 레즈넷_레즈 듀얼 모듈)
- Conv가 수행되고 난 뒤에 Batch norm이 들어간다. (mAP를 2% 향상)
- shape의 변화는 없으나, 성능이 좋아진다.
- 배치 기준의 평균과 표준편차를 계산해서 동일한 shape의 결과 값을 만들어 낸다.
- 1단계 정규화: (X-m)/s
- 2단계 스케일링 & 쉬프트: rx+b
감마와 베타는 Cost가 낮아지는 방향으로 학습시키는 파라미터 - Internel covariate shift 라고 불리는 문제를 해결한 것이다.
- Covariate: 공변량 (->데이터)
- Covariate shift problem: 공변량 이동 문제 (-> 데이터 분포 변형 문제: 학습데이터와 테스트 데이터의 차이가 심한 상태. 학습한 대로 문제가 나오지 않음.)
- Internel covariate shift: 내부 공변량 이동 문제 (모델 안에서 레이어들의 피처맵 간의 차이가 심한 상태 -> 깊어질수록 심각해짐. 선형적으로 자연스럽게 바뀌지 못함.)
- High Resolution Classifier
- yolov1의 분류는 224x224 이미지, 디텍션은 448x448 이미지로 학습된 모델을 전이학습 함. -> 2단계로 나누어 학습시키자.
- 448 x 448 이미지로 분류 모델을 전이학습.(10epoch)
- 디텍션 모델로 변경하여 추가 전이학습.
- Convolutional with Anchor Boxes
- BBOX의 width, height에 초기값을 주고 학습
- 정답 w, h과 예측 w, h의 차이: 초기 학습시에는 차이가 클 것이다.
- 정답 bbox들의 w, h값들 -> 분포를 계산 -> w,h 초기값 세팅
- 문제의 좌표를 찾지 않고 offset을 조정
- 초기값으로 width=0.35, height=0.6
- 예측을 초기값 기준 상대값으로 예측
- width=0.35+@, height=0.6+@
- Dimension Cluster
- Anchor boxes 좌표 x, h 산출방법:
정답 w, h들을 가지고 적당한 군집화를 하여, 군집별로 평균값을 낸다면 해당 문제를 완화하여 보다 나은 w, h 초기값을 선택할 수 있다. - 군집화
- k-means 방법론
- k: 군집의 개수 (사용자가 선택)
- 각 군집의 중심 값을 임의로 설정
(데이터 중에서 하나를 중심 값으로 잡아도 된다.) - 모든 데이터를 모든 중심 값과 거리를 계산 -> 가까운 중심값의 군집으로 군집화 수행
- 각 군집의 데이터들의 실제 중심값을 다시 계산
- (반복) 다시 모든 데이터를 각 중심 값과 거리를 계산, 다시 군집화, 실제 중심값 다시 계산
- yolov2는 k=5, 즉 5쌍의 (w, h)가 나온다.
- yolov2는 bbox가 5개다.
- Direct location prediction
- 각 그리드 별로 x, y값을 추론하는 방식을 개선한 기법이다. 각 그리드 안에서 상대적인 위치를 확률값으로 추론하는 방식이다.
- 각 그리드의 좌측 상단 좌표(Cx, Cy) 로부터 얼마만큼 떨어져 있는지를 확률값으로 계산한다.
- 기존 yolo v1 에서는 x, y 값이 해당 그리드 영역을 벗어나는 것을 통제하지 못했다. 이 방식은 무조건 해당 그리드 안에서만 추론이 가능하게 한다.
예측값 = 0, 0 -> 좌측상단 / 예측값 = 1, 1 -> 우측 하단 - Fine-Grained features
- shape의 크기가 큰 상태는 더 작은 값을 잘 잡아 낼 수 있음.
- Layer를 진행해 나가는 중에 feature-map의 크기가 26x26이 되었을 때, 13x13 크기로 4분할 하는 작업을 추가한다. 그리고 Conv, pool없이 채널방향으로 이어붙인다.
- 26 x 26 x 512 -> 13 x 13 x 2048
- 맨 마지막 피처맵 (13 x 13 x 1024)에 13 x 13 x 2048을 붙여줌
- Multi-Scale Training
- Yolo v2 모델 구조를 다시 보면, 처음부터 끝까지 convolution layer 와 pooling layer로만 이루어져 있음을 알 수 있다. 즉 FC layer가 없기 때문에, 입력 이미지의 크기를 다양하게 학습할 수 있다.입력 이미지의 크기를 다양하게 학습한다는 것은 다양한 크기의 오브젝트에 대한 일반화된 학습이 가능하다는 것이다.
Faster
Darknet-19 라는 독자적인 모델을 Backbone network로 사용
: 1x1 conv층이 많다. -> 경량화된 모델: 속도에 유리
Stronger
detection과 classification의 레이블 수준이 다른 경우에 계층적인 트리인 word tree 방법론을 제안
아키텍쳐
- Yolov1: (64x64 : 1x1)
- 448 x 448 x 3 -> 7 x 7 x 256
- Yolov2: (32x32 : 1x1)
- 416 x 416 x 3 -> 13 x 13 x 125
- 13x13이 되면서, 작은 물체를 v1보다는 더 잘 잡을 수 있다.
- 추가로 26x26 (13번째 conv)를 Fine-Grained features 하여 합친다.
IOU Loss = 1 - IOU
1. 정답과 예측이 겹쳐지는 범위가 작아질수록 IOU Loss는 커진다. 그러나, 겹쳐지는 범위가 없더라도 차등을 주려면 어떡해야 할까?
2. 중심과 중심 사이의 거리 반영
3. 종횡비 반영
Tags:
AI개발_교육