코린이의 공부일기

[Boost Camp] 7강 _ 성능 평가 방식 본문

BOOST CAMP_정리

[Boost Camp] 7강 _ 성능 평가 방식

SOJUNG 2021. 11. 11. 01:02

-내가 제작한 AI모델이 실제로 얼마나 잘 동작하는 파악하는 것은 굉장이 중요하며, 성능 평가를 통해 실무/연구 단계에서 개선해야 할 점은 무엇인지를 파악해야 합니다. 이번 강의에서는 , 성능평가의 중요성에 대해 다시한번 상기시키며, 전반적인 성능 측정 개념, 및 OCR에서 활용되고 있는 여러 평가방식을 소개합니다.

 

 

성능평가란 ?

새로운 데이터가 들어왔을 때 얼마나 잘 동작하는가 ?

= 일반화 성능이 얼마나 좋을까?

 

 

성능평가를 위해 쓰는 대표적 방식 

1. Train - Test split 

학습하지 않은 Test Dataset(Test Dataset)을 따로 두어 트레이닝 후, 성능검사를 하는 방식

2. 5- Fold Cross Validation

5개의 Validation set을 다르게한 모델을 만들어 앙상블하는 방식

 

 

 

추가 분석 방식들

 

 

prediction(예측한 값)과 GT의 값의 경우의 수를 나타낸 표로써 대각선 (빨간 줄)은 정답을 맞춘 셀을 의미

각각 경우의수를 따지며 보안해야할 부분을 찾을 수 있다.

 

 

 

Precision(정밀도) & Recall(재현율) 

 

 

정밀도란 모델이 True라고 분류한 것 중에서 실제 True 인 것의 비율

재현율이란 실제 True인 것 중에서 모델이 True라고 예측한 것의 비율

 

Precision이나 Recall은 모두 실제 True인 정답을 모델이 True라고 예측한 경우에 관심이 있으나 바라보고자 하는 관점만 다른 것이다. 즉 precision은 모델의 입장에서, 그리고 Recall은 실제정답의 입장에서 정답을 정답이라고 맞춘 경우를 바라보고 있는 것 이다.

 

우리는 Precision과 Recall둘다 고려해봐야하며, 둘은 상호보완적으로 사용할 수 있으며 두 지표가 모두 높을 수록 좋은 모델이다.

 

 

 

만일 OCR결과가 다음과 같은 경우에 점수를 매겨본다면?

 

이렇게 주어진 데이터에대해서 정량 평가 방법에 따라 성능측정의 결과가 다르게 나오는 것을 알수가 있다.

그렇게 때문에 하고자하는 서비스에 맞는 정량평가방법을 정해야한다.

(한개의 뿐 아니라 여러개의 정량평가를 할 수도있다)

 

 

 

그렇다면 글자 검출 모델 에서의 정량평가는 무엇이 있는지 확인해보자

 

매칭관계를 각각 모두 파악하여 행렬값으로 채워나가는 방식으로 이 행렬로 부터 예측과 정답사이의 유사도를 하나의 수치로 뽑아내는데 이 것을 스코어라고 한다.

 

즉, 글자 검출 모델 평가를 위해서는 

 

두 영역 간의 매칭 판단 방법(매칭 행렬 계산)

+

매칭 행렬에서 유사도 수치 계산 방법(유사도 계산)

 

 

 

Glossary

 

-> 매칭 행렬에서 유사도 수치 하나를 뽑는 scoring과정속 용어를 정리해보자

 

One-to-One Match

하나의 정답영역에 하나의 예측영역이 매칭되는 것

 

One-to-Many Match(split)

하나의 정답영역에 여러 개의 예측영역이 매칭되는 것

(split case라고도 함)

 

Many-to-One Match (Merge)

여러 개의 정답영역이 매칭되는 것

(merge case라고도한다.

 

 

이제 실제 사용되는 점령 평가방식을 살펴보자

 

 

DetEval(2013)

 

현재 가장많이 사용되는 방법이며

첫 번째 과정에서는 매칭행렬을 채우는 것으로  

모든 정답 영역, 예측 영역 간의 매칭 정도를 areal recall/ area precision 둘 다 계산하며 관계 하나마다 두개의 수치를 확보한다.

그 다음 각 셀 별로 area recall >= 0.8 그리고 precision >= 0.4 조건을 충족시키면 1 아니면 0으로 관계 행렬 값을 바꾼다.

마지막으로 이진행렬 값을 보며 One-to-one 인지 Many-to-one인지 One-to-many인지 관계를 찾아야한다.

 

One-to-Many을 제외하고는 1을 쓰며, One-to-Many는 지양하기위해 1이 아닌 0.8을 사용한다.

 

즉, DetEval에서는 Split방지를 위해서 penalty을 적용해 값을 적용한다.(1 ->0.8)

 

이렇게 각각 적용된 One-to-one, Many-to-one, One-to-Many 값들에 대해서 평균 값을 가지고 최종적인 Precision과 Recall의 값을 계산하고 최종적인 Final Score을 계산한다.

 

 

IoU(2015)

 

one-to-one matching만 허용하는 방법으로 

One-to-one matching이 성립하고 IoU value >0.5일 경우 correct, 그렇지 않는 경우는 incorrect로 mapping한다.

 

 

 

TIoU (Tightness-aware IoU)

 

IoU나 DetEval방식으로 대응이 안되는 경우가 있다 판단하고 새롭게 적용된 방식

얼마나 정답에 가깝게 예측되었는지 확인하는 지표

 

- 부족하거나 초과된 영역 크기에 비례해 IoU점수에 대해 penalty을 부여

- GT의 completeness, 예측 박스의 타이트함을 점수에 반영

-Ground truth가 golden answer라는 가정이 존재

 

 

TIoU = IoU X penalty

 

 

1. 부족한 영역의 경우,

penalty = 부족한 영역 크기 / 정답 영역 크기

-> 정답 영역 기준이므로 TIoU Recall

 

2. 초과한 영역의 경우,

penalty = 초과된 영역 크기 / 예측 영역 크기

-> 예측 영역 기준이므로 TIoU Precision

 

 

 

그치만, TIoU도 한계점이 있다.

 과연 위 그림처럼 TIoU을 적용한 결과 값을 보았을 때,2번 째 케이스에서는 전체 글자를 잡았지만, 3번 째 케이스는 마지막 글자를 잡지 못했는데 동일한 스코어를 부여해도 맞는걸까?

 

 

-> 이러한 동기로 나온 방식이  CLEval방식이다.

 

 

CLEval(Character-LEvel Evaluation)

 

-얼마나 많은 글자(character을 맞추고 틀렸느냐를 갖고 평가

-Detection 뿐 아니라 end-to-end , recongnition에 대해서도 평가가 가능함.

 

CLEval같은 경우에는 글자별 위치 정보를 가지고 계산하는 방식이다

그렇다면 글자하나하나 위치 정보를 어떻게 가져올까?

 

-PCC( Pseudo Character Centers)

 

글자 영역 위치 정보와 글자의 스퀀스를 갖고 글자 별 위치정보를 추정할 수 있다.

 

 

 

우리는 글자수에 대한 정보도 알고있기 때문에 , 글자 영역을 글자수만큼 나누고 영역별 센터 좌표를 구해서 그 글자의 중심 좌표를 구할 수 있다 

-> Pseudo Character Centers라고 한다.

 

 

이를 토대로 CLEval의 Evaluation을 살펴보자

 

Evaluation도 이 전과 마찬가지로 정답영역기준 (Recall)과 예측영역기준(Precision)을 나누어 계산해 값을 도출한다.

 

-정답기준 (Recall)

 

 

-CorrectNum : 정답 영역 내 PCC중 어느 예측 영역이라도 속하게 된 PCC의 개수

(a b c d e f)모두 예측 영역에 속하게 되어있으므로 -> 6

-GranualPenalty : 정답 영역 내 PCC를 포함하는 예측 영억의 개수 - 1

(a b c) (d e f)가 정답영역내 예측 영역의 개수로 2개

-TotalNum :정답 영역 내 PCC 개수

(a b c d e f) 즉 6개

 

 

-예측 기준(Precision)

 

-CorrectNum :이 예측 영역이 포함하고 있는 PCC별로 , 해당 PCC를 포함하는 예측 영역의 개수로 나누어 합함

 

c,d는 예측영역의 개수가 2개니까 Correct num이 1/2로 들어가게 된다.

 

 

-GranualPenalty: 예측영역과 연관된 정답 영역의 개수 -1

(정답 영역의 PCC을 이 예측 영역이 포함하고 있으면 연관있다고 간주)

 

1번 예측영역과 2번 예측영역모두 1개의 정답영역의 개수와 연관되어 있으므로

1개 -1로 적용된다.

 

-TotalNum :이 예측 영역이 포함하고 있는 PCC의 개수

 

1번예측영역 - 4개 

2번 예측영역 -4개

 

 

Summary

 

이렇게 예측영역기준과 정답영역기준의 score을 각각구해 CLEval을 구할 수 있다.

 

 

지금까지 배운 

4가지 성능평가방식을 적용한 예시를 본다면

 

이렇게 각각의 의도와 특징이 다르기 때문에 ,

완벽한 성능평가방식는 존재하지 않는다.

성능평가는 계속해서 개선해야하는 부분이기 때문에 최근 중요도가 학회에서 논문이 점점 늘어나고있는 추세라고 한다.

 

-회고

 

이번 대회에서의 모든 이미지에 대해 Recall, Precision을 matrix으로 mapping해 최종 f1 socre은 모든 이미지 레벨에서의 측정 값의 평균으로 책정된다고 한다.

그렇기 때문에 이 강의를 통해 어떤식으로 Prediction이 진행해야하고, 어떤 Metric으로 검증을 해야할지 공부하고 실험해보며 진행해야겠다.

강의는 들었지만 완벽히 이해한 상태는 아니여서 하나하나 어떤 부분이 취약점이 있는지 확인해보며 공부해야겠다.

우리 팀원들 모두 4가지 책정방식에 대해 내일 피어세션 전까지 최대한 찾아보고 공부해오기로했다.

화이팅..!!!!

 

11월 11일 해야할 일

1. 자기소개서 2문항 완성하기

2. EDA Basecode 돌려보기

3. thundervalley 서버 받아오기 해보기

 

 

모두 대회 화이팅 !  

(❀╹◡╹) ♡

'BOOST CAMP_정리' 카테고리의 다른 글

MLOps  (0) 2021.12.13
AutoML의 이론  (0) 2021.11.23
semantic segmentation 대회에서 사용하는 방법  (0) 2021.10.26
[Boost Camp]MMDetection & Detectron2  (0) 2021.09.29
[Boost camp] 2 Stage Detectors  (0) 2021.09.28
Comments