Image

AI로 Image Segmentation 정확도를 높이는 방법

Image Segmentation 정확도 향상 과정

2023
.
04
.
14
AI로 Image Segmentation 정확도를 높이는 방법

안녕하세요, 이번 글에서는 데이터헌트가 데이터 가공 작업에 Image Segmentation 기술을 어떻게 활용했는지, 구체적으로는 마스크, 폴리곤 을 어떻게 사용하는지, 마지막으로 그 효과는 어땠는지 실제 사례를 들어 소개하도록 하겠습니다.

Image Segmentation 이란?

Image Segmentation이란 이미지 내 객체 또는 배경을 픽셀 단위로 분류하는 기술입니다. 이미지의 가장 작은 단위인 픽셀 수준에서 레이블링을 하기 때문에 Dense label이라는 표현을 하기도 합니다. 그리고 이 기술은 영역을 분리하는 방식에 따라 Semantic segmentation, Instance segmentation, Panoptic segmentation으로 나눌 수 있습니다.

Image Segmentation 종류
Image Segmentation 종류

각각을 짧게 설명하자면,

  • Semantic Segmentation: 이미지 내 모든 픽셀을 사전에 정의된 클래스로 분류. 분류의 개념으로 같은 클래스를 객체 별로 구분하지 않으며 중첩된 경우 하나로 인식
  • Instance Segmentation: 이미지 내 객체(object)만 분류, 같은 종류의 객체라도 서로 분리해서 인식
  • Panoptic Segmentation: 위의 두가지를 결합한 방식. thing(셀 수 있는 대상)과 stuff(셀 수 없는 대상)로 나눠서 부르기도 함

그리고 레이블링 된 각각을 마스크(mask)라고 부릅니다.

그렇다면 위의 마스크는 사람이 어떻게 만들 수 있을까요? AI의 도움이 없다면 손수 만들 방법은 크게 2가지가 있습니다.

  • 그림판의 브러쉬 기능처럼 색칠을 하며 만들기
  • 대상을 둘러싸는 점(Polygon)을 찍어 만들기

하지만 브러쉬 기능을 쓴다면 하나하나 색칠해야 하는 번거로움이 있으며, 폴리곤을 만든다고 해도 많은 점을 찍어야 하기 때문에 번거롭습니다.

Image segmentation 폴리곤 작업 예시
폴리곤 작업 예시 - 자동차 하나를 위해 많은 점을 찍어야 한다

둘 중 어느 기능을 활용하는게 더 나을까요? 브러쉬와 폴리곤 두 기능을 모두 고려하여 많은 실험을 수행한 결과, 폴리곤 작업이 정확도나 시간 측면에서 낫다고 판단했습니다. 하지만 비교적 괜찮았을 뿐, 자동차 하나에도 많은 점을 찍어야 하기 때문에 수만 수십만장의 이미지를 작업하려면 AI의 도움이 절실했습니다.

Image Segmentation에 AI적용 방법

어떤 image segmentation이 가능한가?

AI를 통해 마스크 또는 폴리곤을 얻는 방법은 여러가지가 있습니다. 몇가지를 소개드리자면

마스크를 얻는 방법

  • Segmentation 모델을 통해 마스크 획득
  • 이미지 내 대상을 클릭하여 마스크 획득
  • 이미지를 포함하는 바운딩박스를 생성하여 마스크 획득
  • 객체의 상하좌우 4개의 점을 클릭하여 마스크 획득

폴리곤을 얻는 방법

  • 폴리곤을 추론하는 모델을 통해 폴리곤 획득
  • 얻은 마스크를 폴리곤으로 변환하는 알고리즘 적용

등이 존재합니다. 데이터헌트에는 위의 방법 중 여러가지가 탑재되어 있지만 이번에 소개해드릴 방법은 얻은 마스크를 폴리곤으로 변환하는 알고리즘입니다. 그 이유는 앞서 설명했듯, 작업자 입장에서는 브러쉬보다 폴리곤 작업이 보다 쉬웠다는 통계를 얻었기 때문에 AI를 통해 더 좋은 폴리곤을 전달하는 것이 가장 효과적이라고 판단했습니다.

AI 적용 및 문제

자동차를 둘러싸는 점 (빨간색)
자동차를 둘러싸는 점 (빨간색)

하지만 AI도 만능일 수는 없습니다. 위 그림과 같이 AI를 통해 자동차를 둘러싸는 폴리곤을 얻을 수 있었지만 그 정확도는 둘째치고 문제는

  • AI의 결과를 받아 수정(점의 생성/이동/삭제)이 필요함
  • 점의 갯수가 너무 많음

이었습니다.

친절하게 많은 점을 찍어준 건 좋은데, 그만큼 손이 많이 가는 작업이 되어버렸습니다. 따라서 점의 개수를 효과적으로 줄이는 방안이 필요했습니다.

Image Segmentation에 AI 적용 개선 방법

기울기 기반 필터링

첫번째는 기울기의 변화를 활용하여 점의 개수를 줄이는 방법입니다.

기울기 변화로 폴리곤 점의 갯수 줄이기
기울기 변화로 폴리곤 점의 갯수 줄이기

위의 그림과 같이 초기에는 거의 직선으로 보이는 구간 안에 점이 6개나 찍혀있는 것을 알 수 있습니다. 하지만 이렇게나 많이 필요하지 않겠죠. 임의의 시작 위치부터 하나씩 기울기를 참조해가며 그 변화량이 적은 구간은 과감하게 점을 삭제해버렸습니다.

비율 기반 필터링

다음 방법은 객체의 사이즈와 곡률을 고려하여 점의 개수를 직접적으로 줄이는 비율 기반 필터링입니다.

  1. 객체 영역을 작은 그리드(grid)로 분할
  2. 점이 존재하는 모든 그리드에 대해 점이 이루는 곡률을 계산
  3. 객체 사이즈와 곡률에 비례하여 샘플링 비율 결정
  4. 정해진 샘플링 비율에 따라 각 그리드의 점 개수 줄임

비율 기반 필터링 결과
비율 기반 필터링 결과

위의 두가지 필터링을 거쳐 어떤 결과물이 나올까요? 분명한 점은 점의 개수를 줄였음에도 폴리곤이 객체를 잘 둘러싸고 있다면 성공일 것입니다. 아래는 왼쪽부터 마스크를 얻고, 폴리곤으로 변환한 후 점의 개수를 줄이는 과정을 보여주는 그림입니다.

마스크를 얻고 폴리곤으로 변환한 후 필터링
마스크를 얻고 폴리곤으로 변환한 후 필터링 (좌측부터)

겉보기에도 많은 점을 줄인 것에 반해 작업의 퀄리티는 거의 변함 없는 모습입니다. 데이터헌트에서는 이런 과정을 거쳐 작업자들에게 더 나은 폴리곤을 전달하고 있습니다.

Image segmentation 에 AI 적용 개선 결과

위와 같은 과정이 폴리곤 작업에 얼마나 도움이 됐을까요? 실제 작업을 통해서 AI를 도입했을 때와 그렇지 않았을 때의 시간을 직접 비교함으로써 작업 효율을 측정했습니다.

AI를 도입했을 때와 그렇지 않았을 때의 시간 비교
AI를 도입했을 때와 그렇지 않았을 때의 시간 비교

결과는 평균적으로 50% 수준의 작업 시간의 단축을 보였습니다. 작업 시간을 절반 가까이 줄임으로써 같은 시간에 더 많은 작업을 함과 동시에 데이터 품질에 할애할 시간이 늘어나게 되었습니다.

Image Segmentation 에 AI를 적용한 실제 사례

이렇게 만든 AI 모델은 데이터헌트와 삼성전자가 현재 함께 진행하고 있는 과제에 도입되어 더욱 우수한 결과물 산출에 기여하고 있습니다. 수만장에 달하는 이미지에 자체 개발한 AI가 적용되어 작업 시간 단축은 물론 더욱 작업물에 대한 철저한 검수가 이루어지고 있습니다.

본 과제에서는 객체마다의 다양한 기준과 기타 정책이 있어 위의 실험과 같은 작업 시간 단축은 어려웠습니다. 그래도 상당한 수준의 개선이 있고 작업자들의 AI 활용에 대한 만족도가 높습니다.

결론

이번 글에서는 Image Segmentation 및 마스크와 폴리곤이 무엇인지, 그리고 그 과정과 실제 사례를 소개했습니다. 그리고 데이터헌트에서 AI를 활용해 어떤 방법으로 작업을 효율화했으며 그 정량적 수준까지 설명드렸습니다.

Table of Contents
Talk to Expert