[부스트캠프 AI Tech 7기] 업스테이지 기업 해커톤 프로젝트 회고

jinnk0·2025년 2월 22일

자영업자들을 위한 음악 큐레이션 서비스

프로젝트 개요

목표:
소규모 매장을 운영하는 자영업자들이 매장 분위기에 맞는 음악을 쉽게 추천받을 수 있도록 하는 서비스 개발

사용 기술:
Python, FastAPI, React, PyTorch, Faiss, MongoDB, PostgreSQL, Redis, Apache Airflow, Docker


프로젝트 진행 과정

주요 기능

  • 온보딩 시스템을 통한 신규 유저 임베딩 생성
    • 가게 분위기에 맞는 태그 선택 후, 관련 음악 중 선호하는 트랙 선택하여 유저 임베딩 생성
  • 사용자가 제시한 플레이리스트와 어울리는 음악 추천
    • LightGCN을 활용하여 추천 후보곡을 생성하고, BiEncoder를 이용해 플레이리스트와의 유사도를 고려한 Reranking 적용
  • OCR API를 이용한 플레이리스트 이미지 인식
    • 기본적으로 스포티파이 API를 활용한 플레이리스트 가져오기 기능 제공
    • 하지만 스포티파이에 플레이리스트를 보유하고 있지 않을 경우 플레이리스트 캡쳐 이미지 사용 가능
    • 플레이리스트 이미지 캡처 업로드 시 OCR API을 통해 트랙명과 아티스트명 추출

기술적 도전과 해결 방법

어려웠던 점

  1. OCR API를 통해 이미지에서 트랙명/아티스트명만 정확히 추출하는 문제
  2. 외부 API 호출 및 DB 접근 최적화를 통한 응답 속도 개선

해결 방법

  1. OCR API를 통해 이미지에서 트랙명/아티스트명만 정확히 추출하는 문제
  • OCR 전처리를 통해 트랙명/아티스트명을 제외한 불필요한 정보 제거
  • OCR API 결과가 트랙명/아티스트명 순서대로 제공된다는 점을 활용하여 텍스트 후처리 로직 개선
  1. 외부 API 호출 및 DB 접근 최적화를 통한 응답 속도 개선
  • 비동기 병렬 처리 적용하여 외부 API 호출 속도 최적화
  • DB 쿼리 개선으로 DB 접근 속도 최적화
  • Redis를 활용한 캐싱으로 반복적인 요청 최소화

결과 및 개선점

프로젝트 성과

항목내용
주요 성과OCR을 활용한 자동 플레이리스트 분석 기능 구현, 추천 모델의 정확도 개선
성능 개선API 응답 속도를 50% 이상 단축, DB 최적화 및 캐싱 도입
배운 점모델 서빙의 최적화 방법, 비동기 프로그래밍을 통한 성능 개선, 협업 과정에서의 커뮤니케이션 중요성

향후 개선할 점

  • 코드 스타일 및 관리 강화 (리팩토링, 코드 리뷰 프로세스 적용)
  • 쿼리 최적화를 더욱 심화하여 불필요한 데이터 접근 최소화 및 성능 개선
  • 추천 모델의 개인화 수준 향상 (사용자의 피드백 반영)

프로젝트 깃허브 링크

GitHub - 자영업자들을 위한 음악 큐레이션 서비스


마무리

이번 프로젝트를 통해 단순한 기능 구현을 넘어 사용자의 경험을 고려하는 것이 중요함을 다시금 확인할 수 있었다.
특히, 실제 서비스에서 응답 속도가 중요한 요소임을 체감하며, 이를 개선하기 위한 최적화 방안을 심층적으로 고민해볼 기회가 되었다.

또한, 팀원들과의 협업을 통해 명확한 역할 분배와 원활한 커뮤니케이션이 프로젝트 진행을 얼마나 효율적으로 만드는지를 경험할 수 있었다.
개발 과정에서 예상치 못한 문제에 직면했을 때, 혼자 해결하려 하기보다 팀원들과 논의하는 것이 더 효과적일 수 있다는 점도 배웠다.

무엇보다, 단순히 모델 개발과 구현에 그치는 것이 아니라, 서비스 단계까지 고려할 때 훨씬 더 많은 요소를 고민해야 한다는 점을 실감했다. 앞으로도 이 부분을 지속적으로 연구하고 학습하며, 더 나은 서비스를 제공하기 위해 노력할 계획이다.

0개의 댓글