coredot.today
뉴스룸으로 돌아가기
사례2023-12-13

코끼리공장 × 코어닷투데이 — 기부 장난감을 분류하는 장난감 인식 AI

폐장난감을 재활용하는 자원순환 기업 코끼리공장과 함께, 기부받은 장난감의 구성품을 알아보고 오염·파손 장난감을 가려내는 YOLOv8 기반 장난감 인식 AI를 개발했습니다. 문제 정의부터 데이터 수집, 학습, 실시간 탐지까지의 과정을 소개합니다.

쌓여 가는 기부 장난감, 분류가 병목이었다

자원순환 기업 코끼리공장은 쓰지 않는 장난감을 기부받아, 다시 쓸 수 있는 장난감은 수리·세척해 아이들에게 나눠 주고, 다시 쓸 수 없는 장난감은 플라스틱 소재를 추출해 자원화합니다. 수거·분류·세척·수리 작업은 시니어 근로자들이 맡고 있습니다.

코끼리공장의 장난감 순환 과정 — 수거·분류 뒤 수리·나눔 또는 파쇄·자원화

좋은 취지에 공감한 사람들이 전국에서 장난감을 보내오지만, 사람이 일일이 장난감을 분류하는 데 시간이 많이 걸려 기부 속도를 따라잡지 못했습니다. 뜯지 못한 택배 상자가 창고에 쌓여 갔습니다. 코어닷투데이는 시간이 많이 드는 분류 작업을 자동화해, 사람의 손은 세척과 수리에 집중할 수 있도록 하는 것을 이번 과제의 목표로 삼았습니다. 프로젝트는 이동주 AI 디렉터가 이끌었습니다.

창고에 쌓여 있는 기부 장난감 택배 상자

문제 정의와 현장 파악

장난감이 재활용되는 과정은 다음과 같습니다.

  1. 기부받은 택배를 뜯어 장난감을 꺼냅니다.
  2. 장난감을 다시 쓸 수 있는지 판단합니다. 다시 쓸 수 있는 장난감은 수리·세척 과정을 거칩니다.
  3. 다시 쓸 수 없는 장난감은 폐장난감으로 분류합니다.
  4. 수리·세척을 마친 장난감은 아이들에게 나눠 줍니다.
  5. 폐장난감은 플라스틱 소재를 추출해 자원화합니다.

택배를 열어 장난감을 확인하는 앞 단계에서 시간이 오래 걸리다 보니, 뒤 단계의 나눔과 자원화가 원활하지 않았습니다. 분류를 자동화하면 수리·세척이 필요 없는 폐장난감은 따로 빠르게 자원화할 수 있습니다.

코끼리공장은 플라스틱 파쇄를 빼면 모든 작업을 사람이 하고 있어 저장된 데이터가 전혀 없는 상황이었습니다. 그래서 데이터를 모으는 동시에 저장까지 고려한 설계가 필요했습니다. 현장 작업자 인터뷰로 확인한 사실은 다음과 같습니다.

  • 장난감을 분류하는 기준은 구성품 확인, 작동 확인, 외관 확인 등이다.
  • 확인에 오래 걸리는 장난감은 한 개에 10분 정도 걸린다.
  • 벨크로(찍찍이)가 붙은 장난감은 스티커 제거제로 떼어 내는 데 오래 걸려 오염된 장난감으로 분류한다.

폐장난감이 모여 있는 코끼리공장 현장

설계 — 컨베이어 벨트 위의 AI

자동화 시스템 설계 — 컨베이어 벨트 위 장난감을 비전 카메라로 촬영하고 AI가 추론해 분류 결과를 송출

  1. 장난감이 컨베이어 벨트 위를 지나갑니다.
  2. 카메라가 장난감 이미지를 수집합니다.
  3. AI가 이미지를 추론해 어떤 장난감인지와 구성품을 알려 주고, 오염·파손된 장난감을 가려내 자동으로 분류합니다.

모델 선정 — YOLOv8

장난감 인식에는 PyTorch로 PyramidNet을 구현해 이미지를 분류하는 방법과 YOLOv8의 객체 탐지(Object Detection)를 쓰는 방법이, 오염·파손 인식에는 U-Net으로 영역을 분할(Semantic Segmentation)하는 방법과 YOLOv8의 객체 분할(Object Segmentation)을 쓰는 방법이 후보였습니다. 기존 데이터가 없는 상황이고 컨베이어 벨트를 지나는 장난감을 실시간으로 빠르게 인식해야 한다는 점에서 YOLOv8을 택했습니다.

데이터 — 없는 데이터를 만들다

무엇을 인식할 것인가

장난감 인식은 구성품이 모두 있는지 확인할 수 있도록 장난감마다 이름을 붙여 학습했습니다.

학습에 사용한 장난감 예시

오염·파손은 경우의 수가 너무 많았습니다. 로봇의 팔이 없거나 다리가 부서진 경우, 자동차의 바퀴가 없거나 창문이 깨진 경우를 모두 모아 학습하기는 어렵습니다. 그래서 폐장난감 공장을 직접 찾아 뚜렷한 특징이 있는 장난감을 살펴보고, 인터뷰 내용과 합쳐 문제의 범위를 좁혔습니다. 벨크로가 붙은 장난감은 '오염', 건전지 덮개에 이상이 있는 장난감은 '파손'으로 정의했습니다.

오염·파손 장난감 예시 — 벨크로가 붙은 장난감, 건전지 덮개가 없는 장난감

촬영과 레이블링

  • 장난감 인식 — 약 100개의 장난감을 스마트폰으로 촬영했습니다. 컨베이어 벨트를 세워진 채 지나간다는 전제로 바닥면을 뺀 모든 면을 찍었고, 이름은 구글 이미지 검색으로 확인해 붙였습니다. 장난감 더미에서 10개를 골라 촬영하는 데 10~12분 정도 걸렸습니다.
  • 오염·파손 인식 — 오염 장난감 약 100개, 파손 장난감 약 100개를 검은 배경 위에서 각도를 바꿔 가며 CZUR Aura 스캐너로 촬영했습니다. 한 개에 약 12초가 걸렸고, 클래스는 velcro와 no_battery_cover로 지정했습니다.

장난감 인식용 촬영 예시 — 한 장난감을 여러 면에서 촬영

오염·파손 인식용 스캔 예시

레이블링 도구로는 Labelimg, Anylabeling, Roboflow, CVAT 가운데 전·후처리와 자동 레이블링(Smart polygon)을 지원하는 Roboflow를 썼습니다. 작업 도중 바운딩 박스와 폴리곤 기준이 모호해 다시 고친 일이 있어, 레이블링 전에 명확한 annotation 기준을 정하는 것이 중요하다는 교훈을 얻었습니다.

학습과 평가

장난감 인식은 YOLOv8n 모델로 200 epoch, 오염·파손 인식은 YOLOv8m-seg 모델로 300 epoch 학습했습니다.

장난감 인식 결과 — 장난감별 이름과 신뢰도

장난감 인식 결과 — 자동차 장난감 탐지

모델 평가는 이미지별 클래스 예측 정확도와 마스크 IoU를 계산해 표로 정리했습니다. 테스트 이미지 26장 가운데 25장에서 클래스를 맞혀 클래스 예측 정확도는 평균 약 96%였고, 맞힌 이미지의 IoU는 0.85~0.96 사이였습니다. 한 장을 놓친 경우까지 포함한 IoU 평균은 약 0.89입니다.

모델 평가 결과 — 이미지별 클래스 예측 정확도와 IoU

학습한 모델은 NVIDIA Jetson Xavier와 웹캠으로 실시간 객체 탐지까지 시험했습니다.

다음 단계

앞으로 데이터를 계속 쌓아 데이터 파이프라인을 만들고, 오염·파손 장난감을 더 일반적으로 인식할 수 있도록 고도화할 계획입니다. 실제 장난감을 인식하는 현장의 배경 이미지를 보완해 학습하고, 현장 테스트를 진행해야 합니다.

이 작업은 이후 유니스트·코끼리공장·부산 동구청과 함께한 소통형 AI 장난감 기부 키오스크(2024)와, 코끼리공장과의 AI 창의·정서 교육 협력 업무협약(2025)으로 이어졌습니다.