이미지에서 object들을 detect했는데, 얼마나 정확한지 평가를 해야 합니다. 이를 위해서는 일종의 평가 지표가 필요하죠. AP와 mAP(mean average precision)도 평가의 지표입니다.

이에 대한 상세하고 쉬운 설명은 아래 링크를 참고해 주세요.

https://bskyvision.com/465

 

물체 검출 알고리즘 성능 평가방법 AP(Average Precision)의 이해

물체 검출(object detection) 알고리즘의 성능은 precision-recall 곡선과 average precision(AP)로 평가하는 것이 대세다. 이에 대해서 이해하려고 한참을 구글링했지만 초보자가 이해하기에 적당한 문서는 찾�

bskyvision.com

글쓴이가 전문가라서 그런지, 매우 이해하기 쉽게 설명해 주셔서 처음 접하는 개념인데도 이해하기 쉬웠습니다.

mAP를 구하기 위한 코드로 아래 링크를 제안해 주셨습니다.

https://github.com/Cartucho/mAP

 

Cartucho/mAP

mean Average Precision - This code evaluates the performance of your neural net for object recognition. - Cartucho/mAP

github.com

git 소스에 예제 파일들이 포함되어 있어서, 실행 및 결과를 쉽게 확인할 수 있습니다.

 

원할한 수행을 위해서는 numpy, matplotlib, opencv-python 패키지가 필요합니다.

virtualenv를 이용한 가장 기본적인 환경 설정은 다음과 같습니다.

# virtualenv 환경 설치
virtualenv venv --python=python3
# virtualenv 실행
source venv/bin/activate
# 필요한 패키지 설치
pip install numpy
pip install matplotlib
pip install opencv-python

이후에는 단순히 아래 명령어를 수행하면 됩니다.

python main.py

프로그램이 실행되면서 화면이 계속 변경되는 것을 확인할 수 있습니다.

최종적인 디렉토리 구조는 아래와 같습니다.

├── input
│   ├── detection-results # detection 결과 txt 파일들
│   ├── ground-truth      # object 정보 txt 파일들 (정답)
│   └── images-optional   # 원본 이미지
└── output                # 통계 이미지, output.txt
    ├── classes           # class별 AP 그림
    └── images            # 원본과 detection 결과를 같이 보여 주는 이미지
        └── detections_one_by_one # 각각의 object별 이미지

소스를 처음 받으면 input 폴더와 하위 폴더만 있고, 실행 후에 output 폴더가 생성됩니다.

각 폴더 및 폴더에 포함된 파일들에 대한 상세 설명은 아래와 같습니다.

  • input/detection-results : 모델을 통해서 얻어진 detection 결과값
  • input/ground-truth : ground-truth data. 일종의 정답
  • input/images-optional : 실제 사용한 이미지들
  • output : 통계 이미지. AP, mAP를 위한 실제 데이터 값 (output.txt)
  • output/classes : class별 AP 이미지
  • output/images : detection 정보 및 ground-truth data가 box 형태로 실제 이미지에 표시된 최종 결과 이미지
  • output/images/detections_one_by_one : detection된 내용이 개별적으로 이미지에 표시된 파일

detection-results에 포함된 "이미지파일명.txt" 파일들의 구성은 다음과 같습니다.

class명 confidence xtl ytl xbr ybr
  • confidence : 모델이 해당 class로 확신하는 정도. float. %
  • xtl, ytl : box의 좌측상단 좌표(top left)
  • xbr, ybr : box의 우측하단 좌표(bottom right)

ground-truth에 포함된 "이미지파일명.txt"는 위와 동일한데, confidence만 없습니다.

class명 xtl ytl xbr ybr

다음에는 예제 실행을 통해서 얻은 데이터를 확인하도록 하겠습니다.

 

- End -

반응형

+ Recent posts