카나리아

모두를 위한 군사보안 경보 시스템

개요

프로젝트기간 2021.05 ~ 2021.11

개발인원 5명

담당역할 PM, 핵심알고리즘 개발, ML모델 배포서버 제작, Azure ML 환경 설정 결과 데이터 문제점 분석 및 해결방법 도출. Recall 2%p, Precision 1%p 향상

링크 https://github.com/wonbeomjang/AI_APP_WEB_Canary_Canary_2021 https://www.youtube.com/watch?v=zD_AGme63og https://github.com/wonbeomjang/AI_APP_WEB_Canary_Canary_2021/tree/main/AI(BE)/deeplearning/kwoledge_distillation_yolov5

개발기 1. 팀 결정 및 주제&시스템 설계 2. computer vision 개발 과정 3. 이제 끝나는 건가

내용 본 프로젝트는 2021 군장병 공개SW 역량강화 온라인 해커톤의 출품작으로 전차, 군함, 총기, 문서 등 군사보안위반 가능성 물체들을 모자이크 해주고 이를 알려주는 어플리케이션을 제작했습니다. Object detection을 위해 yolov5를 사용하였으며 mosaic를 mosaic_9으로 바꾸고 self-distillation을 적용하여 Recall을 4.3%p 향상시켰습니다.

프레임워크 Flutter, Node js, Pytorch, Django, Azure ML, Docker


핵심 로직 및 서비스 구조

Flutter, Node js, Libtorch를 사용하여 제작을 하였습니다. 팀원 모두 프로젝트가 처음이라는 것을 감안하여 서비스 아키텍쳐와 로직을 최대한 단순하게 잡았습니다. YOLOv5를 이용하여 object detection후 opencv를 활용하여 이미지를 모자이크하고 경고메시지를 작성하여 node js에게 넘겼습니다. Azure ML은 학습 요청을 queue로 관리하녀 Docker를 통해 실험환경을 구성합니다. 모델이 학습이 완료되면 Django서버에 파라미터와 성능지표가 등록됩니다. Node js가 분석 요청 시 Detection Module은 Django에 성능이 좋은 모델이 있는지 확인하여 있으면 자동으로 다운로드 받습니다.


개발 과정

기술스택

PyTorch OpenCV CVAT Roboflow


Object detection VS Semantic segmentation

  • Semantic segmentation: 사람을 제외한 배경을 처리 난이도: 상대적으로 낮음(사람을 대상으로 학습된 model 사용) 장점: 기존 모델을 사용 시 사람을 깔끔하게 구별 가능 단점: 오직 사람/배경만 구별 가능, 사람 앞의 물체에 대해선 감지하지 못할 수 있음 (ex: 기밀 문서를 들고 있는 사람)

  • Object detection: 학습한 Class들을 사진 안에서 검출하여 처리 난이도: 상대적으로 높음(We need to get dataset, annotate them, train model…) 장점: 여러 다양한 class들을 검출하여 사진의 상황을 대략적으로 파악 가능, 보안 위반 객체는 detect만 된다면 처리 가능(보안성), 사람 이외의 객체들도 살려낼 수 있음 단점: segmentation보다 상대적으로 깔끔하지 못한 사진 처리, 높은 데이터 수집 난이도와 큰 시간 소요

보다 높은 보안성을 중시하기로 결정 –> Object detection

사용 데이터셋

Version 1: ImageNet Object Localization Challenge

문제점

  1. 데이터 수 부족
  2. 대다수 물체가 정중앙 위치
  3. 대다수 물체가 사진 전체를 차지

해결방안 1 - 데이터 추가

Orignal Dataset Add more data

해결방안 2, 3 - augmentation 방법 변경

기존 변경


사용 모델

YOLOv5, Efficientnet, SSGlite 등의 모델들을 고려. 성능과 학습에 들어가는 시간 등을 종합적으로 판단 –> YOLOv5 결정. (Efficientnet: 학습 시간이 지나치게 많이 소요, SSGlite: YOLOv5보다 낮은 성능)

문제점

  1. 낮은 성능
  2. 무거운 모델 (ex. yolov5l6)

해결방안

성능 향상

enhance model precision recall mAP_0.5 mAP_0.5:0.95
Before add dataset yolov5m6 0.602 0.651 0.671 0.535
None (Add dataset) yolov5m6 0.736 0.779 0.815 0.599
mosaic_9 50% yolov5m6 0.736 0.779 0.815 0.599
mosaic_9 100% yolov5m6 0.739 0.813a 0.806 0.594
self distillation yolov5m6 0.722 0.822 0.807 0.592


Original Image Result Image