사실 이 AI 서비스 시리즈 상 타임라인으로 첫 번째 에피소드이지만 연결 흐름이 이 프로젝트와 다른 영상 처리 프로젝트가 깊게 엮여 있어 두 번째 에피소드로 작성했다.
첫 번째 회고가 궁금하다면
[회고] AI 프로젝트 1. OTT 추천 서비스(데이터 기반 서비스 기획)
[회고] AI 프로젝트 1. OTT 추천 서비스(데이터 기반 서비스 기획)
AI 서비스 프로젝트 여러 개 진행했었는데 프로젝트의 버스 드라이버다 보니 짧게 KPT만 정리하고 따로 자세히 남기지 못하여 항상 아쉬웠었다. 그래서 이번에 많이 부족하지만 지금에서라도 시
potato-potahto.tistory.com
🤖 첫 딥러닝, 첫 컴퓨터 비전, 첫 Python
2019년 여름, Python 프로그래밍이나 딥러닝이 뭔지도 잘 모르던 내가 직접 프로그래밍해서 운동화를 꾸미는 서비스를 만들겠다고 포부를 놨다. 당시 Python도, 딥러닝도, OpenCV도 모두 처음이었다. 사실 당시 독일에서 교환학생을 다녀와서 정보 시스템(Information System, IS) 과목 이수와 문과를 위한 간단한 프로그래밍 과목 이수한 정도였다.
정부에서 지원하는 "청년인재과정"에서 주어진 미션은 2달 안에 딥러닝을 배우면서 딥러닝 프로젝트를 완수하는 것! 사실 주제 선정까지 험난한 과정과 팀원도 타 팀에 비해서 2명이나 적었었다.
그런 난관에서 레퍼런스도 멘토도 없고 1달간 주제를 선정하지 못하여 난항을 겪다가 팀원의 의 관심사인 운동화로 주제를 정했다. 단순히 객체 인식(object detection) 하는 것보다 한 발 더 나아가고 싶었다. 그래서 먼저 딥러닝(Deep Learning, DL) 알고리즘을 써치 하다가 Mask R-CNN알고리즘을 알게 되었다!

이미지에서 각 객체를 픽셀 단위로 인식하여 마스킹하여 표시하는 것에서 영감을 받아서 실시간으로 운동화 패치를 인식하여 색상을 입혀주는 것으로 기획하였다. 쉽게 이해하면 카메라 촬영할 때 필터를 입히는 것과 동일한 것이다.
사실 여기서 남은 기간, 숙련도, 완성도를 고려했었으면 이 선택을 하면 안 되었으나 재미가 우선이었다.


어떻게든 ‘운동화 패치’라는 특정 영역을 인식하고, 거기에 새로운 색을 입히려면 컴퓨터 비전 알고리즘을 적용해야 했다.
문제는 아무것도 모르는 4명이서 그걸 배워서 서비스할 수 있는 정도까지 만들어야 하는 것.
🧱 실시간으로 색을 입히기 위한 네 가지 벽
프로젝트는 크게 4단계로 나뉘고 각 단계가 넘어야 할 산이였다.
1. 사용자가 임의로 업로드한 이미지에서 객체 추출
2. 추출된 객체에서 주요 색상 추출
3. 실시간으로 이미지에서 운동화 각 객체 instance 인식
4. 신발에서 각 구성을 인식하고 색상 합성
사용자가 이미지 하나를 업로드하면, 그 이미지에서 색상을 추출하고, 운동화의 특정 패치 부분에 그 색상을 입히는 서비스였다.
처음 보는 딥러닝 프레임워크,
처음 만지는 컴퓨터 비전 라이브러리,
모든 게 낯설고 새로웠다.
이 4가지 난관을 뚫기 위해서 매일 알고리즘을 구글링 하고 OpenCV 라이브러리로 프로그래밍을 했다.
1. 객체 추출: 유저가 업로드한 사진에서 원하는 영역만 남기기 위해 GrabCut 알고리즘으로 배경 제거

2. 색상 추출: 이미지에서 주요 색상 n개를 뽑기 위해 k-means 클러스터링 적용

3. 패치 마스킹: 운동화 이미지에서 '패치' 위치를 찾기 위해 Mask R-CNN으로 마스크 추출

4. 이미지 합성: 추출한 마스크에 사용자가 고른 색상을 입히고, 픽셀의 RGB값을 변경 및 알파 채널로 경계선을 부드럽게 처리하여 Alpha matting으로 합성

각 단계마다 고비가 있었지만, 특히 어려웠던 건 어떤 것이 딥러닝의 과소적합(underfitting) 문제였다. 당시에는 딥러닝 자체를 잘 모르다 보니 적절한 데이터 양, 데이터 어노테이션(annotation) 질의 중요성 등을 알지 못하여 성능이 좋지 않았다.
🧹 모델보다 데이터


문제는 각 라벨러마다 기준, 방식이 제각각이어서 모델이 제대로 학습을 못 하는 상태가 되었다. 당시에는 몰랐지만 나중에 라벨링 한 이미지 데이터를 확인해 보고 각 라벨러마다 상이하게 하고 있는 것을 확인하여 다시 어노테이션 기준 및 품질 관리를 강화하여 조금 더 나아졌다.
그다음 문제는 데이터 양인 것을 알고 있었는데 프로젝트 기간이 얼마 남지 않아 손 쓸 수가 없었다.
당시에는 이 모든 사항이 최선이었다.
💡 한 달, 미숙함 속에서의 도전

한 달이라는 짧은 시간.
딥러닝도, 이미지 합성도, Python도 모르는 상태에서 직접 코드를 짜고, 스스로 학습하고, 디버깅한 첫 개발 프로젝트였다.
성공적이었다고 단정하긴 어렵지만, 그 당시 수준에선 할 수 있는 최선을 다 했다. 이미지 라벨링의 중요성, 과소적합이 왜 일어나는지, 모델 구조를 이해하지 않고 학습시키는 게 얼마나 바보 같은 것인지...
수많은 시행착오 속에서 배운 것은 모델 성능은 결국 데이터에 의해 결정된다는 것, 아무리 좋은 모델도 데이터와 AI 모델의 이해도가 없다면 무용지물이라는 것
지금 돌아보면 이 프로젝트는 이후 본격적으로 데이터를 공부하게 된 출발점이자 전환점이었다.
미숙하고 거칠었지만, 그 미숙함 속에서 기술과 데이터에 대한 흥미와 성취감을 처음 느꼈다.
만약 지금 그때로 돌아간다면 더 잘할 수 있겠지만, 그때의 무모한 도전과 열정으로 지금의 내가 되었다.
Reference
He, Kaiming et al. “Mask R-CNN.” 2017 IEEE International Conference on Computer Vision (ICCV) (2017): n. pag. Crossref. Web.
Li, F. (2013). Lecture 13: k-means and mean-shift clustering. Retrieved from http://vision.stanford.edu/teaching/cs131_fall1314_nope/lectures/lecture13_kmeans_cs131.pdf
Matterport Mask R-CNN Retrieved from https://github.com/matterport/Mask_RCNN
Majumder.S Mask R-CNN Multi class detection Retrieved from https://github.com/CrookedNoob/Mask_RCNN-Multi-Class-Detection
Szeliski. R. (2010) Computer Vision: Algorithms and Applications,2010, pp105-7 Retrieved from http://szeliski.org/Book/drafts/SzeliskiBook_20100903_draft.pdf
VGG Image Annotator http://www.robots.ox.ac.uk/~vgg/software/via/via-1.0.6.html
'Data > AI' 카테고리의 다른 글
원티드 하이파이브 2025 참석 후기 및 요약(네트워킹 세션 후기 포함) (0) | 2025.05.23 |
---|---|
[회고] AI 프로젝트 3.네이버 개발자 인턴 지원 기회를 받은 실시간 영상 처리 서비스1 (0) | 2025.05.16 |
[회고] AI 프로젝트 1. OTT 추천 서비스(데이터 기반 서비스 기획) (0) | 2024.11.13 |
Light GBM 설명(특징,하이퍼파라미터,설치, 사용방법) (0) | 2022.08.02 |
[MLOps] A Chat with Andrew on MLOps: From Model-centric to Data-centric AI(모델 중심 (0) | 2022.03.21 |