본문 바로가기

Etc../인공지능 연구동향

[인공지능 연구동향] Object Detection, Semantic Segmentation 사례 분석

Object Detection, Semantic Segmentation 사례 분석

다양한 task에 대한 모델

다양한 task

  • classification만으로는 이미지에 대한 모든 정보를 파악하고 활용하고 있다고 보기 어려움
  • 각 object가 어디에 있고, 얼마나 있고 등 다양한 정보를 활용할 수 없게 됨.
  • Object detection은 어떤 object가 있는지 뿐만 아니라 각 object가 어디에 있는지까지 box를 쳐서 알 수 있음
  • 하지만 이것만으로 충분하지 않는 경우가 있음
  • sementic segmentation은 픽셀 단위로 object를 구분할 수 있음 하지만, 같은 클래스의 object끼리는 서로 구분이 되지 않음.
  • instance segmentation은 개별 object가 서로 구분되면서 픽셀단위로 분류됨

Object Detection

  • multi-task problem
  • object가 무엇인지에 대한 classification과 어디에 있는지에 대한 localization을 같이 진행
  • input으로 RGB채널을 가진 이미지를 받음
  • target으로 어떤 클래스인지에 대한 label을 가지며, 어떤 위치에 어떤 크기로 있는지에 대한 object bounding box에 대한 정보를 가짐
  • bounding box를 예측하는데에 모델이 실수를 하게 된다면 그 실수를 교정해 줄 수 있어야함.
  • 예측 결과에 대한 피드백과 업데이트를 할 수 있어야 한다는 의미.
  • 이를 위해 regression을 사용. classification에서는 특정 카테고리로 배정되어 output이 discrete하지만, regression에서는 continuous함.
  • regression을 위해 quadratic loss를 사용. ground truth와 prediction간의 mean squared error를 최소화 하기 위함.
  • classification은 input을 미리 정해진 클래스로 배정하여 output이 discrete하게 함
  • regression은 input을 continuous한 값에 연결시키고 output또한 continuous함
  • 위 두가지 방법 둘 다 neural network를 이용해 효과적으로 학습시킬 수 있음
  • 다수의 object를 찾아내려면 어떻게 해야할까?

R-CNN

  • object가 있을만한 위치인 Region of interest를 추출함
  • input 이미지에 대해 selective search 기법을 사용해 roi를 추출하고 convnet을 돌려 classification과 regression을 진행함.
  • 이 방법은 많은 roi에 대해 convnet을 통과시키다 보니 많은 연산시간이 소요됨

fast R-CNN

  • roi를 추출하기 전에 convnet을 통과시킨 후 feature map에서 roi를 추출함
  • 하지만 이 또한 기존 방법보다는 연산시간이 줄었지만 마찬가지로 roi를 추출하는데 사용되는 selective searche가 많은 연산시간을 차지함
  • 이와 같은 구조를 tow-stage detector라고 함.

faster R-CNN

  • 이전 모델에서 roi를 추출햇던 것과 같이 좋은 bounding box후보를 찾아두고, 그 후보들을 대상으로 classification과 refine을 진행
  • 크게 2단계로 이루어지기 때문에 two - stage detector
  • bounding box후보를 추출하기 위해 regional proposal network를 제안
RPN
  • input에 대해 모든 경우의 수를 고려하여 후보를 추출하기 어려움
  • 따라서 discrete하게 나눠주고 나눈 경계사이에 있는 점을 anchor point라고 함
  • 다양한 scale과 ratio를 미리 정해두고 anchor point마다 bounding box 후보를 만들어줌
  • faster R-CNN에서는 3가지 scale과 높이, 넓이 비율이 1:1, 1:2, 2:1인 ratio를 조합하여 bounding box후보로 사용함
  • anchor point마다 n개의 후보가 생기고 그 후보마다 object의 유무와 있으면 ground truth와 얼마나 차이나는지를 종합하여 objectness score를 계산 함
  • 후보 box에 object가 있는지 없는지만 찾는 것
  • score가 높은 상위 후보 K개만 남겨두어 roi를 담고 있을 가능성이 있는 box만 남겨둠
  • 이러한 box를 네트워크에 통가시켜 classification과 bounding box regression을 진행함.
  • 굳이 two-stage로 나눠 진행할 필요가 없다는 관점에서 RetinaNet이 연구됨

RetinaNet

  • 일종의 피라미드 구조를 가지고 있음
  • 이미지를 ResNet을 통과시켜 서로다른 scale의 feature map을 추출
  • 이후 feature pyramid net을 통과시켜 다양한 scale의 feature를 잘 활용할 수 있도록 만들어 줌
  • 각 pyramid level에서 2개의 sub network를 붙여 classification과 regression을 수행
  • 하지만 대부분의 후보box에서는 object가 없는 단순 배경일 가능성이 매우 높음
  • faster R-CNN에서는 상위 score 후보만 추출하여 사용하였지만 RetinaNet에서는 그렇지 않음
  • 단순 배경들은 쉽게 분류가 되지만 이 부분들의 loss값이 충분히 작지 않아 학습에 영향을 주게 됨
  • 이를 해결하기 위해 hard negative mining이라는 방법을 사용하기도 함
hard negative mining
  • positive example을 모으고 random한 negative example의 일부를 가져옴
  • 그 후 detector를 학습시키고 dataset에 존재하지 않는 이미지로 테스트함
  • object라고 찾은 결과는 사실은 틀린 false positive example에 초점을 맞추고 이를 trainning set에 더해줌
  • 다시 detector를 학습시는 것을 반복하며 더 잘 분류할 수 있도록 만들어줌
  • RetinaNet은 좀 더 효과적인 방법으로 cross entropy loss 말고 focal loss를 제안함.
  • faster R-CNN보다 조금 더 빠른 속도를 가짐
  • Two - stage detector는 속도가 조금 느린 대신 더 나은 성능을 보여줌
  • faster R-CNN 이후로 TridentNet이 대표적



Semantic segmentation

  • bounding box는 object를 파악하고 활용하는데 좋은 표현방법이 아닐 수 있음
  • box에 들어가는 픽셀 중 object가 아닌 영역이 다수를 차지하고 있기 때문
  • input은 RGB이미지, target은 모든 픽셀에서의 class label
  • input과 output이 같은 resolution으로 생성되어야 함 (dense prediction 문제)
  • resolution을 키우기 위해 unpooling을 사용
  • upsampling, bed of nails, Max uppooling transpose convolution등의 기법이 있음

U-Net

  • Encoder - Decoder 구조
  • Skip-connection을 사용하여 detail이 보존
  • 원본과 같은 H x W사이즈의 resolution에 분류하고자 하는 클래스가 붙어 H x W x N의 사이즈를 갖게 됨
  • Loss는 pixel-wise cross entropy를 사용해 classification이 잘 이루어 질 수 있도록 함
  • pixel별로 labeling이 되긴 하지만, 같은 클래스에 속한 object들을 구분하지는 않음
  • Instance segmentation은 pixel별로 labeling되면서 object간 구분도 가능



task의 평가

evaluation metric

  • classification에서는 일반적으로 옯바르게 예측한 비율이 얼마나 되는지 accuracy를 측정함.
  • Top-1 accuracy : 모델이 예측한 클래스가 정답인지 아닌지 측정
  • Top-5 accuracy : 상위 5개 클래스에 정답이 포함되어 있는지 평가
  • object detection과 segmentation에서는 intersection-over-union(IoU)를 사용, 정답과 예측한 결과가 얼마나 겹쳐있는지 비율로 판단
  • IoU기반의 loss를 활용하는 것이 점점 더 널리 사용되고 있음
  • 단순히 근사하여 loss로 사용하면 예측결과와 GT가 겹치지 않을 경우 업데이트되지 않을 수 있음
  • 최근에는 이런 문제를 해결한 GIoU, DIoU, CIoU loss등이 활용됨.

Transfer Learning

  • task와 dataset에 따라 미리 학습된 지식을 재사용하자는 개념
  • object detection에서는 imagenet으로 pretrained된 convnet을 사용
  • Image captioning과 같은 task에서도 imagenet으로 pretrained된 convnet을 사용
  • 최근에는 Sim2Real trasfer도 사용됨. 학습은 simulation환경에서 하고 real world에서 test를 진행
  • 랜덤한 특성을 가지는 여러가지 sumulation환경을 만들고 학습시켜 real world에 적용하는데 data augmentation과 hard negative mining을 이용하여 domain randomization을 자동으로 하여 구현함




참고 : K-MOOC 인공지능 연구동향 - 중앙대학교 김영빈 교수님