안녕하세요~ 

 

이번 Chapter에서는 segmentation에 대해서 알아보도록 할거에요. 

 

Segmentation을 하는 방식에는 여러가지가 있지만, 이번 chapter에서는 딥러닝을 기반으로한 segmentation에 대해서 알아보도록 할거에요.

 

 

 

 

 

<1. Semantic segmentation이 뭔가요?>

 

이미지 분야에서 semantic segmentation이란 이미지 내에 있는 객체들을 의미있는 단위로 분할하는 작업을 말해요 (의미있는 단위란 객체들을 의미합니다).

 

<사진1>

 

좀 더 자세히 이야기하자면, semantic segmentation은 모든 픽셀의 레이블을 예측하는 dense prediction이라고도 불립니다.

 

<사진2>

 

 

 

 

 

<2. Instance segmentation이란 뭔가요?>

 

Semantic segmentation과 달리 instance segmentation은 좀 더 엄격한 기준이 추가되는데요.

 

Semantic segmentation은 같은 class의 instance를 구별하지 않는 반면에 instance segmentation은 아래 오른쪽 사진처럼 instance를 구별하게 해줍니다. (종종 논문을 읽으시다가 'semantic segmentation이란 용어와 instance segmentation이란 용어가 혼용되는데 잘 구분하시고 보시면 될 것 같아요!)

 

<사진3>

 

지금까지 배웠던 classification, object detection과의 차이점은 아래 그림을 보시면 명확하게 이해하실 수 있으실 거에요. 

 

<사진4>

 

 

 

 

 

 

 

<3. Segmentation challenge and Performance measure>

 

Classification challenge에서는 top1, top5를 통해 classification model을 평가했고, Object detection challenge에서는 mAP, AR과 같은 performance measure (성능평가지표)를 사용했어요.

 

위와같이 segmentation 영역도 challenge가 있고 해당 challenge에서 사용하는 performance measure가 있는데요. 하나씩 차례대로 알아보도록 해보겠습니다.

 

 

 

1) Pascal VOC

 

Object detection에 이어 Pascal VOC challenge에서는 segmentation 대회도 동시에 진행했어요. Pascal VOC challenge에서는 object detection challenge의 class 개수와 동일하게 21 classes (20 classes + background) 에 대해서 segmentation하도록 되어있어요.

 

 

<사진5>

 

True positive: yellow pixel

False positive: red pixel

False Negative: green pixel

 

Pascal VOC에서 performance measure로 사용하는 공식은 mIoU 입니다.

 

 

판단요소(비교군: Ground truth)

- 예측된 픽셀들이 (어떤 클래스인지 여부와 상관없이) 객체에 속하는가?

- 예측된 픽셀들이 특정 클래스에 올바르게 classification(분류)되었는가?

True positive: 예측된 픽셀들이 (ground truth의) 객체에 속하면서 (해당 객체에 대해) 올바르게 classification한 경우

False positive: 예측된 픽셀들이 (ground truth의) 객체에 속하지만 (해당 객체에 대해) 올바르게 classification하지 못 한 경우 -> 이런 경우는 해당 모델이 객체는 잘 검출하고 있는지에 대해 판단할 요소가 될 서 있음

False negative: (Ground truth의) 실제 객체인 픽셀임에도 불구하고 예측된 픽셀들이 (ground truth의) 객체에 속하지도 않는다고 판단한 경우 -> 객체에 속하지 않았다고 판단 (background라고 판단) 했기 때문에 당연히 classification도 제대로 하지 못함 (종속적인 결과))

 

좀 더 쉽게 말하자면 predicted segmentation과 ground truth segmentation의 IoU를 계산하는라고 생각하시면 될 것 같아요.

 

mIoU: the value across all the classes in the dataset (Pascal VOC = 21 classes)

 

<사진6>

 

 

 

 

2) COCO challenge

 

COCO segmentation challenge에는 두 가지 challenge가 있어요. 첫 번째는 stuff segmentation challenge이고, 두 번째는 panoptic segmentation challenge에요.

 

 

 

2-1) Stuff segmentation challenge

 

COCO에서 정의한 stuff classes는 아래와 같아요.

 

"Stuff classes are background materials that are defined by homogeneous or repetitive patterns of fine-scale properties"

 

<사진7>

 

 

쉽게말해, stuff란 background를 의미하는데요. 즉, 기존에 background에 대해서 세밀하게 신경쓰지 않고 모든 background가 될 수 있는 것들을 통채로 하나의 background라고 분류했었는데요. 여기에서는 background를 stuff (grass, wall, sky, road, etc)로 분류해서 segmentation하는 것이 주된 목적이에요.

 

예를들어, 자율주행차에서 배경에 대한 정보가 세밀해지지 않으면 문제가 많이 생길거에요. 평상시에 background라고 구분했던 '길'도 정확하게 분류해주어야 하고 그외에 주변의 배경들을 좀 더 세밀하게 구분해주어야 더 좋은 성능을 보여줄거에요.

 

 

 

2-2) Panoptic segmentation

 

우리가 흔히 생각하는 일반적인 segmentation은 panoptic segmentation이에요. Panoptic segmentation은 'Stuff segmentation + Things segmentation'이라고 할 수 있겠는데요. Stuff은 배경관련 객체, things는 흔히 우리가 알고 있던 배경을 제외한 객체라고 생각하시면되요.

 

 

<사진8>

 

 

Panoptic segmentation에서는 PQ (Panoptic Quality)라는 성능지표를 통해 segmentation model들을 평가해요. 

 

 

<사진9>

 

 

 

 

3) Cityscapes

 

위에서 언급한 challenge에서 제공하는 dataset 이외에도 cityscapes에서 제공하는 dataset도 있어요. 독일에 있는 도시들을 위주로한 도시 배경에 대한 dataset을 제공해주고, 29개의 classes (within 8 super vategories: flat, human, vehicle, construction, object, nature, sky, void) 들에 대해서 semantic segmentation을 진행하게 됩니다.

 

"It is also well know for its similarity with real urban scenes for autonomous driving applications"

 

 

<사진10>

 

 

 

<사진11>

 

 

 

 

 

<4. Application>

 

Segmentation은 굉장히 다양한 영역에서 사용될 수 있는데요. 그 중에 몇몇 응용사례들을 살펴보도록 할게요.

 

 

 

1) Self driving cars

 

자율주행은 object detection과 같이 rectangular information으로만 갖고는 불가능하기 때문에, non-rectangular information을 얻기 위해 segmentation 기술을 응용해야해요.

 

<사진12. Autopilot segment>

 

 

2018년에는 테슬라가 운행하던 자율주행차량으로 인해 인명피해가 있었다고 하는데요. 이 역시 segmentation 기술에서 문제가 생겨서 그랬다고 하네요. (아직 발전시켜야할 부분이 많이 남은듯 합니다)

 

아래는 해당 기사 링크입니다.

 

https://www.reuters.com/article/us-tesla-crash/tesla-driver-in-fatal-crash-had-reported-problems-before-with-autopilot-feature-idUSKBN20522C

 

 

 

 

2) Medical imaging (의료영상)

 

몇년전부터 의료영상분야에 segmentation 기술이 적용되는 사례를 자주 접할 수 있었습니다. 평소에는 다수의 의사들이 MRI, CT, X-ray 데이터를 보고 질병 여부를 판단하게 되는데요.

 

최근에는 딥러닝 기술을 이용해 실력이 뛰어난 의사가 의료영상데이터를 판독하는 수준까지 도달했다고 합니다.

 

<사진13>

 

<사진14>

 

물론 의료데이터가 다른 이미지 데이터들에 비해 복잡하고 데이터 양 자체도 많은 편도 아니에요. 또한 데이터가 일부 질병에 치중되어 있다보니 모든 질병에 대해 정확하게 판독을 한는건 아직까지는 어렵다고 하네요. 

 

하지만 성공율이 점점 올라갈 수록 의사들의 업무효율성 올려주고, 업무과중을 피할 수 있도록 도와주며, 환자들이 오랜시간동안 CT결과를 기다릴 필요가 없게 만들어줄거에요. 

 

 

 

 

 

 

3) 그외 우리가 흔히 접하는 사례

 

요즘에는 핸드폰에서 사진을 찍을때 mode를 설정해주면 사람에게만 focus를 맞출 수 있도록 해주는데요. 이러한 기술도 사람만 segmentation해주고 그 주위 background를 blur처리해주도록 설정해주기 때문에 segmentation 기술이 핵심이라고 보시면 될 것 같아요.

 

<사진13. Portrait mode>

 

 

 

 

 

 

 

 

<5. Basic Segmentation models based on Deep Learning>

 

물론 굉장히 많은 딥러닝 기반 segmentation models이 나왔지만, 간단하게 어떤 모델이 있는지만 소개해드리고 모델에 대한 자세한 설명은 다음장에서부터 하도록할게요~

 

1) Fully Convolutional Network (FCN) for semantic segmentation.

 

 

 

(↓↓↓FCN 논문정리↓↓↓)

https://89douner.tistory.com/296?category=878997 

 

2. FCN

안녕하세요. 이번 글에서는 처음으로 딥러닝을 적용한 segmentation 모델인 FCN에 대해서 소개해드리려고 합니다. Conference: CVPR 2015 (논문은 2014년에 나옴) Paper title: Fully Convolutional Networks for..

89douner.tistory.com

 

 

 

 

 

2) U-Net

 

 

 

 

(↓↓↓UNet 논문정리↓↓↓)

https://89douner.tistory.com/297?category=878997 

 

3.UNet

안녕하세요. 이번 글에서는 의료분야에서 보편적으로 많이 사용되는 segmentation 모델인 UNet에 대해서 소개해드리려고 합니다. Conference: MICCAI 2015 Paper title: U-Net: Convolutional Networks for Biomed..

89douner.tistory.com

 

 

 

 

 

 

3) DeepLab

 

 

 

4) Mask RCNN

 

 

 

 

 

 

지금까지 Segmentation에 대한 기본적인 개념에 대해서 다루어봤는데요.

 

다음장부터는 딥러닝 기반 segmentation 모델들을 차례대로 살펴보면서 딥러닝이 segmentation 영역에 어떻게 적용되고 있는지 살펴보도록 할거에요.

 

그럼 다음글에서 뵈요~

 

 

 

 

 

 

[글 래퍼런스]

https://bskyvision.com/491

https://medium.com/digitalbridge/how-we-use-image-semantic-segmentation-e85fac734caf

https://medium.com/@arthur_ouaknine/review-of-deep-learning-algorithms-for-image-semantic-segmentation-509a600f7b57

 

[사진 래퍼런스]

사진1,3

https://bskyvision.com/491

사진2,13

https://medium.com/hyunjulie/1%ED%8E%B8-semantic-segmentation-%EC%B2%AB%EA%B1%B8%EC%9D%8C-4180367ec9cb

사진4

https://medium.com/hyunjulie/1%ED%8E%B8-semantic-segmentation-%EC%B2%AB%EA%B1%B8%EC%9D%8C-4180367ec9cb

사진5

 

https://medium.com/digitalbridge/how-we-use-image-semantic-segmentation-e85fac734caf

사진6

 

 

https://heartbeat.fritz.ai/a-2019-guide-to-semantic-segmentation-ca8242f5a7fc

사진7

http://cocodataset.org/#stuff-2019

사진8

http://cocodataset.org/#panoptic-2019

사진9

http://cocodataset.org/#panoptic-eval

사진10

 

사진11

사진12

https://www.businessinsider.com/tesla-cars-have-reached-100-million-autopilot-miles-2016-5

 

 

 

'Deep Learning for Computer Vision > Segmentation' 카테고리의 다른 글

3.UNet  (4) 2021.07.19
2. FCN  (1) 2021.07.08

+ Recent posts