목차

  1. 들어가며

    1.1 데이터프로덕트그룹 소개

    1.2 Data Product 시리즈 소개

    1.3 왜 AI 세차가 데이터프로덕트인가?

  2. AI(데이터)기반 세차 오퍼레이션 소개

    2.1 세차 오퍼레이션 배경 및 AI모델 소개

    2.2 세차 요청 로직 개선

    2.3 세차 오퍼레이션 아키텍쳐

  3. 문제 정의 및 해결 과정

    3.1 1차 분석 시도

    3.2 ground truth?

    3.3 다시 원점에서 데이터 정의

    3.4 새로운 세차 요청 로직 구성

  4. AI(데이터)기반 세차 오퍼레이션 도입 이후

    4.1 도입 후 성과

    4.2 통제할 수 없는 외부 요인

    4.3 이후 해결을 시도해 보고 싶은 문제

  5. 마치며



1. 들어가며

1.1 데이터프로덕트그룹 소개

1.2 Data Product 시리즈 소개

1.1과 1.2는 시리즈 첫번째 글로 대체하겠습니다. (링크)

1.3 왜 AI 세차가 데이터프로덕트인가?

쏘카는 기술 개발을 통해 많은 운영 프로세스를 자동화하고 있지만 완전한 자동화를 위해서는 인공지능(AI)이 필요합니다. 하지만 항상 복잡한 전후 맥락과 예외적인 사정이 얽힌 현실 세계의 문제를 풀기엔 AI 모델의 성능이 제한적인 경우가 많습니다. 또한 AI 모델의 결과를 해석하고 설명하기 어려운 문제, 조직의 문화적 기술적 수용 가능성 문제도 운영에 AI를 활용하는데 걸림돌이 됩니다. 이러한 어려움을 해결하기 위해서는 기존 운영 프로세스에 대한 이해를 바탕으로 문제 원인을 정의하고, AI의 기대 효과와 한계를 분석하여 조직을 설득시키고, 최적의 운영 로직을 설계하고 실제 운영하는 환경을 구축할 수 있어야 합니다. 이는 데이터 분석가와 데이터 엔지니어의 역할로, 데이터를 서비스에 활용해온 조직의 경험치가 곧 AI를 활용할 수 있는 역량이 됩니다.

쏘카의 데이터 활용 역량을 토대로 세차 운영을 효율화하고 고객경험을 개선하는 전체 과정을 “데이터 제품화(Data as a Product)”의 하나로 정의했습니다. 특히 이 과정에서 AI를 활용해 데이터 활용 수준을 한 차원 끌어 올렸던 사례를 소개하고자 합니다.



2. AI(데이터)기반 세차 오퍼레이션 소개

2.1 세차 오퍼레이션 배경 및 AI모델 소개

쏘카는 직접 소유한 차량 자산을 무인으로 고객에 서비스합니다. 따라서 쏘카 비즈니스가 규모의 경제를 달성하기 위해서는 1)소유 차량 유지/관리의 비용을 효율화 하는 것과 2)무인 서비스의 품질을 높이는 것이 필요합니다. 쏘카 서비스 초기에는 백 대 가량의 차량을 현장에서 직접 관리할 수 있었습니다. 하지만 2만대 규모의 차량을 관리하게 된 현재는 사람이 일일이 차량의 상태를 파악해 관리하는 것은 불가능에 가깝습니다. 차량을 효율적으로 서비스할 수 있도록 유지하고 관리하는데 있어 새로운 방식의 접근이 필요했습니다. 세차를 관리하는 방식에 있어서는 딥러닝 모델을 활용한 세차 요청 로직 고도화(’이하 AI세차’)가 그 대안이었습니다.

쏘카에서는 차량이 세차가 필요 상태인지 판단 하고, 세차가 필요한 차량의 세차 요청을 보내 세차업체에서 이를 수행할 수 있도록 하는 일련의 과정을 세차 오퍼레이션 이라고 부릅니다.

쏘카 AI팀이 개발한 차량 상태 대분류 모델 (Car State Classifier)

<쏘카 데이터 밋업 자료>

AI팀이 개발한 모델은 쏘카 고객이 업로드한 차량 이미지가 어떤 상태인지 추론하는 딥러닝 모델입니다. 여러 상태값 중 ‘오염’으로 분류된 케이스를 세차 오퍼레이션에 활용하기로 했습니다. 해당 모델은 분류에 대한 확신 정도를 나타내는 confidence 값도 제공합니다. 이는 오염의 심도를 확인하는 데 사용됩니다.

2.2 세차 요청 로직 개선

요청 로직 개선 히스토리

쏘카는 자체 개발한 세차 관리 시스템을 통해 세차업체가 요청에 따라 세차를 수행할 수 있도록 하고 있습니다. 하지만 세차 요청 기준이나 선정 로직은 운영 시스템에 포함되어 있지 않습니다. 과거에는 세차 관리 조직에서 매일 세차가 필요한 차량을 선정해 시스템에 입력했습니다. 이후 데이터 조직에서 세차가 필요한 차량을 선정하는 룰 베이스의 로직을 개발하여 차량 선정을 자동화했습니다. 이때 선정된 차량 정보가 적재되어 세차 관리 시스템으로 전달될 수 있도록하는 데이터 파이프라인도 함께 구축했습니다. 현재는 기존 자동화 프로세스를 개선해 AI모델을 기반으로 한 오염 이미지 확인을 세차 필요 차량 선정의 주요 로직으로 사용하고 있습니다. 세차 오퍼레이션 과정과 결과는 대시보드를 통해 모터링 됩니다. 관리부서와의 협의를 통해 특정 시점에 요구되는 관리 포인트에 따라 판단 로직을 조정하며 최적화를 진행하고 있습니다.

2.3 ‘세차 오퍼레이션’ 아키텍쳐

쏘카 ‘세차 오퍼레이션’의 작동 플로우를 데이터 구조의 관점에서 다시 한 번 정리하면 아래와 같습니다.

(1) 운영 데이터 적재 : AWS RDS(MySQL) 에 적재된 차량 운영 데이터를 BigQuery 에 주기적으로 적재 합니다.

(2) 차량사진 오염정보 적재 : 차량운영정보를 통해 선정된 차량사진을 AWS S3에서 읽어와 차량 오염도 판단 모델을 통해 차량사진의 오염 정도를 판단하고, 그 결과를 BigQuery에 주기적으로 적재 합니다.

(3) 날씨정보 적재 : 기상청 API를 이용하여 매일 지역별 단기예보 정보를 수집하여 BigQuery에 적재합니다.

(4) 세차상태정보 적재 : 앞서 BigQuery에 적재한 차량운영정보, 차량사진 오염정보, 날씨정보를 고려해서 차량이 세차가 필요한 상태인지를 판단한 데이터를 적재 합니다. (1) ~ (4)의 배치 작업을 Airflow를 통해 관리 하고 있습니다.

(5) 세차관리시스템 운영DB 업데이트 : 쏘카와 세차관리스스템 사이의 정보 전달을 위해 만들어진 API 를 이용하여, BigQuery에 적재된 최신의 세차 상태 정보를 불러와 운영 DB의 차량 세차 상태를 업데이트 합니다.



3. 문제 정의 및 해결 과정

3.1 1차 분석 시도 : confusion * confusion * confusion matrix

처음에는 AI팀이 개발한 모델만으로도 기존 보다 훨씬 나은 방식으로 ground truth(실제값)를 파악하고 이를 바로 활용할 수 있다고 생각했습니다. 랜덤으로 고른 차량 사진과 모델의 추론값을 검수해 봤을 때도 모델의 성능은 꽤나 믿을만 해보였습니다. 그래서 단순하게 confusion matrix를 그려 기존 로직을 모두 AI세차로 대체했을 때의 임팩트를 계산하는 단계로 바로 넘어갔습니다.

  • 과거 룰 베이스 세차 오퍼레이션의 결과값을 당시 수집된 사진을 토대로한 모델의 추론값으로 재판단
    • 모델의 ‘오염’ 판단 조건 시나리오 설정
    • 날씨 조건을 기준으로 샘플링
    • 세차 요청 및 수행 여부에 따라 분류
    • 차량의 상태는 요청과 수행의 리드타임 내의 상태로 정의

하지만 분석을 진행할수록 AI모델이 세차 수행을 효율화 시킬 것이라는 가설을 입증하고 설명하기엔 다소 혼란스러운 결과를 얻었습니다. 또 결과의 정확도를 높이기 위해서 차량의 상태를 판단 할 수 있는 요소들을 분석에 추가할 때 마다 예상과는 다른 결과를 얻었습니다.(e.g. AI모델이 깨끗하다고 한 차량인데 왜 고객 피드백이 나쁘지?, 세차가 이미 요청됐는데 왜 AI모델의 판단 결과가 ‘오염’이지?) 몇 차례의 추가 분석 시도에서도 지속적인 혼란을 겪은 후 한가지 결론을 얻었습니다. 이 문제를 해결하기 위해서 모델이 ground truth라는 가정을 버려야 한다는 점이었습니다. 기존 세차 요청 로직을 AI로 대체할 수 있을 것이란 생각을 버리고, 세차 효율화라는 목표로 돌아가서 우리의 현실과 데이터를 어떻게 읽고 활용할지 처음부터 완전히 다시 정의하기로 했습니다.

3.2 ground truth?

프로젝트를 진행하면서 가장 풀기 힘들었던 문제는 ground truth를 모른다는 점이었습니다. 개나 고양이와 같은 정답과는 다르게 차량이 ‘오염’됐다 또는 ‘깨끗’하다는 판단은 지극히 주관적입니다. 대부분의 사람이 특정 차량을 보고 오염됐다고 판단하는 상태가 있겠지만, 이 또한 어느 정도의 합의를 ‘세차가 필요한 수준의 오염’으로 정의할 것이냐는 주관적인 판단이 필요합니다. 이런 판단은 모델의 학습 데이터를 레이블링 할때 주요하게 고려되는 부분이겠지만 모델 개발자가 서비스 도메인의 특성과 다양한 이해관계를 고려해 이를 결정하는 것은 쉽지 않습니다. 이처럼 ‘오염’이라는 상태를 정의하기 어렵고, 합의 가능한 기준을 만든다 하더라도 각 쏘카존에 있는 차량이 특정 시점에 ‘오염’되었는지 판단할 수 있는 완전한 정보를 수집하는 것이 매우 어려웠습니다.

고양이 인가요? 개 인가요?

차량이 오염된 상태인가요? 세차가 필요한가요?


3.3 다시 원점에서 데이터 정의

ground truth를 모른다는 가정 하에 활용 가능한 판단 정보들을 ‘판단의 주체’라는 기준으로 정리했습니다. 모든 주체가 불완전한 판단을 내릴 수 있다는 것을 전제했으나, 가지고 있는 정보의 정확도를 확인하고 우선순위를 설정할 수는 있다고 생각했습니다.

‘오염’ 판단
판단의 주체를 기준으로 판단 기준을 3가지로 분류함

제공하는 판단 정보
한계
모델의 Inference 결과
  • 차량 상태가 ‘오염’이라는 판단 (prediction값)
  • 판단을 확신하는 정도 (confidence값)
  • 수집된 사진 낱장 마다 남아있는 inference 결과 → 특정 시점에 한 대의 차량이 세차가 필요한 ‘오염’ 상태에 있다는 결론으로 치환해야함
  • 모델 성능 자체의 문제(잘못된 추론)
고객의 위생 피드백
  • 쏘카 고객이 차량 이용 과정에서 남기는 내/외부 위생 상태에 대한 피드백 (good/bad)
  • 고객의 주관적인 또는 진실이 아닌 피드백
샘플 육안 판단
  • 분석가가 특정 시점에 차량 단위로 모아진 샘플 사진을 보고 내린 ‘세차가 필요한 오염 상태’라는 종합적인 결론
  • 특정 시점에 차량의 전체 상태를 판단할 정보(사진)의 부족
  • 판단이 애매한 경우 분석가의 주관 개입


‘차량 상태’ 값 정의
반복적인 세차 요청과 수행이 뒤섞여 특정 시점의 차량 상태값을 설명하기 어려웠기 때문에, 차량이 해당 시점에 어떤 ‘상태’에 있는지 정의가 필요했습니다. 차량이 ‘깨끗한 상태’는 요청된 세차가 수행된 시점으로 정의하고, 최초 세차 요청이 있었던 이후에서 세차가 수행되기 이전 까지를 차량이 ‘오염된 상태’라고 정의했습니다.


3.4 새로운 세차 요청 로직 구성

상황을 정리하기 위해 분석가가 육안으로 판단한 근거를 ground truth로 설정했습니다. 육안 판단을 위해 실제 세차 운영을 관리하는 부서의 도움을 받아 사진 상의 오염과 세차 필요 여부의 기준을 재설정했습니다. 이 과정을 통해 모델의 결과와 ground truth의 차이를 확인했고, 차량 상태와 고객 피드백의 일치 여부도 검토했습니다. 분석가가 판단할 수 있는 정보도 제한적이었지만, 판단 기준을 결정한 후 가진 정보의 신뢰도를 수치화하는 것으로도 복잡한 상황을 해석하는 실마리를 얻었습니다. 이후 해당 결과를 AI팀에 전달하여 모델 성능 개선도 진행했습니다.

아직 어떻게 육안 판단이 아닌 정기적으로 수집되는 정보를 통해 ‘오염’ 판단을 내릴지 핵심적인 과제가 남아있습니다. 오염 판단의 정확도 향상을 위해 오염 여부를 결정하는 각 요소의 교집합을 확인하기로 했습니다. 이를 통해 가장 높은 확률로 더러운 차량을 세차할 수 있는 우선순위 조건을 파악했고, 각 조건에 따른 세차 규모를 추정했습니다.

분석시 확인한 경우의 수를 표현한 밴다이어그램

A’. 모델 결과값
B’. 고객 운행 전 피드백
C’. 고객 운행 후 피드백
D’. 정기 세차 (A,B,C 조건에 해당하는 요청이 없는 경우 정기적으로 세차 실행)

이러한 과정에서 AI모델 값으로 모든 상황을 설명하려는 방식을 포기하고, 세차 요청 기준을 새롭게 구조화 시켰습니다. 세차 요청 기준은 AI모델 판단, 고객 피드백, 정기 세차 필요로 구성되었습니다. 각각의 판단 값에 우선순위를 부여하고, 조건에 따라 필요한 세차 방식을 매칭했습니다. 모델 추론값을 조합하여 오염으로 판단하는 조건에 여러 시나리오를 적용하여 최적의 조건을 고민했습니다.

이제 ‘오염’을 판단할 기준이 정의되었기 때문에 과거 로직과의 비교를 통해 임팩트를 추산하는 것이 가능해졌습니다. 또한 새로운 로직이 설명력이 높아 현업 부서를 설득하기에 훨씬 용이했습니다. 새로운 세차 요청 로직이 배포된 이후, 문제가 발생할 때 빠르게 원인을 파악하고 추가적인 액션을 취할 때 어떤 조건을 레버로 활용해야 하는지 명확히 할 수 있었습니다.

이후 지속적인 모니터링을 위해 평가 지표의 상세 조건을 설정하고 각 지표를 크로스 체크했습니다. 예를 들어, 세차 직후 첫 이용건을 기준으로 고객의 피드백과 모델의 오염 판단 일치도를 확인했으며, 리드타임 별 수행 지표를 설정하여 세차 수행의 효율성을 파악했습니다.

💡 중요한 것은 데이터나 AI 자체가 아니라, 궁극적인 문제 해결을 위해 이를 해석하여 기획과 설계를 만들어내는 ‘관점’입니다.



4. AI(데이터)기반 세차 오퍼레이션 도입 이후

4.1 도입 이후 성과

대당 세차 요청 건을 감소 시키면서도 온디맨드로 세차를 수행할 수 있었습니다. 단순 로직에 의한 광범위하고 반복적인 요청 발행이 아니기 때문에, 한정된 세차 수행 리소스를 이용하는데 있어 적시 수행률 또한 개선될 수 있었습니다. 결과적으로 회사 입장에서는 비용을 감소 시킬 수 있고 고객 만족도 또한 함께 높일 수 있었습니다.

또한 잘 구조화시켜 설명력을 높인 요청 로직은 현재 상황을 지표를 통해 명확하게 이해하고 문제에 빠르게 대응할 수 있게 해주었습니다. 운영 효율화나 고객 만족도 향상을 위해 진행하고자 하는 액션이 있을 때 우리가 어떤 조건을 조정해야할지도 명확히 할 수 있었습니다.

4.2 통제할 수 없는 외부 요인

새로운 로직이 꽤나 합리적인 결론이라는 합의는 얻었습니다. 하지만 여전히 세차 요청과 수행의 사이의 현실적인 격차가 완전한 인과관계를 가진 결론을 얻기 어렵게 했습니다.

  • 세차 요청과 실제 수행 사이에는 시간적인 차이가 있습니다. 요청한 시점과 세차가 이루어지는 시점 사이에는 여러 우선순위가 높은 이벤트가 발생할 수 있으며, 세차원의 현장 방문에는 다양한 제약이 따르므로 요청과 수행이라는 결과를 완벽하게 일치시키기 어렵습니다.
  • 세차원이 세차를 수행한다 하더라도 결과물이 ‘깨끗’한지는 별개의 문제입니다. 세차 메뉴얼이 있더라도 사람의 작업이기 때문에 품질이 일정하지 않을 수 있습니다. 따라서 세차된 차량이 항상 ‘깨끗’하다고 가정하기 어렵습니다.
  • 고객의 세차 만족도 피드백이 편향될 가능성이 있습니다. 파손이 오염으로 간주되거나, 일관된 부정적 리뷰가 있을 수 있습니다. 또한, 심각한 오염으로 인식되는 상태를 정상으로 보고하는 경우도 있습니다.

세차 오퍼레이션은 정보의 정확도를 높이고자 세차를 수행하지 않는 등의 A/B 테스트를 진행할 수 없는 문제입니다. 모니터링 결과의 한계를 인식하며, 문제를 파악하고 개선할 때 최대한 이를 고려한 결론을 내리기 위해 노력하고 있습니다. 또한 근본적인 문제를 개선하기 위해 지속적으로 새로운 해결 방법을 모색하고 있습니다.

4.3 이후 해결을 시도해 보고 싶은 문제

차량 내부 사진 수집
프로젝트를 진행하며 아쉬웠던 부분은 내부 사진의 수집과 활용이었습니다. 대부분의 사진이 차량 외관에 집중되어 있었고, 이로 인해 내부 위생 상태를 판단하는 정보가 부족했습니다. 내부 사진 수집 과정을 쏘카 예약 프로세스에 반영해 이를 모델에 학습시킨다면, 내부 위생 상태 판단의 정확도를 향상시킬 수 있을 것으로 기대합니다.

세차 수행 최적화
세차 요청과 세차 수행이 1대 1로 매칭되지 않고 시차가 존재하는 점은, 로직으로 최적값을 만드는 것과 실제 운영을 효율화하는 것의 차이를 보여줍니다. 이상적인 로직 구현을 위해서는 세차 수행의 최적화가 필수적입니다.

모델 성능 개선 또는 새로운 모델 활용
Human-in-the-loop을 통해 모델의 정확도를 향상시키는 것이 모델의 판단을 신뢰할 수 있도록 하는데 필수적입니다. 이 프로젝트에서는 세차 운영을 관리하는 팀과 협업하여 ‘오염’ 기준을 재설정하고 모델 성능을 개선했습니다. 그러나 지속적인 피드백과 개선을 위해 고객의 의견을 활용하는 선순환 구조가 필요합니다.

또한, 현재 모델보다 성능이 우수한 완전히 새로운 모델을 테스트하는 것도 방법입니다. 종합적인 데이터를 수집하여 개발된 더 좋은 성능의 모델이 있다면 세차 요청을 완전히 자동화할 수 있을 것으로 기대됩니다.



5. 마치며

AI세차는 데이터와 AI를 활용하여 차량 관리와 운영을 효율화한 사례입니다. 기존의 세차 관리 시스템을 활용하여 데이터 파이프라인을 구축하고, 신규 개발된 로직을 운영 프로세스에 적용했습니다. 이후 1년 이상에 걸쳐 세차를 관리하는 조직과 협업하여 로직을 개선하고 최적의 운영 방식을 모색해왔습니다. 뿐만아니라 AI모델은 세차원의 세차 수행 품질 및 깨끗한 반납(고객의 세차 인증)을 자동으로 검수하는 데에도 활용하고 있습니다.

이 글에서 다룬 케이스에서 AI모델이 주는 prediction과 confidence 값은 복잡한 현상의 일부를 나타내는 숫자입니다. 낱장의 사진은 매우 제한된 정보를 담고 있기 때문에 문제해결을 위한 유의미한 정보로 전환시키는 과정이 필요합니다. 이를 위해서는 대량의 데이터를 활용할 수 있는 인프라가 구축되어야 하며, 도메인의 복잡한 문제와 기존 운영 방식을 깊게 이해하는 분석이 필요합니다. 마지막으로 다양한 이해관계자를 설득하기 위한 수치적 근거와 전체 적용 프로세스를 제안할 수 있는 기획력 또한 필요합니다. 이처럼 데이터를 다루는 역량과 이를 적극 수용하는 환경이 AI를 가상이 아닌 현실로 만드는데 필수적입니다.

마지막으로, Chat GPT 만큼 혁신적인 성능의 세차 판단 모델이 나오더라도 이는 위생 문제에 대한 최소한의 사후 대응일 뿐입니다. 개개인의 이용자가 셰어링되는 차량을 깨끗히 사용하는 문화가 정착될 수 있도록 AI를 활용하는 방안을 찾아 적용하는 것이 궁극적인 고객 경험의 개선이라고 생각합니다.


AI모델을 활용한 세차 오퍼레이션 효율화 소개는 여기까지 입니다. 다음에는 세차 오퍼레이션 아키텍쳐에 포함되어 있으나 이 글에서 다루지 않는 ‘날씨’ 데이터를 활용한 세차 ‘Data Product (3) AI(데이터)로 실제 운영 효율화가 가능할까? - 날씨 세차 도입기’ 소개 글로 다시 찾아 뵙겠습니다.