본문 바로가기

Tech/AI 해커톤

2.[DataCentric] 데이터의 문제점

Data Centric AI

최근 들어 딥러닝 계에서 Data-Centric AI라는 말을 자주 듣게 됩니다. 실제로 매년 기술의 성숙도를 표현해 주는 가트너의 하이프사이클(Hype Cycle)을 보면, Data-Centric AI는 많은 관심과 기대를 받고 있는 분야임을 확실히 알 수 있습니다.

Hype Cycle for Artificial Intellgence, 2022 (출처, Gartner)

그렇다면, 이렇게 떠들썩한 Data-Centric AI가 뜻하는 메시지는 뭘까요? 이름에서 알 수 있듯이 데이터의 관점으로 AI를 바라본다는 것입니다. 기존에는 모델 관점으로 AI가 많은 발전을 이뤄 왔었죠. 이를 Model-Centric AI라고도 합니다. 하지만 최근 들어 Model 보다는 Data의 관점에서 더 많은 연구와 작업이 필요하다고 대두되고 있습니다. 실제로 “머신러닝 성능을 향상시키기 위해선 모델 개선이 더 유리한가, 데이터 개선이 더 유리한가”라는 질문에 수많은 전문가분들의 투표 결과는 아래와 같았습니다.

Model vs Data

사실 너무나도 당연한 결과입니다. 제 아무리 일류 요리사라 하더라도 신선치 않은 재료로는 맛난 음식을 만들 수 없는 것처럼 말이죠. 딥러닝 또한, 아무리 대단한 모델이라 하더라도 학습한 데이터가 엉망이라면, 좋은 결과를 기대하기 어렵습니다. 모델을 학습시킬 데이터를 어떻게 수집하고 가공할지, 라벨링은 또 어떻게 진행해야 할지 등 데이터 관점의 작업이 문제를 해결하는데 더 중요한 역할을 하게 된 것입니다. 모델의 파라미터를 일일이 튜닝하는 것보다 말이죠. 이처럼 데이터의 관점으로 문제를 바라보는 것이, Data-Centric AI입니다. 이번 글에서는 해당 프로젝트를 위해 딥러닝 모델을 거론하기 전, 데이터가 가진 문제점과 그 해결 방안에 대한 여정을 기록하고자 합니다.

 

AI system development will move faster
if we can shift from being Model-Centric to being Data-Centric.

-Andrew Ng-

 

불량을 2가지 관점으로 나눠보자

불량의 이미지에서 널링(Knurling) 부분만을 확대해 보면 아래와 같습니다.

불량이 존재하는 위치 관점에서 봤을 때 찍힘밀림, 이중선의 불량은 오로지 부품의 널링 내에서만 발생하게 됩니다. 이와 달리 미압입의 경우에는 널링과 리벳 사이의 관계에서 발생하게 되죠. 각 불량 유형이 판단되는 로직이 다르기 때문에 아래와 같이 ‘널링 의 요소’, ‘널링 의 요소’ 이 2가지 관점으로 나누어 보았습니다.

1) [널링 내의 요소] 일관되지 않은 라벨링

제공된 bbox 라벨링 데이터가 있었기 때문에, 곧바로 객체 탐지 모델을 학습시켜 불량을 검수할 수 있겠다는 생각이 들었습니다. 하지만 라벨링을 살펴보는 도중 문제가 될 만한 요소를 발견했습니다. 바로 일관되지 않은 라벨링이었습니다. 아래는 찍힘에 대한 불량을 라벨링 해놓은 이미지입니다.

찍힘에 대한 Bounding Box 시각화

위의 이미지를 보시면 아시겠지만, 찍힘의 경계가 그리 명확하지가 않습니다. 어디까지가 찍혀있는 곳이고, 어디까지가 정상인지 명확히 구분 짓기가 힘들죠. 이렇게 되면 라벨링을 진행할 때 문제가 생길 수 있습니다. 사람마다 저마다의 기준으로 라벨링을 진행하기 때문이죠. 설령 라벨링 가이드가 제시되어 있다 하더라도, 찍힘의 경계가 워낙 불분명해서 여전히 위험성이 존재할 것으로 보입니다. 위의 예시로 봤을 땐, 첫 번째 널링에 대한 찍힘은 단 하나의 라벨링으로 나타내었고, 두 번째 널링에 대한 찍힘은 총 3개의 라벨링으로 나타내었습니다. 하지만, 누가 라벨링을 하느냐에 따라 두번째 널링의 찍힘도 하나의 라벨링으로 나타낼 가능성이 있습니다. 마치 첫 번째 널링에서 흩어진 찍힘의 영역을 하나의 라벨링으로 나타낸 것처럼 말이죠. 이렇게 일관되지 않은 라벨링은 모델이 학습하는 데 있어 혼동을 줄 수 있으며, 모델 성능의 하락 원인이 되기도 합니다.

 

찍힘뿐만이 아니었습니다. 밀림의 경우를 한번 살펴보겠습니다.

밀림에 대한 Bounding Box 시각화

밀림의 경우도 사람의 눈으로 확연한 그 경계선을 파악하기 쉽지 않았습니다. 이 또한 일관되지 않은 라벨링으로 인해 학습에 부정적인 영향을 끼칠 가능성이 높았습니다.

 

이중선 같은 경우는 특정 영역이 아닌, 널링 그 자체로 라벨링이 되어있기 때문에 특정 영역의 위치를 탐지하는 객체탐지 모델로 해결할 필요성이 없었습니다.

이중선에 대한 Bounding Box 시각화

 

정리해 보자면, 각 불량에 대한 bbox는 일관된 방식으로 라벨링 되어 있지 않은 위험성이 보였고, 각 불량마다 명확한 경계를 정의하기 어렵기 때문에 Object Detection 방식으로 불량을 검수하는 건 적절하지 않다고 판단하였습니다. 불량에 대한 특정 영역을 검출하는 게 아닌, 널링 그 자체만을 보고 불량을 판단하는 Classification방법론으로 문제를 해결하기로 하였습니다. 단순 Classification으로 문제를 해결한다면 아래와 같은 이점이 있습니다.

  • 일관되지 않은 라벨링으로 인한 위험성 제거
  • bbox 라벨링 작업이 필요 없기에 공장 측에서의 시간과 비용 절약

하지만 불량이 어느 위치에 존재하는지 정보를 얻을 수 없다는 단점도 분명 존재했습니다. 공장 내의 설비 엔지니어 관점으로 본다면, 부품의 어느 위치에 찍힘이 자주 발생하는지, 밀림이 어느 부위에 자주 발생하는지, 이러한 위치 정보들이 설비 공정을 개선하는데 도움이 될 수 있습니다. 즉, 불량의 위치 또한 필요하다고 판단을 했습니다. 이러한 점을 보완하기 위해 GradCAM 기법을 적용해, 불량의 위치까지 표현할 수 있도록 기획하였습니다. GradCAM에 대해서는 추후 더 자세히 다루도록 하겠습니다.

 

2) [널링 외의 요소] 이상치 & 데이터 불균형

다음으로는 널링 외의 요소 즉, 미압입에 대한 불량 유형을 살펴보겠습니다. 미압입을 검수하는 건 꽤 쉬운 task가 될 거라 예상했습니다. 널링과 리벳을 탐지해서 이 둘 사이의 거리로 판단하면 될 거라 생각했죠.

하지만, 문제는 아래와 같이 리벳이 아주 살짝 떨어져 있는 경우도 있었습니다.

이러한 경우도 확실하게 미압입으로 검출을 해내야 할 텐데, 단순히 거리로만 판단하기에는 위험성이 있습니다. 널링과 리벳 사이의 거리가 매우 짧은 미압입이므로, 정상적으로 압입 된 리벳이라 판단할 가능성이 있기 때문이죠. 널링과 리벳을 탐지하는 모델에 대한 오차도 있을 테니 거리로 판단하는 것은 더더욱 불안정할 수밖에 없어 보였습니다. 그렇다면 널링 내의 요소(찍힘, 밀림, 이중선)처럼 단순 분류로 압입과 미압입을 분류해 보는 건 어떨까? 나름 시도해 볼 방법론이었지만, 문제는 데이터 불균형이었습니다.

정상과 미압입의 데이터 수 비율

압입이 되어잇는 정상 데이터인 경우는 1173장, 미압입인 경우가 356장, 3배 이상 차이나는 데이터 수입니다. 전형적인 불균형한 데이터셋이죠. 실제로, 일반 제조업에선 정상인 데이터는 수집하기 쉽지만, 비정상 데이터는 수집하기가 어렵습니다. 100개를 생산해서 1개의 불량이 나오는 공장이라 했을 때, 비정상 데이터 100개를 수집하기 위해서는 부품을 총 10,000개를 생산해야 하기 때문이죠. 자연스럽게 데이터 불균형 현상이 생기기 마련입니다. 그래서 해당 문제를 정상 데이터 만을 사용하는 비지도 학습방법론으로 이상치 탐지를 통해 문제를 해결하고자 합니다. 즉, 미압입인 데이터를 아예 사용하지 않고, 정상인 데이터만을 활용해 불량 검수 모델을 구현하는 것이죠. 해당 방법론은 아래의 장점을 가지게 됩니다.

  • 정상 데이터만을 학습하므로, 데이터 불균형 문제 해결
  • 비지도 학습이므로 라벨링 작업이 필요 없기에, 공장 측에서 시간과 비용 절약

정리해 보자면..

부품 내에 불량이 발생하는 위치를 기준으로 아래와 같이 두 가지 관점으로 나누어 봤습니다.

  • [널링 내의 요소] → 찍힘, 밀림, 이중선
  • [널링 외의 요소] → 미압입

[널링 내의 요소]에는 “일관되지 않은 라벨링”에 대한 문제로 Object Detection이 아닌, Classification으로 불량을 검수하고자 합니다.

[널링 외의 요소]에는 “이상치”와 “데이터 불균형”의 문제로 비지도학습 방법론을 통한 이상치탐지 방법론으로 불량을 검수하고자 합니다.

 

NEXT!

데이터를 면밀히 살펴보면서 이런저런 크고 작은 문제들을 살펴봤습니다. 그리고 그 속에서 어떤 방식으로 해결해 나갈지 인사이트들 또한 얻을 수 있었죠. 이제는 실제 모델링을 통해 이러한 방법론을 직접 구현하고, 잘 작동하는지를 실험해 볼 단계입니다. 다음 포스팅에서는 이러한 실험 과정과 결과를 통해 직접 불량을 검수해 내는 여정에 대한 글이 될 것 같습니다.

 

긴 글을 읽어주셔서 감사합니다.