코딩일기

[Deep Learning] Image Segmentation, Augmentation, Recognition(feat. code states) 본문

Code/딥러닝(NL)

[Deep Learning] Image Segmentation, Augmentation, Recognition(feat. code states)

daje 2021. 4. 20. 14:58
728x90
반응형

 

 

 

 

안녕하십니까 다제입니다. 

 

저희는 지금 컴퓨터가 이미지를 인식하는 과정(Object recognition)에 대해서 학습을 진행하고 있습니다. 

 

지난 시간까지는 CNN 등을 통해 사진 속에 특정한 객체가 있는지 없는지 확인하는 Image classification에 대해서 학습하였습니다. 

 

이번 시간에는 

  1. 햇갈리는 Object classification, Localization, Detection의 개념과 

  2. object Segmentation과 Augumentation에 대해서 학습해보겠습니다. 

 

 

 


 

 

 

  1. 햇갈리는 Object classification, Localization, Detection의 개념

 

컴퓨터 이미지 인식 개발 과정 / 이미지 출처 링크참조

 

컴퓨터가 이미지를 학습하는 과정을 위와 같은 순서로 발전하고 있습니다. 

  1) Image classification : 사진은 풍경사진이다, 또는 고양이 사진이다 등을 분류함

  2) Object Localization : 사진 속 단일 객체가 어디에 있는지 무엇인지 확인함 

  3) Object Detection : 사진 속 여러 객체가 어디에 있는 무엇인지 확인함 

  4) Object Segmentation : 사진 속 객체에 어디에 있는 무엇이며, 무슨 모양을 하고 있는지 확인함 

object detection과 object segmentation의 차이 / 출처 이미지 링크 참조

 

 

 


 

 

 

2. Object Segmentation과 Augumentation

 

2-1. Object Segmentation

 

우리는 지난 시간 CNN을 통하여 이미지에 특정한 대상이 있는지 없는지를 탐지하는 방법에 대해서 배웠다. 

 

이제 사람들은 사진 내에 이미지 존재유무뿐 아니라 의미적/인지적 관점에서 서로 비슷한 영역으로 영상을 분할하고 싶다는 욕구가 생기게 되었고 사진 속에 어느 위치에 어떤 객체가 어떤 모습으로 있는지를 확인하기 위해 개발된 기술이 Image Segmentation입니다. 

 

Image Segmentation는 크게 픽셀기반방법 / edge(테두리)기반방법 / 영역기반 방법으로 구분되며

본 글에서는 픽셀기반의 Image Segmentation만 다루도록 하겠습니다. 

 

픽셀기반벙법은 미리 정해진 클래스의 집합을 이용하여 주어진 이미지의 각 픽셀을 특정 클래스로 이미지를 분류하는 작업이며

크게 semantic segmentationinstance segmentation로 구분되어 있습니다. 

 

 

출처이미지 클릭

Semantic Image Segmentation의 목적은 사진에 있는 모든 픽셀을 해당하는 (미리 지정된 개수의) class로 분류하는 것입니다.

이미지에 있는 모든 픽셀에 대한 예측을 하는 것이기 때문에 dense prediction 이라고도 불립니다.

여기서 주의해야하는 점은 semantic image segmentation 은 같은 class의 instance 를 구별하지 않는다는 것입니다.

 

쉽게말해서, 밑에 가족사진처럼

같은 class 에 속하는 object (사람이 4명)가 있을 때 사람을 따로 분류하지 않고,

그 픽셀 자체가 어떤 class 에 속하는지에만 관심이 있습니다(오른쪽 사진).

왼쪽 사진처럼 instance 를 구별하는 모델은 따로 instance segmentation 이라고 불립니다.

왼쪽: instance segmentation. 오른쪽: semantic segmentation / 출처이미지클릭

 

[기타]

 -. AlexNet, VGG 등 분류에 자주 쓰이는 깊은 신경망들은 Semantic Segmentation을 하기에 적합하지 않는 이유

AlexNet, VGG 등 분류에 자주 쓰이는 깊은 신경망들은 Semantic Segmentation 을 하는데 적합하지 않습니다. 일단 이런 모델은 parameter 의 개수와 차원을 줄이는 layer 를 가지고 있어서 자세한 위치정보를 잃게 됩니다. 또한 보통 마지막에 쓰이는 Fully Connected Layer에 의해서 위치에 대한 정보를 잃게 됩니다. 만약 공간/위치에 대한 정보를 잃지 않기 위해서 Pooling 과 Fully Connected Layer 를 없애고 stride 가 1이고 Padding 도 일정한 Convolution 을 진행할 수도 있을 것입니다. 인풋의 차원은 보존하겠지만, parameter 의 개수가 많아져서 메모리 문제나 계산하는데 비용이 너무 많이 들어서 현실적으로는 불가능 할 것입니다.

 

 

 


 

 

 

2-2.Augumentation

 

우리가 설계한 코드로 이미지를 탐지할 때, 이미지 내의 개체의 크기가

커지거나, 작아지거나, 좌우상하 반전이 이루어져도 정확하게 찾을 수 있어야합니다.

 

즉, 알고리즘에게 불변하는 이미지를 학습시켜야합니다.

그렇기 때문에 Augmentation를 통해 크롭을 하거나 회전, 반전 등으로 Augmentation를 진행하게 됩니다. 

-. 이미지 분류를 위해 알고리즘을 설계할 때, 많은 수의 서로 상관없는 정보들을 다뤄야 함.

-. 우리가 설계한 알고리즘이 실제로 이미지 안에 찾고자하는 object가 있는지 없는지를 판단하도록 만들어야 함.

-. 그 object의 크기나 기울어짐 정도 또는 전체 이미지 중 object가 오른편 끝인지와 같은 위치는 상관없이 해당 object를 정확하게 있는지 없는지를 판단해줘야 함.

더보기

- 이것은 다시말해 알고리즘이 이미지의 불변하는 표현(invariant representation)을 학습하는 것이다.

object의 크기가 커지거나 작아짐에 따라 리턴하는 prediction값이 달라지면 안된다.

- 이를 scale invariance라 부른다.

- 마찬가지로 object의 각도에 따라 리턴하는 prediction값이 달라지면 안된다.

- 이를 rotation invariance라 부른다.

- 마찬가지로 object의 위치에 따라 리턴하는 prediction값이 달라지면 안된다.

- 이를 translation invariance라 부른다.

- CNN은 어느정도 translation invariance를 내장하고있다.

 

 


 

 

 

[면접에 나올만한 질문들]

 -. Image Segmentation와 Image Recognition에 대해서 설명해주세요

 -. up-conv(transpose convolution)에 대해서 설명해주세요

 

 

[참고한 글]

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

Image recognition vs Segmentation : clickai.ai/resource/blog/blog_post_4.html

 

 

 

지금까지 Image Segmentation, Augmentation, Recognition에 대해서 알아보았습니다. 

 

궁금하신 사항이 있으시면 언제든 댓글 부탁드립니다. 

 

감사합니다.

 

 

728x90
반응형
Comments