객체 검출 모듈 연구
많은 소타모델이 있지만, 현실적으로 관리되지 않는 디텍션 모듈(안정되지 않은)을 운영단계에서 도입할수 없음. 오픈소스로 잘 관리되고 있는 yolov5를 채택하는것이 맞을것으로 보임.
모델명 | 데이터셋 | 성능 | eval 결과 (mAP) | 비고 |
---|---|---|---|---|
DAB-DETR | coco test-dev | box AP 63.3 | mAP50 61.6 mAP 44.8 |
전체 코드 없음 |
SwinV2+HTC | coco test-dev | box AP 63.1 | swinv2 아직 mmdetection 지원 x | |
YOLOv5x6 + TTA | coco eval | mAP 55.8 | mAP50 70.8 mAP 55.5 |
무 |
YOLOR-D6 | coco dataset | mAP 57.3 | mAP50 68.5 mAP 52.6 |
무 |
YOLOX-s | Argoverse-HD dataset | AP 40.5 | mAP50 61.5 mAP 45.3 |
무 |
YOLOX-x | Argoverse-HD dataset | AP 51.1 | mAP50 70.7 mAP 55.5 |
무 |
DynamicHead | coco dataset | COCO mAP 49.8 | mAP50 68.4998 mAP 49.6351 |
무 |
GLIP-L | FourODs,GoldG,CC3M+12M,SBU | COCO mAP 51.4 | inference 속도가 약 0.25s 이기에 매우 느림. real time으로 활용하기에는 부적합 | |
YOLOv7 | coco dataset | AP 51.4 | mAP50 70.7 mAP 55.1 |
무 |
YOLOv7-e6e | coco dataset | AP 56.8 | mAP50 72.1 mAP 57.1 |
무 |
위의 모델들에 대해 테스트하는 데이터셋에 대한 공개 여부는 비공개입니다. 자체 데이터셋으로 학습한 결과 및 학습 데이터셋 자체 역시 비공개입니다.
- mp: mean precision
- mr: mean recall
- map50: mean average precision (IOU Threshold = 0.5)
- map: mean average precision (0.05의 단계 크기로 0.5부터 0.95까지의 IoU에 대한 평균 AP)
python calc_map.py target_path=디텍션 결과가 저장된 json 파일 위치
해당 코드는 아래 dictionary 형태로 detection 툴의 출력을 넘겨받아 작업합니다.
# x1, y1: left top (float)
# x2, y2: right bottom (float)
# conf: 예측 confidence (float)
# cls: class index (float)
detection 결과 리스트 = [[x1, y1, x2, y2, conf, cls], [x1, y1, x2, y2, conf, cls]]
# 해당 딕셔너리들을 담은 리스트를 json 파일로 dump 하여주세요
files = sorted(glob('path/to/directory/*'))
dict_list = []
for file in files:
detection_result = model(Image.open(file))
pred_dict = {"img_name": 이미지 절대경로(string), "pred": detection 결과}
dict_list.append(pred_dict)
with open('test.json', 'w') as f:
json.dump(dict_list, f)