슈퍼브 플랫폼의 모델 진단 기능을 통해 반나절 만에 AI 모델 성능 개선하기: BDD 100K 사용 실험 사례 (mAP 10%성능 향상)

슈퍼브 플랫폼의 모델 진단 기능을 통해 반나절 만에 AI 모델 성능 개선하기: BDD 100K 사용 실험 사례 (mAP 10%성능 향상)
Improving AI model pefromance in just 3hrs with Superb Platform's Model Diagnosis feature

요약

슈퍼브 플랫폼을 통해 AI 모델을 학습하고, 학습한 모델 성능을 진단하여 모델의 취약점을 파악하여 모델 성능을 개선하였습니다. 개선 전후 모델의 평균 정확도 (mAP) 값이 38.9에서 42.9로 상승한 것을 확인할 수 있습니다.

진행 과정은 아래와 같습니다.

  1. 데이터 선별 및 데이터 가공(라벨링)
  2. 모델 학습
  3. 모델 성능 진단
  4. 모델 취약점 파악 및 개선
  5. 모델 재학습
  6. 데이터 보강
  7. 추가 재학습 모델 성능 진단 및 배포


들어가며

지난 포스팅에서 AI 모델 개발 단계에서 지속적인 개선과 최적화가 필요한 이유와 진행 과정을 알아보았습니다. 모델 성능 진단에 필요한 지표들의 정의와 활용 방법에 대해서도 다루어보았습니다.

이번 포스팅에서는 AI 모델 학습 후, 해당 모델의 성능을 진단하여 모델의 취약점을 파악, 보완하여 모델 성능을 개선하는 과정을 실제 실험 사례를 통해 한 단계씩 보여드리겠습니다.

관련 블로그 글 확인하기:

  1. 모델 취약점을 한 눈에 비교·분석하고, 성능을 한 껏 업그레이드 하세요.
  2. 모델 진단에 사용되는 지표와 활용 방안 알아보기 Part 1 (혼동 행렬이란?)
  3. 모델 진단에 사용되는 지표와 활용 방안 알아보기 Part 2 (F1 점수, PR 커브, IoU, AP란?)


이번 실험에는 BDD 100K 라는 오픈 데이터셋을 활용하였습니다.

BDD 100K: A Large-scale Diverse Driving Video Database 데이터셋이란?

버클리 인공지능 연구 실험실(Berkeley Artificial Intelligence Research)에서 공개한 오픈소스 데이터로, 1억 200만개의 이미지 데이터로 이루어져 있습니다. 이미지 뿐만 아니라, GPS, IMU, 타임스탬프 등의 메타데이터까지 포함되어 있어 다양한 용도로 활용될 수 있습니다.

도로 주행 상황에서 사용되는 모든 네트워크를 타겟으로 제작되었기 때문에 차선 뿐만 아니라 차량, 사람, 도로 시설 등에 대한 라벨링이 이미 되어 있습니다.

실험 목적

저희는 이 실험의 결과가 특히 AI 모델 도입 후 고도화 과정에서 어려움을 겪는 기업들에게 의미 있는 실전 가이드라인을 제시할 수 있을 것으로 기대하고 있습니다. 많은 시간과 큰 비용을 투자하여 AI 모델을 개발하였으나, 기대하는 성능을 얻지 못하여 프로젝트를 종료한 기업, 또는 테스트 환경(PoC)에서는 높은 성능을 보이던 AI 모델이 실제 환경(Wild)에서는 제 성능을 발휘하지 못하여 결국 AI 도입을 실패하거나 포기한 경험이 있는 기업들에게 구체적인 원인 파악과 극복 방법을 슈퍼브 플랫폼 실험 사례를 통해 제공하여, 결과적으로 기업이 AI 모델을 성공적으로 도입할 수 있도록 도와드리고자 합니다.

💡
슈퍼브 플랫폼이란?
‘슈퍼브 플랫폼’은 기업 사용자가 AI 모델 학습과 진단, 취약점 파악 및 보완, 모델 재학습을 통한 모델 개선 뿐 아니라 지속적인 성능 개선의 과정을 쉽고 효율적으로 진행할 수 있도록 설계된 ‘MLOps 종합 플랫폼’ 입니다. 사용자는 슈퍼브 플랫폼을 통해 시간과 비용을 절약하면서 높은 성능까지 가장 합리적으로 확보하고 구현할 수 있습니다.

실험 개요

AI 모델을 개발하고 향후 실제 환경에 도입하여 지속적으로 관리, 고도화하기 위해서는 아래와 같은 과정을 끊임없이 반복하여야 합니다. 이는 우리가 수없이 언급한 MLOps 파이프라인의 과정이며, 이미 (저희 슈퍼브에이아이를 포함한) 많은 기업과 연구기관이 이 파이프라인의 중요성을 강조하고 있습니다.

구글 등 검색엔진에 ‘MLOps’를 검색했을 때 흔히 볼 수 있는 다이어그램 (출처: NVIDIA) 

복잡하고 많은 과정으로 이루어져 있는데요, 저희는 이번 실험 주제인 모델 성능 개선 과정에 초점을 맞추어 아래와 같이 간단하게 정리해 보았습니다. 

쉬운 이해를 위해 다시 그린 MLOps, AI 개발 전 과정 다이어그램

그럼, 이제 위 과정을 통해 초기 학습 모델의 성능이 어떻게 개선되는 지 살펴보도록 하겠습니다.

1. 데이터 선별:

BDD 100K 데이터 30,000장을 ‘자동 선별 - 학습/검증용 데이터셋 나누기(Split Train/Validation Set)’ 기능을 통해 학습용(Train)과 검증용(Validation) 데이터셋으로 각각 분리합니다. 저희는 학습용:검증용을 4:1 비율인 24,000장:6,000장으로 나누었습니다.

선별된 데이터셋은 ‘슬라이스(Slice)’라는 데이터 묶음으로 분리됩니다.

🧐
왜 30,000장을 선별하나요?
이는 적은 수량의 데이터를 학습하여도 상대적으로 많은 수량의 데이터를 학습할 경우와 동등한 모델 성능을 제공할 수 있다는 저희의 이전 실험을 기반으로 합니다. 적은 수량으로 학습을 할 경우, 데이터 라벨링 부터 학습 소요 시간까지 다양한 리소스를 최적으로 절감할 수 있습니다.
이전 실험기 확인해보기
  • 총 BDD 100K 데이터셋 
    • 크기: 30,000장
  • 학습용 데이터셋:
    • 슬라이스 명칭: “train experiment v1”
    • 데이터셋 크기: 24,000장
  • 검증용 데이터셋 
    • 슬라이스 명칭: “validation experiment v1”
    • 데이터셋 크기: 6,000장
💡
슈퍼브 큐레이트의 자동선별이란?
사용자는 원하는 상황에 따라 아래 4가지 옵션으로 데이터를 자동으로 선별해주는 기능입니다.
● 라벨링 할 데이터 선별(Curate What to Label)
● 학습/검증 데이터셋 선별(Split Train/Validation Set)
● 특이 데이터 찾기(Find Edge Cases)
● 라벨링 오류 찾기(Find Mislabels)

(출처: https://ko.docs.superb-ai.com/docs/auto-curate)
💡
슬라이스(Slice)란?
슬라이스는 데이터셋에 소속된 하위 데이터 묶음으로, Superb Curate에서 데이터를 활용한 모든 행위의 기본 단위입니다. 사용자는 필요에 따라 특정한 성질이나 의미를 갖고 있는 데이터들을 슬라이스로 생성할 수 있습니다. 

2. 모델 학습

이제 모델을 학습할 준비가 끝났습니다. 슈퍼브 모델은 현재 5개의 고성능 베이스라인 모델을 지원하고 있습니다. 사용자는 각각 모델의 크기와 속도, 어노테이션 등을 비교하여 프로젝트에 가장 적합한 모델을 골라 바로 학습에 사용할 수 있습니다. 이번 실험에서는 ‘YOLOv6-L6’라는 모델을 사용하였습니다.

일정한 테스트를 위해 해당 실험에서는 학습용 및 검증용 슬라이스를 지정하여 학습합니다.

학습할 클래스를 확인하고 모델 이름을 지정하여 학습을 시작합니다. 이렇게 데이터셋이 정해져있다면 아주 손쉽게 누구나 모델을 학습할 수 있습니다. 슈퍼브 모델에서 학습할 경우, 고성능 모델일수록 학습 시간이 오래 걸리며, 데이터양에 따라 최대 12시간까지 소요됩니다.


3. 모델 성능 진단

모델 학습이 완료되면, 해당 화면을 통해 학습 모델의 성능을 한 눈에 파악할 수 있습니다. 모델 성능 판단에 가장 많이 활용되는 mAP 지표부터 PR 커브 그래프, IoU, F1 점수, 신뢰점수 (Confidence), 혼동 행렬(confusion matrix) 등 다양한 모델 성능 지표 및 그래프 확인이 가능합니다. 

🧐
각종 모델 성능 지표에 대해 궁금하신가요?

모델 성능을 판단하기 위해서는 다양한 지표들을 활용하여 해석해야 합니다. 각 지표의 정의와 활용 방안에 대해서 더 자세히 알아보세요.

🔗지금 확인하기

4. 모델 취약점 파악 및 개선 (슈퍼브 큐레이트의 ‘모델 진단’, ‘자동선별’ 및 슈퍼브 라벨 ‘라벨링’ 기능)

초기 학습 모델의 mAP 는 38.9 입니다. 이제 저희는 데이터 관점으로 모델 취약점을 파악하고, 취약 데이터를 개선하여 mAP 모델 성능 수치를 개선해 보도록 하겠습니다. 

취약 데이터를 간단하고 빠르게 파악할 수 있는 방법은 슈퍼브 큐레이트를 통해 확인하는 것입니다.

1. 슈퍼브 큐레이트의 ‘모델 진단’ 기능 활용하기

슈퍼브 플랫폼이 제공하는 그리드 뷰와 애널리틱스뷰의 다양한 필터 옵션을 통해 성능이 취약한 데이터를 직접 확인하고, 해당 데이터를 수정 또는 보강하여 모델 성능을 개선해보도록 하겠습니다. 아래 필터 옵션들을 통해 데이터를 확인하고, ‘슬라이스’를 통해 구분이 가능합니다.

1) 잘못 라벨링된 정답 데이터(= Mislabeld)

2) 학습한 모델의 출력값이 정답 데이터의 라벨과 일치하는 데이터 (=True Positive) 

3) 정답 데이터에는 라벨링이 잘 되어 있지만 모델이 예측하지 못한 데이터 (=False Negative)

4) 학습한 모델은 출력값을 예측했지만, 정답 데이터에는 아무 라벨링이 없는 데이터 (=False positive)

2. 슈퍼브 큐레이트의 ‘자동 선별 - Mislabeled Data’ 기능 활용하기

1) 학습에 활용된 데이터셋 (정답 데이터) 중 잘못 라벨링된 데이터 (=Find Mislabel, 명칭: mislabel test slice)

이번 실험에서는 2-1) 잘못 라벨링된 학습용 데이터 슬라이스를 슈퍼브 라벨로 보내 라벨링을 정정하여 재학습에 사용하겠습니다.

해당 데이터가 이미 잘못 라벨링되어 있는 상태에서 학습되었기 때문에 이 부분을 정확하게 정정한다면, 모델 성능 수치는 오를 것입니다.

슈퍼브 라벨로 이동하여, 정정해야할 슬라이스를 열어봅니다.

실제 데이터를 확인해보니, 실제 객체는 ‘자동차(car)’ 이지만, 라벨링이 ‘신호등(traffic light)’으로 잘못 라벨링되어 있거나 실제로는 ‘신호등(traffic light)’이지만 ‘운전자(rider)’로 잘못 라벨링되어 있었습니다. 이렇게 잘못 라벨링된 정답 데이터를 확인하여 올바른 라벨링으로 정정하는 작업을 진행합니다.

모든 데이터의 정정 작업이 끝나면, 정정한 슬라이스를 다시 슈퍼브 큐레이트로 보내 다시 학습할 준비를 합니다. (“Send to Curate” 기능) (modified label slice)

5. 모델 재학습 (슈퍼브 모델의 “Train with more data” 기능)

2번 과정에서 학습한 mAP 38.9 모델에 4번 과정에서 정정한 데이터셋을 추가, 재학습하여 모델 성능을 개선해봅니다. (명칭: [experiment]model-diagnosis-YOLOv-6v2)

6. 적은 클래스의 데이터 보강 (슈퍼브 큐레이트의 ‘Query’ 기능 및 ‘자동선별 - 희귀 케이스’ 기능)

5번 과정을 통해 mAP 값이 42.3으로 성능을 많이 개선하였습니다. 여기에서 더 개선할 수 있는 방법을 모델 진단 지표를 통해 고안할 수 있습니다.

1) ‘Rare Class’ 추가 (슈퍼브 큐레이트의 ‘Query’ 기능): 이번 모델 학습 결과를 확인해보니, 일부 클래스인 ‘자전거(bike)’, ‘오토바이(motor)’, ‘운전자(rider)’가 상대적으로 적은 수량이 학습된 것을 파악할 수 있습니다. 이 3개의 클래스의 데이터를 더 확보하여 데이터 학습에 활용한다면, 모델 성능을 한 번 더 개선할 수 있을 것입니다. 

학습 또는 검증에 활용하지 않은 데이터 중에서  ‘자전거(bike)’, ‘오토바이(motor)’, ‘운전자(rider)’에 해당하는 데이터 약 8,000장 중 일부인 약 3,000장을 슬라이스로 만들어 모델 추가 학습에 활용하도록 하겠습니다.

2) Edge Case 추가 (슈퍼브 큐레이트의 ‘자동선별 - 희귀 케이스’) 

희귀 케이스를 추가하여 학습하는 방법도 고려해볼 수 있습니다. 학습 또는 검증에 활용하지 않은 데이터와 6-1)에 해당하지 않는 데이터 중 자동 선별 기능을 통해 희귀 케이스 3,000장을 모델 추가 학습에 활용합니다. 


7. 추가 재학습 및 모델 성능 진단과 배포 (슈퍼브 모델의 'Train with more data', 슈퍼브 큐레이트 ‘모델 진단’ 기능)

1)과 2) 과정에서 얻은 두 데이터 슬라이스를 다시 슈퍼브 모델의 ‘모델 추가 학습(Train with more data)’ 기능을 활용하여 다시 학습합니다. 두 번째 학습했던 mAP 42.3 보다 높은 수치가 나온다면, 이번 과정을 통해 모델 성능을 한 번 더 성공적으로 개선했다는 의미가 됩니다.

mAP 값이 42.3 에서 42.9로 다시 한 번 모델 성능이 상승하였습니다! 해당 지표 뿐만 아니라 여러 다른 모델 성능 지표를 확인하여 모델 성능 향상을 다각도로 진단하고 확인할 수 있습니다. 

‘모델 진단’ 기능으로 들어가 혼동 행렬 및 PR 커브 등 여러가지 지표와 그래프를 통해 처음 학습한 모델 (mAP 38.9)와 가장 마지막에 학습한 모델 (42.9)를 비교하여 얼마나 성능이 개선되었는지 직관적으로 판단할 수 있습니다.

🧐
PR 커브, 혼동행렬 등이 지니는 의미에 대해서 궁금하신가요?

모델 성능을 판단하기 위해서는 다양한 지표들을 활용하여 해석해야 합니다. 각 지표의 정의와 활용 방안에 대해서 더 자세히 알아보세요.

🔗지금 확인하기

"학습한 Baseline 모델의 종류를 바꾸는 방법도 있지 않나요?"

슈퍼브 모델이 제공하는 다른 모델을 통해 보유하고 있는 데이터셋과 가장 적합한 모델을 찾아볼 수도 있습니다. 하지만, 모델 성능을 진단하여 취약점을 파악하고 개선하는 데이터 중심 접근 방식은 동일합니다. 저희는 슈퍼브 모델에서 제공하는 DETA (Swin-L) 모델을 선택하여 동일한 과정으로 학습해보았습니다. 이 경우에도 정확도가 동일한 양상을 보이며 상승한 것을 확인할 수 있습니다.

마치며

데이터 가공과 모델 학습 시간을 제외하였을 경우, 모델 취약점을 분석하고, 파악하여 개선 방안을 도출하는 데까지 반나절밖에 걸리지 않았습니다. 슈퍼브 큐레이트의 모델 진단을 통해 어떤 데이터에서 분류가 잘못되었는지 명확하게 파악할 수 있고, 어떤 오류가 가장 많이 발생하는 지 한 눈에 파악할 수 있어 다양한 모델 지표를 해석하고 조합하는 과정에서 생기는 많은 시행착오를 줄일 수 있었습니다. 또한 모델 성능 향상 방법을 보다 직관적으로 빠르게 도출하고, 어떤 데이터를 보완, 수정해야 할지도 알 수 있습니다. 데이터 라벨링 과정에서의 오류인지, 희귀 데이터가 부족한 것인지, 특정 클래스의 객체가 더 필요한 것인지 등을 바로 파악할 수 있다는 것입니다. 모델 진단 기능을 통해 “진정한 데이터 중심(Data centric) 접근 기법”이 적용된 MLOps 사이클을 구축할 수 있다는 것 또한 확인할 수 있었습니다.

좋은 MLOps 파이프라인 구축의 핵심은 MLOps 사이클 전체 과정의 속도를 최대한 단축시켜서 최대한 빠르게 여러번 돌아가게 하는 것입니다. 슈퍼브 플랫폼은 MLOps 사이클의 처음부터 끝까지 모든 과정을 하나의 공간에서 수행할 수 있도록 디자인되어 있습니다. 외부 다른 도구나 플랫폼으로 왔다갔다 하지 않고, 하나의 플랫폼 안에서 모든 과정을 수행할 수 있기 때문에 사용자들은 불필요한 시간과 비용을 낭비할 필요가 없습니다. 


AI 도입과 모델 개선에 어려움이 있거나, 개선 후 성능 변화를 분석하는 과정이 궁금하신가요?

슈퍼브 플랫폼을 통해 어떻게 모델 성능을 더 개선할 수 있는 지 궁금하시다면 망설이지 말고 바로 문의해 주세요. 여러분의 데이터와 산업에 특화된 방식으로 제품 시연과 데이터 중심 접근 방법에 대해 알려 드릴 수 있습니다. 슈퍼브 플랫폼은 AI 모델 상용화를 목표로 하는 관련 종사자에게 최고의 선택이 되리라 자부합니다.