*본 강의 및 실습 내용은 iflearn의 딥러닝 컴퓨터 비전 완벽 가이드 임을 알려드립니다.
*실습 코드는 제외하였습니다
Object Detection의 이해
localization: 하나의 물체에서 위치를 찾아내는 것이다. 해당 Object의 위치를 회귀로 예측하여 Bounding box를 찾은 후 어느 부류인지 Classification을 진행한다. 즉, 바운딩 박스를 찾기 위한 회귀와 분류가 혼합되어 있다.
detection: 여러 물체의 위치와 해당 물체가 어떤 분류에 속하는지 찾아낸다. detection은 localization와는 다르게 여러 객체의 위치를 찾아야 하는 복잡성이 추가된다.
segmentation: 픽셀 레벨의 탐지 영역이다. 개별 픽셀들이 어떤 객체에 속하는지 찾아낸다(classification 포함)
Sliding Window
여러 객체의 위치를 찾기 위해서 사용되는 방법 Sliding Window
->윈도우를 왼쪽부터 오른쪽으로 스캔하면서 해당 객체가 있는지 보는 것
대표적인 문제점: 찾아야 할 객체가 작고 배경이 대부분이라면 쓸데없는 배경 탐색에 시간/비용 자원이 소모
-> Region Proposal(영역 추정): 스캔하기 전 객체가 있을만한 곳을 추천받는다.
Region Proposal
Region Proposal('객체가 있을만한 후부 영역을 찾자') 방법 중 Selective Search 라이브러리 존재
1 step: 각 픽셀 별로 segmentation을 진행한다.
2 step: 비슷한 segmentation은 그룹핑하는데 무늬, 크기, 형태에 따라 유사한 것 끼리 묶인다. 이 과정을 반복한다.
3 step: 묶인 그룹에 대해여 바운딩 박스로 추천이 된다.
Over segmentation으로, 최대한 많은 바운딩 박스를 만든다. 그 이유는 한 바운딩 박스에 객체 들어 있게끔 하기 위해서이다. 많으면 많을수록 한 바운딩 박스에 객체 하나가 있을 확률이 높아진다.
많은 바운딩 박스를 이제 컬러, 무늬(Texture), 크기(Size), 형태(Shape)에 따라 유사도가 비슷한 Segment들을 위와 같이 그룹핑시킨다. 이를 반복하면 복잡해 보였던 영역들이 몇 군데로 추릴 수가 있게 된다. 이로써 객체 위치를 대략적으로 파악할 수 있다. 이런 과정을 통하여 얻은 바운딩 박스를 평가할 방법들이 필요해진다. Object detection의 성능평가 2가지에 대해서 알아보자
1. Object detection의 성능평가 : IoU(Intersection over Union)
예측 박스와 실제 박스와 얼마나 겹치는지 평가한다.
IoU= 겹치는 박스 구간/ 실제 박스+예측 박스
2. Object detection의 성능평가 : mAP(mean Average Precision)
mAP 설명에 앞서서 먼저 NMS(Non Max Suppression)에 대하여 설명해야 이해하기 수월해진다.
NMS(Non Max Suppression) : 여러 개의 바운딩 박스들 중 비슷하게 겹쳐진 박스들을 제거하여 가장 적합한 박스를 선택하는 기법
Confidence score? 예측된 바운딩 박스 값이 해당 객체일 확률을 말한다. 주황색 자동차 0.9라는 것은 바운딩 박스 안에 객체는 90% 확신으로 차인 것이다. 왼쪽 검은색 차는 0.8을 점수를 보인다.
이때 가장 높은 점수별로 내림차순 한다. 0.9 0.8 0.7... 그러고 나서는 가장 높은 0.9 바운딩 박스와 겹쳐진 빨간 바운딩 박스 간에 IoU를 구한다. 그 후 IoU의 threhold 값 이상이라면 모두 삭제시킨다. 이렇게 되면
0.9 바운딩 박스와 많이 겹치는 박스들은 모조리 삭제가 될 것이다. 이런 과정을 0.9, 0.8, 0.7 순으로 쭉 실행해 나간다.
본론인 mAP를 알기 위해서 한 가지 더 선행 학습이 필요하다. 재현율(Recall)과 정밀도(Precision)이다.
위 내용은 강의 내용인데 코로나로 빗대어 설명해 본다면
정밀도(신중한 놈, 비난사): 100명을 코로나 양성이라고 예측했는데 50명만 양성이 나왔다. 이때 정밀도는 0.5
재현율(신중하지 않는 놈, 난사): 100명의 코로나 양성을 대상으로 검사했는데 50명만 양성이 나왔다. 이때 재현율 0.5 -> 양성자를 빠뜨리지 않고 얼마나 정확히 검출했는지 알 수 있다.
이 둘의 차이점이 중요하다. 정밀도의 핵심은 내가 예측한 것이 분모이다. 다시 말해 내가 양성이라고 예측한 값이 분모이기 때문에 이 분모 안에는 실제로 양성인 사람과 음성인 사람이 같이 혼재되어 있다.
반면 재현율의 분모는 양성인 사람 그 자체이다. 내가 예측한 사람이 아니라 양성인 사람을 데리고 와서 검사를 했을 때 과연 몇 명이나 양성을 판별하는지를 보는 것이기 때문에 검출력을 확인해 볼 수 있다.
TP는 새를 새라고 맞춘 것이며 FP는 False가 있으므로 새라고 예측했지만 틀린 경우이다. 위 세 가지 경우가 틀렸을 때의 모습이다. FN의 N은 예측 클래스에 해당된다. N이므로 예측 조차 하지 않았다는 의미이다.
재현율은 난사, 정밀도는 난사라고 위에서 표현했다. 먼저 난사라는 의미는 바운딩 박스를 있는 대로 찍어서 출력한다는 것이다. 그러면 총 5마리의 새가 무자비한 난사로 인해 모두 바운딩 박스 안에 들어갈 확률이 높아진다. 이렇게 되면 재현율은 증가한다. 반면 비 난사인 정밀도는 신중하게, 아주 확실하다 싶은 객체만 바운딩 박스 친다. 즉, Confidence 값이 큰 것들만 바운딩 박스를 친다. 위와 아래 그림은 Confidence 값에 따른 정밀도, 재현율 변화를 나타낸다. 개인적으로는 단순히 글보다는 이 그림들 보고 나서 이해하기가 수월했다.
이때, 위 결과를 토대로 AP(Average Precision)를 구할 수 있다.
원래는 왼쪽 표대로 그린다면 파란색 선처럼 지그재그로 표현된다. AP 값을 구하기 위해서 빨간 박스처럼 지그재그 중 가장 튀어나온 값을 연결하여 AP를 구한다.
그렇다면 mAP는 무엇인가?
*AP는 한 개 오브젝트에 대한 성능 수치
*mAp(mean Average Precision) 은 여러 오브젝트들의 AP를 평균한 값
마지막으로 아래 그림을 설명하게 끝 마치겠습니다.
IoU threshold 값이 커질수록 재현율이 감소한다. 다시 말해서 난사되는 바운딩 박스가 사라진다는 것이다.
IoU는 겹치는 구간을 비율로 나타낸 것이다. 따라서 IoU threshold값이 0.95라는 것은 예측한 박스와 실제 박스의 겹치는 구간이 95% 이상 일치해야 한다는 것이다. 이게 일치하지 않으면 취급하지 않겠다는 것이다. 이 기준으로 위 그림을 보자,
IoU 기준값이 0.95라면 난사되는 박스들은 사라지게 되고 95% 이상 일치되는 것들만 남게 된다. 즉 정밀도는 올라가고 재현율은 감소하게 된다.
'Data Diary' 카테고리의 다른 글
2021-07-07(3. RCNN 계열 Object Detecter(RCNN, SPPNet, Fast RCNN, Faster RCNN)) (0) | 2021.07.07 |
---|---|
2021-07-06(2. Object Detection과 Segmentation을 위한 주요 데이터 세트 및 OpenCV 소개) (0) | 2021.07.06 |
2021-06-30(R 데이터 분석_6(SVM)& 태양열예측 마지막) (0) | 2021.06.30 |
2021-06-25(태양열예측28) (0) | 2021.06.26 |
2021-06-24(태양열예측27) (0) | 2021.06.24 |