Search

아이노리터

요약
Unity와 컴퓨터 비전 기술(OpenCV, YOLO v7, SORT)을 활용한 인터랙티브 교육 게임 '아이노리터' 개발 프로젝트. 아이들의 신체 활동과 학습 참여를 동시에 증진시키는 혁신적인 교육 플랫폼 구축.
역할
9인 프리랜서 팀(기획자, 디자이너, 개발자 7인)의 프로젝트 리더로 참여
프로젝트 설계, 개발팀 리딩, 확장 가능한 게임 아키텍처 구현 담당 (기여도 약 90%)
YOLO v7 모델과 SORT 알고리즘을 활용한 다중 사용자 검출 및 추적 기능 구현 (기여도 100%)
성과
50개 이상의 다양한 미니게임 개발로 풍부한 학습 콘텐츠 제공
저사양 콘솔에서 20FPS 이상의 부드러운 인터랙션 구현
9개월 간의 프로젝트를 목표 기간 내 성공적으로 완수
시기
2023.02 - 2023.11 (9개월)

실시간 다중 사용자 추적 시스템

YOLO v7과 SORT 알고리즘을 결합하여 고성능 실시간 다중 사용자 추적 시스템을 개발했습니다. 이 시스템은 카메라 입력을 통해 여러 사용자의 움직임을 동시에 감지하고 추적하여 게임과의 자연스러운 상호작용을 가능하게 합니다.
성능 최적화에 중점을 두어 저사양 콘솔에서도 20FPS 이상의 부드러운 인터랙션을 구현했습니다. SORT 알고리즘을 C#으로 포팅하고 경량화하여 실시간 처리 능력을 크게 향상시켰습니다. 이를 통해 다수의 사용자가 동시에 게임을 즐길 수 있는 환경을 조성했습니다.

예시 코드

검출 코드
// YOLO v7 모델 초기화 objectDetector = new YOLOv7ObjectDetector(model_filepath, config_filepath, classes_filepath, new OpenCVForUnity.CoreModule.Size(inpWidth, inpHeight), confThreshold, nmsThreshold, topK, Dnn.DNN_BACKEND_OPENCV, Dnn.DNN_TARGET_CUDA); // 실시간 inference 수행 Mat results = objectDetector.infer(bgrMat); // 검출 결과 시각화 objectDetector.visualize(rgbaMat, results, false, true);
C#
복사
추적 코드
// SORT 트래커 초기화 tracker = new SortTracker(iouThreshold: 0.3f, maxMisses: 3); // 검출된 객체의 bounding box 정보 추출 List<RectangleF> rects = new List<RectangleF>(); for (int i = results.rows() - 1; i >= 0; --i) { float[] box = new float[4]; results.get(i, 0, box); rects.Add(new RectangleF(box[0], box[1], box[2] - box[0], box[3] - box[1])); } // 객체 추적 수행 var tracks = tracker.Track(rects.ToArray());
C#
복사

모듈화된 비전-게임 아키텍처

비전 처리 모듈과 게임 로직 모듈 간의 의존성을 최소화한 아키텍처를 설계 및 구현했습니다. 이 접근 방식으로 두 핵심 시스템 간의 원활한 통신과 동시에 각 모듈의 독립적인 개발 및 유지보수가 가능해졌습니다.
이 아키텍처는 향후 새로운 기능 추가나 AI 모델 업데이트 시 전체 시스템의 안정성을 해치지 않고 개별 모듈만 수정할 수 있는 확장성을 제공합니다.
또한 카메라 캘리브레이션 기법을 활용하여 현실 세계의 좌표를 게임 내 좌표로 정확히 변환하는 시스템을 개발했습니다. 이를 통해 사용자의 움직임이 게임 속 캐릭터나 오브젝트와 1:1로 매칭되어 정확한 인터랙션이 가능해졌습니다.

미니게임 구조 설계 및 프로젝트 관리

지속적인 콘텐츠 업데이트를 위해 50개 이상의 다양한 교육용 미니게임을 개발했습니다. 각 게임은 아이들의 신체 활동을 장려하고 직관적인 조작을 통해 자연스러운 학습을 유도하도록 설계되었습니다. 이를 통해 장기적인 사용자 참여와 학습 효과를 극대화했습니다.
확장성이 뛰어난 미니게임 구조를 설계했습니다. 이 구조는 중앙 시스템으로 전체 게임을 관리하며, 모듈식 접근 방식으로 개별 미니게임을 쉽게 추가할 수 있습니다. 새로운 미니게임이나 기능을 개발할 때 기존 시스템을 크게 변경하지 않고도 통합할 수 있어, 개발 효율성과 프로젝트의 유연성이 크게 향상되었습니다.
9명의 아웃소싱 개발자로 구성된 팀을 효과적으로 관리하여 계획된 개발 기간 내에 모든 미니게임을 성공적으로 완성했습니다. Git을 활용한 체계적인 버전 관리와 정기적인 코드 리뷰 프로세스를 도입하여 분산 개발 환경에서도 일관된 코드 품질과 교육적 가치를 유지했습니다. 이러한 경험을 통해 대규모 교육용 콘텐츠 개발 프로젝트의 리더십과 관리 능력을 입증했습니다.