K-디지털 플랫폼 AI경진대회 with HRDK&MS 참가 및 수상 후기

My_oyster_house·2024년 4월 9일

대회 소개

약 한 달간의 예선과 1박 2일의 본선으로 구성된 해커톤이었다. 예선에서는 프로젝트 계획서를 제출했고, 프로젝트 계획서와 AI-900 자격증 점수를 종합하여 본선 진출자가 정해졌다. 팀이 함께 올라가지 못해 본선에서는 예선 프로젝트 계획서를 사용할 수 없었다.

🩸 프로젝트 소개

  • 프로젝트명: FlowAble: 시각장애인 월경 환경 개선 애플리케이션
  • 목적: 시각장애인의 월경권 개선
  • 개발기간: 2023.12.12-13 (1박 2일 해커톤)
  • 주요 기능:
    1. 생리대 정보 제공
      • 생리대 정보를 실시간으로 인식하고 TTS로 출력
    2. 월경혈 감지
      • 월경혈과 분비물을 구분하고 TTS로 출력
    3. 위생용품 수거함 탐지
      • 공중화장실의 위생용품 수거함을 인식하고 TTS로 출력

🩸 성과

기술스택

  • 프론트엔드: React, JavaScript
  • 백엔드 : Python, Flask
  • AI Modeling: Python, Microsoft Azure AI

성과

  • 국내 브랜드 평판 상위 26종의 생리대를 모두 인식하기
  • 배경, 손, 생리대 등의 노이즈를 극복하고 월경혈을 잘 인식함
    • elbow, silhouette, loss 등 3가지 method를 사용하여 모델 성능 향상
  • 모든 위치에서 잘 탐지할 것, 웹크롤링으로 데이터셋 구축
    • 화면 9분할로 섬세한 위치 반환 가능

성과를 인정받아 장려상 수상!

🩸 회고

팀원들과의 코드 리뷰와 의견 교환이 재미있었던 해커톤

  • 이틀 동안 진행된 짧은 해커톤에서 서로의 코드를 리뷰하고 의견을 주고받으며 협력의 재미를 느꼈다.
  • 군집화를 위해 세 가지 방법(elbow, 실루엣 지수, 손실 함수)을 시도했다. 이틀이라는 짧은 시간 내에 기능 구현을 빠르게 하기 위해 여러 방법을 고민하던 중, 다른 엔지니어 친구의 제안으로 손실 함수를 추가로 시도하게 되었다.
  • 이를 통해 모델의 성능을 증명하고 뒷받침할 수 있었다.
  • 나도 object detection 코드를 리뷰하며 위치 반환 방식을 4분할에서 9분할로(왼쪽, 오른쪽, 상단, 하단, 왼쪽 상단, 오른쪽 상단, 왼쪽 하단, 오른쪽 하단) 제안하여 더 섬세한 위치 반환이 가능하도록 개선했다.

비지도 학습 모델의 성능 지표 고민

  • 예상 k 값을 설정하고, 이에 가까운 k 값을 보인 방법을 채택했다.
  • 하지만 이 예상 k 값이 육안으로 본 색상과 일치하는지를 확인하는 것이 어려웠다.
  • 예를 들어, 한 사진에서 손, 배경, 생리대가 보이기 때문에 살구색, 파란색, 하얀색 이렇게 3가지 군집이 생길 것이라고 판단했다.
  • 색상 전문가가 아니고, 주관적인 의견이 들어가기 때문에 정확한 기준을 설정하는 것이 매우 애매했다.
  • 또한 3가지 샘플에 대해서 성능 점검을 했는데 이틀 동안 진행된 해커톤에서도 매우 힘든 작업이었다. 더 많은 샘플에 대해 점검하면 좋겠지만, 부족한 리소스로는 한계가 있었다.
  • 성능 점검을 사람의 판단과 모델의 판단이 일치하는지로 계산했기 때문에 여러 가지 한계가 있었다.

적절한 성능 지표 찾기: 정확도와 재현율

  • Microsoft Azure AI를 활용한 object detection 모델에서 재현율(recall)은 100%에 가깝게 나오지만, 정확도는 낮은 문제가 있었다.
  • 당시 object detection을 담당한 친구가 다양한 검색어로 추가 크롤링을 통해 데이터를 수집하여 해결했다.
  • 회전, 크기 조절, 밝기 변화, 사진 왜곡 등의 data augmentation을 제안했지만, 시간의 한계로 할 수 없었던 점이 아쉬웠다.
  • 데이터셋에 양성 데이터(쓰레기통이 있는 데이터)만 포함되어 있었기 때문에 정확도를 높이는 데 한계가 있었다.
  • 전체 예측 중에서 얼마나 많은 예측이 맞았는지를 측정하는 정확도는 True Positive(TP)와 True Negative(TN)의 비율을 기반으로 한다. 그러나 True Negative(TN)에 대한 학습이 전혀 없었다.
  • Azure AI가 정확도를 어떻게 판단하는지 모르기 때문에 좀 더 정밀한 성능 지표 설정이 필요하다고 생각했다.

Color Detection에서 아쉬운 점

  • 임계값 100을 기준으로 붉은색을 판별하는 것으로 월경혈을 감지하는 모델을 만들었다.

  • 혈액을 사용하는 여러 건강 앱들을 찾아볼 수 있었는데, 그중에서 가장 참고가 많이 되었던 것은 월경혈의 색깔을 월경 시기와 건강 상태 등으로 5가지로 나누어 건강을 진단한 사례였다.

    국내특허: 생리대를 촬영한 영상 정보에 기초한 건강 진단방법, 이를 위한 컴퓨터 프로그램-KR102240380B1

  • 다만 의학적, 과학적 지식이 전무한 일반인으로서 혈액을 판단하는 기준을 정하는 건 쉽지 않은 일이었다.

  • 대회가 모두 끝나고 아쉬운 마음에 멘토님께 추가적인 피드백을 부탁드렸는데, 너무 잘했다는 칭찬과 함께 '붉은색인데 혈액이 아닌 노이즈'는 어떻게 할 것인가 하는 한계점을 짚어주셨다. 안그래도 아쉬운 점이었는데 ㅜㅜ

  • 의학적 정보나 도움이 제공된다면, RGB 값뿐 아니라 색조, 화면 공간 등 설정을 추가하여 모델을 발전시키면 좋을 것 같다.

이번 해커톤은 짧은 시간 내에 많은 도전을 해볼 수 있는 좋은 기회였다. 팀원들과의 협업과 코드 리뷰를 통해 문제를 해결하고 성능을 개선하는 과정이 매우 유익했다. 특히, 비지도 학습 모델의 성능 지표 설정과 object detection 모델의 성능을 높이기 위한 다양한 시도를 통해 많은 것을 배울 수 있었다.

그러나 color detection에서 임계값 설정의 어려움과 의학적, 과학적 지식의 부족으로 인한 한계점도 느꼈다. 앞으로는 더 많은 데이터를 수집하고, 전문가의 도움을 받아 모델의 정확성과 신뢰성을 높이는 방향으로 나아가야겠다. 이러한 경험을 통해 더욱 발전할 수 있는 계기가 되었고, 향후 프로젝트에도 큰 도움이 될 것이라고 생각한다.

profile
kwonhs.alice@gmail.com

0개의 댓글