Object detection mAP 측정방법
해당 문서는 Object detection의 성능 평가를 위한 mAP측정 tool 사용방법을 안내하는 문서 입니다.
해당 방법은 YOLO를 기준으로 설명합니다.
mAP tool 다운로드
git clone <https://github.com/Cartucho/mAP.git>
YOLO 의 test set detection result 생성
(해당 문서에서는 test set을 따로 두지않고, train set에서 사용된 데이터를 그대로 사용)
YOLO mark에서 추출되는 절대경로로된 labeling image list 텍스트파일 준비
darknet폴더에 result.txt로 해당 이미지 목록의 detection 결과를 추출
./darknet detector test custom/ground.data custom/ground_yolov4.cfg ground_yolov4_best.weights -dont_show -ext_output < custom/ground_train.txt > result.txt
result.txt 파일 생성
result파일로 yolo detection result파일 생성
cp result.txt /home/govis/mAP/scripts/extra
cd /home/govis/mAP/scripts/extra
python convert_dr_yolo.py
mAP/input/detection-results 폴더에 파일이 생성되었는지 확인
Ground truth 데이터 set 생성
mAP/scripts/extra 폴더 안에 class_list를 데이터의 객체이름으로 변경
사용하는 darknet폴더의 names파일 내용을 복사해서 붙여넣기 해주면 된다.
기존에 있던 파일 전부 삭제 및 이미지 폴더 생성
cd /home/govis/mAP
rm -rf input/ground-truth/*
rm -rf input/images-optional
mkdir input/images
ground-truth 데이터와 images 데이터 이동
cp /media/govis/extra/vision_project/Yolo_mark/x64/Release/data/ground/*.txt input/ground-truth
cp /media/govis/extra/vision_project/Yolo_mark/x64/Release/data/ground/*.jpg input/images
이동 되었으면 다시 convert 파일 실행
cd scripts/extra
python convert_gt_yolo.py
mAP/input/ground-truth 폴더안에 backup 이란 폴더가 생성되면 convert가 잘 된것임
mAP 측정하기
main.py파일을 열어 50번째 줄 수정
# make sure that the cwd() is the location of the python script (so that every path makes sense)
os.chdir(os.path.dirname(os.path.abspath(__file__)))
GT_PATH = os.path.join(os.getcwd(), 'input', 'ground-truth')
DR_PATH = os.path.join(os.getcwd(), 'input', 'detection-results')
# if there are no images then no animation can be shown
# IMG_PATH = os.path.join(os.getcwd(), 'input', 'images-optional')
IMG_PATH = os.path.join(os.getcwd(), 'input', 'images')
main.py실행
python main.py
실행 중 화면
Output 파일 확인
측정이 완료되면 output 폴더에 다양한 output파일이 생성됨
output/images 에는 측정과정의 이미지들이 저장됨
파란색box가 ground-truth, 초록색 box가 detection-result, 빨간색 box는 ground-truth box이나 detector가 인식하지 못한 box
토핑별 mAP가 터미널 창에 출력
97.41% = Bacon AP
94.10% = Bell_pepper AP
93.15% = Black_olive AP
97.00% = Bulgogi AP
85.12% = Corn AP
87.53% = Crab AP
99.78% = Dough AP
94.08% = Garlic_chip AP
97.51% = Gorgonzola AP
98.43% = Mushroom AP
90.69% = Onion AP
98.19% = Pepperoni AP
97.53% = Pineapple AP
100.00% = SP_cube AP
96.92% = Shrimp AP
98.31% = Slice_ham AP
97.95% = Teriyaki_onion AP
98.05% = Wedge_potato AP
mAP = 95.65%
다양한 그래프 출력
토핑별 AP 및 전체 mAP
ground-truth 대비 가장 miss를 많이한 객체 rate
ground-truth 대비 가장 miss를 많이한 객체 count
토핑별 AP가 계산되는 그래프
(곡선이 완만하거나 일정할수록 정확한 계산이 이루어진다.)
'Computer Vision > Object detection' 카테고리의 다른 글
YOLO v4 , Opencv를 이용해서 간단한 위치판독기 만들기 (12) | 2020.05.20 |
---|---|
YOLO v4 custom데이터 훈련하기 (23) | 2020.05.19 |
Ubuntu 18.04 에서 Yolo v4 설치하기 (11) | 2020.05.19 |
Yolo v3 custom 데이터 훈련하기 (4) | 2020.04.17 |
Yolo v3 설치하기 (0) | 2020.04.17 |