비전 AI 해커톤 1등 수상자는 무엇을 만들었을까? SEEN, PPE 탐지 넘어 산업안전 의사결정으로

Superb AI × B.D.A.I 비전 AI 해커톤 1등 SEEN은 이미지 2만 장과 어노테이션 19만 개로 만들어졌다. 물류센터에서 본 위험 구역 문제를 PPE 탐지 서비스로 옮기고, 4주 만에 mAP50 0.843 모델과 대시보드까지 완성한 과정을 정리한다

비전 AI 해커톤 1등 수상자는 무엇을 만들었을까? SEEN, PPE 탐지 넘어 산업안전 의사결정으로
물류센터에서 발견한 문제는 어떻게 2만 장이 넘는 데이터와 19만 개의 어노테이션을 거쳐 하나의 비전 AI 서비스가 되었을까요? 이번 글에서는 SEEN을 만든 설영은 님의 이야기를 통해 서로 다른 데이터셋의 기준을 통합하고, 서비스에 필요한 성능 지표를 정하고, 프로젝트에 적합한 모델을 학습해 실제 서비스로 연결하기까지의 과정을 살펴봅니다.

지난 8월, Superb AI × B.D.A.I Vision AI 해커톤이 최종 발표를 끝으로 마무리됐습니다.

이번 해커톤에서는 참가자들이 아이디어를 제안하는 데서 끝나는 것이 아니라, 직접 데이터를 모으고 정리하는 것부터 라벨링, 모델 학습과 검증, 실제 서비스 구현까지
4주 동안 비전 AI 프로젝트의 전 과정을 경험했는데요.

총 202명이 해커톤에 등록했고, 최종 발표에는 24명이 참여했습니다. 그중 3개 팀이 최종 수상팀으로 선정되었죠.

해커톤이 끝난 뒤에는 1등을 수상한 설영은 님(이화여대, 3학년 재학)을 만나 프로젝트에 관한 조금 더 자세한 이야기를 들어봤습니다.

영은님의 프로젝트 'SEEN'의 최종 발표

영은 님은 이번 해커톤에서 SEEN(Safety Event Evaluation Network)이라는 산업 현장 안전관리 서비스를 만들었는데요. 단순히 안전모나 안전조끼(PPE)를 착용했는지 탐지하는 데 그치지 않고, 여러 위험 상황에 우선순위를 매긴 뒤, 안전관리자가 바로 읽고 판단을 도와주는 문장으로 요약해줍니다. 탐지에서 끝나는 게 아닌, 탐지 이후 어떤 행동을 해야 하는지를 정해주는 안전관리자용 의사결정 보조 서비스인 것이죠.

그런데 이 프로젝트의 시작점이 꽤 흥미로웠는데요.

물류센터에서 느꼈던 불편함이 하나의 프로젝트가 되기까지

영은 님은 방학 중 물류센터에서 아르바이트를 한 경험이 있다고 합니다.

처음 일을 시작하기 전, 보안 교육에서는 물류센터에서 사용하는 지게차나 리치 트럭이 다니는 별도의 구역으로 다니지 말라는 교육을 강조해서 받는다고 하는데요.

하지만 실제 현장에서는 조금 다른 모습도 볼 수 있었다고 해요.

위험 구역이라고는 하지만 사람의 진입을 물리적으로 막는 장치가 있는 것은 아니었고, 관리자가 항상 가까이에 있는 것도 아니었다고요. 누군가 해당 구역으로 들어가더라도 관리자가 바로 알아차리기는 어려워 보였다고 해요.

“위험한 구역이라고 했는데도 보행을 막는 시설이 없고, 관리자가 멀리 위치해 있기 때문에 모르고 들어가도 전혀 눈치를 챌 수 없을 것 같았습니다.”

영은님은 해커톤을 준비하면서 이 경험이 다시 떠올라, 직접 경험한 이런 내용을 서비스 기획에 녹여보기로 했습니다. 처음에는 안전 장비 착용 여부를 탐지하는 모델도 생각했지만, 이미 비슷한 탐지 모델과 서비스는 많았기 때문이죠.
그래서 조금 다른 질문을 던져봤다고 하는데요.

‘탐지를 한 다음에는 누가, 무엇을 해야 할까?’

결국 실제로 행동해야 하는 사람은 현장의 안전관리자였습니다.

그래서 탐지 결과를 하나씩 보여주는 대신, 어떤 상황이 더 위험한지를 판단하고, 지금 먼저 확인해야 하는 상황부터 알려주는 ‘의사결정 보조 서비스’로 방향을 잡았습니다.

"탐지 서비스나 모델은 이미 너무 많으니까 차별점을 둬야겠다고 생각했어요. 어차피 행동해야 하는 건 작업 관리자니까, 관리자가 바로 움직일 수 있는 액션 아이템을 뽑아주면 좋겠다는 방향으로 잡았습니다."

SEEN은 YOLO를 이용해 작업자와 안전 장비를 탐지한 뒤 위험도를 계산하고, VLM과 LLM을 활용해 상황 설명과 조치 방법까지 전달하는 구조입니다.

탐지 결과에 위험 우선순위를 부여하는 방법

그렇다면 여러 위험 상황 중 무엇을 먼저 보여줘야 할까요?

영은 님은 이 부분을 위해 위험도를 직접 설계했습니다.

기준은 기본 심각도 × 구역 가중치 × 지속시간 × 동시 위반자 수였습니다.

예를 들어 안전조끼를 입지 않은 경우와 안전모를 쓰지 않은 경우의 위험도를 다르게 보고, 작업자가 위험한 구역에 들어가 있다면 여기에 추가 가중치를 줍니다. 같은 상황이 오래 지속되거나 여러 명이 동시에 위반하고 있다면 점수는 더 높아지고요.

즉, 단순히 ‘위반이 발생했다’고 알려주는 대신 지금 어떤 상황을 먼저 확인해야 하는지까지 판단하도록 만든 것입니다.

이런 로직을 짜는 일도 쉽지 않았지만, 실제로 가장 많은 시간이 들어간 부분은 따로 있었습니다.

바로 데이터였는데요.

서로 다른 데이터셋의 기준을 통합하는 과정

'SEEN' 프로젝트에는 세 종류의 공개 PPE(Personal Protective Equipment) 데이터셋이 사용되었는데요.

하지만 공개 데이터셋 여러 개를 한곳에 모은다고 해서 바로 하나의 학습 데이터로 사용할 수 있는 것은 아니었습니다. 데이터셋마다 사용하는 라벨 포맷과 클래스 구성이 달랐기 때문인데요. 같은 대상을 가리키더라도 클래스 이름이 다르거나, 특정 데이터셋에만 존재하는 클래스도 있었습니다.

영은 님은 먼저 세 데이터셋에서 공통으로 활용할 수 있는 대상을 확인한 뒤, 프로젝트의 목적에 맞게 클래스 체계를 다시 정리했습니다. 그 결과 작업자와 안전모·안전조끼의 착용 상태를 구분할 수 있도록 person, helmet, no_helmet, vest, no_vest라는 다섯 개 클래스로 통합하게 되었습니다.

처음에는 더 다양한 클래스를 활용하는 방안도 고민했습니다. 하지만 클래스가 늘어날수록 데이터셋마다 다른 기준을 맞춰야 했고, 직접 확인해야 할 데이터의 양도 함께 늘어났는데요. 제한된 해커톤 기간 동안 모든 데이터를 꼼꼼하게 검수하기는 어려웠기 때문에, 세 데이터셋에서 공통으로 활용할 수 있으면서도 서비스의 핵심 기능과 직접 연결되는 안전모와 안전조끼를 중심으로 범위를 좁히게 되었죠.

이렇게 통합한 데이터는 이미지 2만 장 이상, 박스 어노테이션 약 19만 개에 달했습니다. 데이터의 양을 늘리는 것만큼 중요한 것은 서로 다른 데이터가 하나의 기준으로 학습될 수 있도록 정리하는 일이었는데요. 클래스 기준이 일관되지 않으면 모델도 무엇을 구분해야 하는지 명확하게 학습하기 어렵기 때문입니다.

영은 님에게 혼자 프로젝트를 진행하면서 가장 아쉬웠던 순간을 물어보니 역시 데이터 검수 이야기가 나왔습니다.

“데이터를 검수할 때 팀원이 있었으면 좋았을 것 같습니다.”

수십만 개에 가까운 어노테이션을 제한된 시간 안에 모두 확인하기는 쉽지 않은 일입니다. 결국 이번 프로젝트에서는 더 많은 클래스를 포함하는 것보다, 서비스에 꼭 필요한 클래스를 선별하고 서로 다른 데이터셋의 기준을 일관되게 맞추는 데 집중했는데요.

이 과정은 공개 데이터셋을 활용할 때도 데이터를 그대로 가져와 학습하는 것이 아니라, 프로젝트의 목적에 맞게 클래스의 범위와 기준을 다시 정의해야 한다는 점을 보여줍니다. 여러 데이터셋을 통합하는 일은 단순히 데이터의 양을 늘리는 작업이 아니라, 서로 다른 기준을 하나의 학습 기준으로 맞추는 과정이었던 셈이죠.

처음 접한 MLOps, SDK로 시작한 데이터 처리

영은 님은 이번 해커톤 전까지 라벨링이나 MLOps 도구를 사용해본 경험이 없었다고 했는데요. 하지만, 2만 장이 넘는 이미지와 세 종류의 데이터셋을 하나씩 직접 처리하기는 어려웠기 때문에 파이썬 스크립트를 작성해본 경험으로 플랫폼과 함께 제공된 SDK를 사용하기로 결정했습니다.

데이터셋과 라벨링 프로젝트 생성부터 이미지 업로드, 데이터 출처별 태그, 클래스 매핑과 어노테이션 임포트까지 SDK 스크립트로 자동화했습니다.

이후 데이터 실험과 학습에 사용할 YOLO 포맷의 데이터를 내보내는 과정에서도 SDK를 활용했고요. 파이썬 스크립트를 작성해본 경험이 있었기 때문에 SDK 자체는 금방 익힐 수 있었다고 합니다.

오히려 새롭게 느껴졌던 건 라벨링이었습니다.

그동안 개인 프로젝트에서는 공개된 데이터셋을 그대로 가져와 사용했지만, 이번에는 여러 데이터셋을 합치고 클래스까지 직접 정의해야 했는데요.

직접 해보고 나니 어떤 기준으로 데이터를 정의하고 일관되게 라벨링하느냐가 모델 성능에 얼마나 중요한지 알게 됐다고 합니다.

서비스에 필요한 모델을 직접 학습하기까지

데이터를 정리한 뒤에는 프로젝트에 적합한 모델을 찾기 위한 실험을 진행했습니다.

영은 님이 만들고자 한 서비스에서 특히 중요했던 것은 실제 위험 상황을 놓치지 않는 것이었습니다. 그래서 전체 성능 수치만 확인하기보다 안전모와 안전조끼 미착용처럼 서비스의 핵심이 되는 클래스가 제대로 탐지되는지를 중심으로 살펴봤습니다.

이 과정에서 Superb AI의 비전 파운데이션 모델인 ZERO도 활용해 데이터를 실험하고, 프로젝트에 필요한 클래스별 성능을 확인했습니다.

범용적인 비전 모델을 그대로 적용하는 데서 그치지 않고, 프로젝트가 다루는 현장과 데이터의 특성에 맞는 모델을 직접 학습하기로 한 것인데요. 영은 님은 플랫폼에서 정리한 데이터를 YOLO 포맷으로 내보낸 뒤 YOLOv8n 모델 학습을 진행했습니다.

25 epoch 학습 결과 mAP50은 0.843, Precision은 0.883, Recall은 0.765를 기록했습니다. 특히 프로젝트의 핵심 클래스 중 하나였던 no_helmet의 Recall은 0.849까지 높아졌습니다.

다만 no_vest의 Recall은 0.475에 머물렀는데요.

결과를 다시 살펴보니 원 데이터셋 자체에서 no_vest에 해당하는 데이터가 부족하다는 점을 확인할 수 있었습니다.

모델 성능이 원하는 만큼 나오지 않았을 때 모델의 설정만 변경하는 것이 아니라, 다시 데이터까지 돌아가 원인을 확인한 것입니다.

필요한 데이터를 준비하고, 모델을 실험하고, 결과에 따라 프로젝트에 특화된 모델을 직접 학습한 뒤 다시 데이터의 문제를 발견하는 과정까지. 하나의 모델을 만드는 일이 단순히 학습 코드를 실행하는 것으로 끝나지 않는다는 것을 자연스럽게 경험한 셈입니다.

모델 학습과 서비스 개발을 병렬로 진행한 방법

한 달 남짓한 해커톤 기간 안에서 모델부터 실제 서비스까지 혼자 만들어야 했기 때문에 시간을 쓰는 방식도 중요했습니다.

영은 님은 Colab에서 모델 학습을 진행하는 동안 프론트엔드와 백엔드를 개발했다고 합니다. 위험도 계산을 위한 스코어링 함수도 만들고, FastAPI 구조를 잡는 작업도 동시에 진행하셨는데요.

결과적으로 SEEN에는 사용자가 직접 위험 구역을 설정하는 기능부터 실시간 탐지, 위험도 계산, 위반 대시보드까지 구현됐습니다. 탐지된 상황은 카드 형태로 표시되고, VLM이 해당 상황을 자연어로 설명합니다. 이후 LLM이 안전관리자가 취할 수 있는 조치를 제안하도록 구성했습니다.

처음에 이야기했던 ‘탐지 이후 무엇을 할 것인가’라는 질문이 실제 서비스의 형태로 이어진 것이죠.

구현된 대시보드 일부 화면

기대했던 비전 AI 개발 경험과 해커톤 수상

영은 님은 이전에도 여러 해커톤에 참여한 경험이 있다고 합니다.

기존 해커톤에서는 이미 만들어진 AI 모델 혹은 API를 활용하거나, 소규모 파인튜닝을 통해 결과물을 만드는 경우가 많았다고 하는데요. 이번 해커톤에 지원할 때는 아이디어를 빠르게 구현하는 데서 끝나는 것이 아니라, 비전 AI 서비스를 만드는 전체 과정을 직접 경험해보고 싶었다고 합니다.

실제로 이번 해커톤은 조금 달랐습니다.

데이터를 찾고 정리하는 것부터 라벨링, 모델 검증과 학습, 실제 서비스 구현까지 모두 직접 진행해야 했습니다. 여러 공개 데이터셋의 기준을 통합하고, 19만 개에 달하는 어노테이션을 다루며, 프로젝트에 필요한 모델을 직접 학습해 서비스에 연결했습니다.

영은 님이 기대했던 ‘데이터 수집부터 배포까지 이어지는 비전 AI 프로젝트의 전 과정’을 실제로 경험한 것입니다.

“데이터 수집부터 배포까지 직접 해볼 수 있어서 진짜 비전 AI 해커톤 같았습니다.”

처음 기대했던 경험을 충분히 해본 것만으로도 만족스러웠지만, 직접 만든 프로젝트로 1등까지 수상하면서 그 과정과 결과를 함께 인정받을 수 있었죠.

혼자 프로젝트를 진행하며 데이터와 모델, 서비스 개발까지 모두 책임져야 했던 만큼 이번 수상은 더욱 특별하게 다가왔다고 하는데요. 단순히 좋은 아이디어를 제안한 것이 아니라, 실제 데이터를 다루고 시행착오를 거쳐 끝까지 구현한 결과였기 때문입니다.

해커톤 전까지 Superb AI에 대해 알고 있던 것도 CVPR 챌린지 1등이라는 성과 정도였다고 합니다. 하지만 직접 플랫폼을 사용하고 나서는 데이터 관리부터 라벨링, 학습과 배포까지 AI 개발의 전체 흐름을 하나의 플랫폼에서 연결할 수 있다는 점이 인상적이었다고 했습니다.

이처럼 실제 사용자가 대규모 데이터를 다루고 모델을 개발하는 전체 과정에서 발견한 경험은 앞으로 제품과 다음 프로그램을 개선하는 데 참고하려고 합니다.

해커톤 이후에도 이어진 비전 AI에 대한 확신

이번 인터뷰에서 가장 기억에 남았던 이야기는 프로젝트 결과보다 오히려 마지막에 나왔습니다.

영은 님은 현재 비전과 멀티모달 분야의 대학원 진학을 고민하고 있다고 했는데요. 주변에서는 비전 분야가 이미 포화됐다는 이야기도 많이 들었고, 정말 자신이 이 분야를 계속 좋아할 수 있을지 고민하기도 했다고 합니다.

그런데 이번 해커톤을 하면서 조금은 답을 찾았다고 해요.

“지금까지 참여했던 해커톤 중에서 가장 열정적으로 몰입하는 제 모습을 발견했습니다.”

그래서 자신의 꿈을 포기하지 않고 비전 AI 분야를 계속 공부해보기로 했다고 합니다. 해커톤의 결과는 1등이라는 순위로 남았지만, 어쩌면 더 오래 남는 건 이런 경험이지 않을까 싶습니다.

직접 데이터를 들여다보고, 예상과 다른 결과를 만나고, 다시 방향을 수정하면서 하나의 서비스를 끝까지 만들어본 경험.

이번 Superb AI × BDAI Vision AI Hackathon에서도 참가자들은 각자의 방식으로 이런 과정을 경험했습니다.

앞으로도 Superb AI에서는 기술을 단순히 소개하는 것을 넘어, 개발자와 AI에 관심 있는 사람들이 직접 데이터를 다루고 모델을 실험하며 아이디어를 실제 서비스로 구현해볼 수 있는 자리를 계속 만들어보려고 합니다.

그리고 다음에는 또 어떤 재미있는 프로젝트가 등장할지, 저도 기대해보겠습니다!