yolo v1
- yolo v1은 입력 이미지를 SxS grid로 나누고 각 Grid의 Cell이 하나의 object에 대한 Detection 수행
- 각 Grid Cell이 2개의 bounding box 후보를 기반으로 object의 bounding box를 예측
Yolo-v1 네트웤 및 prediction 값
- inception net 적용 / 1x1
- backbone이 없다. - 2015년 당시 sota는 vgg를 많이 썼다.
- 2차원 convolution된 3차원 feature map을 dense하게 만든다
- 그걸 reshape해서 7x7하고 detection
=> 7x7x30 > 30의 정보
각 grid cell 별로 아래를 계산
ㄱ. 2개의 bounding box 후보의 좌표와 해당 box별 confidence score
- x, y, w, h : 정규화된 bbox의 중심 좌표와 너비 / 높이
- confidence score = 오브젝트일 확률 * IOU 값
ㄴ. 클래스 확률 : Pascal VOC 기준 20개 클래스의 확률
YOLO V1 LOSS
BBOX중심 X, Y 좌표 LOSS,
- 예측 좌표 x, y 값과 Ground Truth 좌표 x, y값의 오차 제곱을 기반
- 모든 cell의 2개의 bbox(98개 bbox) 중에 예측 bbox를 책임지는 bbox만 loss 계산
- 98개 bbox중 오브젝트 예측을 책임지는 bbox만 1, 나머지는 0
( 책임지는 bbox만 계산하고 아닌애들은 0으로 처리
BBOX 너비 w, 높이 h Loss
- 예측 너비, 높익밧과 Ground Truth 너비, 높이값의 오차 제곱을 기반으로 하되, 크기가 큰 오브젝트의 경우 오류가 상대적으로 커짐을 제약하기 위해서 제곱근을 취함
- 루트를 쓰는건 bbox를 잘못예측 했을 때 많이 잘못했을 때
coord => 가중치를 곱해라, 5 곱
noobj 0.5 곱
Object Confidence Loss => 독특한 loss
- 예측된 object confidence score와 ground Truth의 IOU의 예측 오차를 기반
- Object를 책임지는 bbox confidence loss + object가 없어야 하는 bbox의 confidence loss
Classfication Loss => bbox 계산
- 예측 classification 확률 오차의 제곱. object를 책임지는 bbox만 대상
NMS
One-stage는 대게 많이 예측하고 NMS로 필터링하는 전략
Two-stage는 예측하고 확정하는 전략
개별 class별 NMS 수행
1. 특정 confidence 값 이하는 모두 제거
2. 가장 높은 confidence 값을 가진 순으로 bbox 정렬
3. 가장 높은 confidence를 가진 bbox와 iou와 겹치는 부분이 iou threshold보다 큰 bbox는 모두 제거
4. 남아있는 bbox에 대해 3번 step을 반복
이슈
detection시간은 빠르나 detection 성능이 떨어짐
특히 작은 object에 대한 성능이 나쁨
=> 한셀이 한 object를 담당하기 때문에 2개 object가 들어가면 아예 인식 못함
=> 구조적 문제
'Computer_Science > Computer Vision Guide' 카테고리의 다른 글
7-6~7. YOLO V3 (0) | 2021.10.25 |
---|---|
7-4~5. YOLO V2 (0) | 2021.10.25 |
7-1. YOLO - You Only Look Once (0) | 2021.10.24 |
6-7~8. TF hub pretrained model SSD Inference (0) | 2021.10.22 |
6-6. TensorFlow hub (0) | 2021.10.22 |