IT/디버깅

한진정보통신 인턴 과제 - 안드로이드 카메라 사진 인식 결과가 전처리 되지 않은 문제

happy_life 2024. 6. 6. 12:50

안드로이드 앱에 모델을 적용하였으나, output이 location, classes, scores, detections로 나오지 않고, 688,000 개의 raw data로 나왔습니다. 이에 이 데이터를 전처리해야 했습니다.

 

output 차이

 

 

문제 해결 과정

1. 먼저 이 raw 데이터가 각각 어떤 것을 의미하는 지 확인하는 과정을 거쳤습니다. 이를 위해 공식 문서와 issue의 답변을 참고하였습니다.

답변

 

 

raw data는 8,400개의 grid가 있고 각 grid 마다 class의 예측 confidence_rate를 나타낸 것이었습니다.  하지만 제가 카메라로 탐지한 마약의 개수는 많아야 10개였는데 어떻게 8,400개의 결과가 나타나는지 알 수 없었습니다.

 

이에 yolo8 관련 자료들을 찾아보고, detection model에 대한 정보를 찾아본 결과, raw data는 모든 grid에 대한 정보를 나타내는 것임을 이해했습니다. 또한 이 추가적인 검색을 통해 NMS 알고리즘을 적용해, 중복되는 grid를 없애야 한다는 것을 알게 되었습니다.

 

2. NMS 알고리즘 적용하기

NMS 알고리즘에 대한 개념을 어느정도 숙지한 이후, 메서드를 만들어 중복 grid를 삭제하였습니다. 아래는 제 깃허브 코드의 캡쳐 입니다.

 

NMS 알고리즘 적용 메서드

 

 

이를 메서드 적용을 통해, 원하는 숫자의 grid만 추출해 낼 수 있었고 문제를 해결하였습니다.