CS231n Lecture 11

원성혁·2023년 2월 13일
0

CS231n

목록 보기
10/12
post-thumbnail

오늘도 CS231n Lecture 11을 요약 정리해 보겠다.

지금까지 image classification task를 다뤘다면 이번에는 새로운 task를 다뤄보았다.

Semantic Segmentation

semantic segmentation은 각각 필셀 별로 카테고리를 항당하는 방법으로 픽셀로 모든 사물을 구분한다. 하지 여러 객체들이 있는 경우에도 한 가지의 카테고리로 분류하기 때문에 객체들의 개수는 파악할 수 없다는 것이 단점이다.

Semantic Segmentation을 하기 위해 이미지를 쪼개 patch 별로 학습을 시켜야 한다. 그러나 이 방식은 계산이 너무 많아 비효율적이다.

이 방법을 개선하기 위해 전체 이미지를 convoluntion layer에 넣고 최종적으로 출력되는 모든 픽셀에 score를 적용하는 방식이 있지만, fully convolution을 하기 위해선 spatial size를 계속 유지시켜야 하기 때문에 계산비용이 크다.

Downsampling & Upsampling

앞의 문제를 개선하기위해 나온 방법이 downsampling한 다음, Upsampling 하는 방법이다.

  • Down sampling은 Max pooling, Stride convoluton을 사용한다. 이미지 분류는 FC- layer가 있고, 이 방법에서는 Spatial Resolution을 키운다. 따라서 입력 미지의 해상도와 같다.
  • Upsampling은 이미지 사이즈를 늘리면 빈공간이 생기는데, 이 공간을 채우는 방법으로 Unpooling, Max Unpooling, Transpose Convolution이 있다.

Unpooling

우선 Upsampling중 Unpooling이며 2가지가 있다.
Nearest neighbor unpooling은 해당 원소를 입력 사이즈와 같이 인접한 값을 복사하 붙이는 것.
Bed of Nails는 unpooling 지역에만 값을 복사하고, 다른 곳은 0으로 만들어 해당 값을 돋보이게 만든다.

Max Unpooling


feature map의 공간정보를 균형있게 유지하기 위해 max pooling한 위치를 기억해두고 그 선택된 자리에 값을 넣고 나머지는 0으로 채운다.

Transpose Convolution

일반적인 Convolution은 downsampling 방식이다. Transpose Convolution은 일반 Convolution과 반대인데 1개의 pixel에다 vector(kernel)를 곱해 여러 개의 값을 뽑아내고 stride를 주고 움직여서 image size를 키우는 방식이다.
overlap되는 부분에서는 평균을 취하지 않고 더해준다.

1D Transose Convolution

matrix operation에서 해석을 해보자면 x가 우리가 흔히 말하는 filter혹은 kernel이다.
우리가 stride 1을 줄때 transpose convolution과 일반 convolution은 비슷한 현상이 발생한다. (padding rule만 달라짐)
근데, stride를 키워주면 좀 다르다.

stride를 키워주면 완전 다른 현상이 발생한다. convolution은 적은 차원에다가 정보를 압축하여 쑤셔박으려고 하지만, transpose convoltion은 오히려 input image인 [a b] tensor를 kernel을 곱해 펼쳐주는 역할을 한다.
이렇게 되면 kernel을 학습할 수 있는 형태가 되며 size를 확장시켜주는 역할을 할 수 있게 되므로 segmentation 작업에 적합한 형태가 된다.

Classification + Localization

Classification + localization은 물체를 구별하는 것 뿐만 아니라 물체의 위치까지 파악할 때사용하는 방법이다.
object의 bounding box를 찾는 작업과 그 bounding box 안에 있는 object의 종류를 맞추는 작업 즉, multitask를 하게 된다.

Object Detection과 다른 점은 localization에서는 객체가 오직 하나라고 가정하는 점이다.
이를 구현하기 위해서는 classification과 관련된 loss 뿐만 아니라 위치와 관련된 box coordinates loss도 계산해야 한다. 각각 따로 구한 뒤 나중에 합친다.

Human Pose Estimation

Loss로 regression Loss를 쓴다.

Object Detection


Object Detection은 Localization과 달리 여러 개의 object에 대해 annotation을 하는 것이다.
regression Problem으로 생각하면 조금 tricky하며, 다른 패러다임을 사용한다.

매번 다른 crop을 만들고, sliding하고 하는 방식의 brute force는 굉장히 비싸다. 그래서 object가 있는 곳을 먼저 proposal을 받는 알고리즘을 사용한다.

Region Proposals

이런 방식을 Region Proposals라고 하며 fixed way아다. closed edge와 같은 방법을 사용하여 region poposal network가 blobby region을 찾도록 하는 방법이다. 예를들어 selective search가 있고 recall은 높은 편에 속한다.

object Detection은 sliding winodw 대신 region proposal을 사용해 객체를 찾아내는데, 객체가 있을만한 곳을 후보로 선정한다. 다음 1000개의 region을 selective search를 통해 찾아낸다.

R-CNN

R-CNN은 앞에서 말한 방식대로 fixed way regin proposal network을 사용하여 candidate를 뽑고 ConV로 처리를 한다.

하지만, region proposal에 굉장한 시간을 쏟게 되며, candidate가 많으면 그만큼 학습량도 증가한다.

R-CNN의 문제는 크게 5가지가 있다.

  • 계산 비용이 많이 든다.
  • 용량(Memory)가 많이 든다.
  • 학습 과정이 느리다. (84시간이 걸린다.)
  • Test Time이 느리다.
  • 학습이 되지 않는 Region Proposal이 존재한다.

Fast R-CNN

그래서 Fast R-CNN이 나왔는데, ConV로 high resolution feature map을 얻은 뒤 fixed way selective search로 crop들을 얻는다.

Faster R-CNN


CNN으로 feature map을 얻을 때 proposal을 같이 학습하게 된다.
이렇게 되면 region proposal또한 learnable part가 되어 빠르게 forwarding할 수 있다.

결과적으로 egion proposal도 Region Proposal Network(RPN)을 이용해 예측하는 방식이다.

YOLO/SSD

region proposal을 활용하지 않는 방법도 있다.
YOLO(You Only Look Once)와 SSD(Single-Shot MultiBox Detector)
forwarding 한번으로 object dectection을 수행한다.
potential regions를 독립적으로 처리하는 방식 대신에, regression problem으로 다루게 된다.

7x7 grid로 이미지를 나눈 뒤 object가 어느 grid에 있는지 offset을 학습한다. 또한, 해당 offset에서 가로로 길쭉하거나, 세로로 길쭉하거나, 정사각형을 사용하여 다양한 Bounding Box를 만든다. 이를 학습하게 되면 7X7(각 grid) X 5(bounding box feature) X B(서로 다른 종류의 bounding box 개수) X C(score)을 output으로 하는 Network를 학습하게 되는 것이다.

faster R-CNN style의 region-based method가 single shot보다 더 높은 정확도를 가지지만 위 방식은 각 region에 대해 독립적으로 processing하지 않아도 되기 때문에 훨씬 빠르다.

Dense Captioning

Object Detection과 Captioning을 합친 것이다. 각 Region의 카테고리 예측이 아닌 caption을 예측하는 것이다.

Mask R-CNN

2개의 겹친 object를 구분하는 instance segmentation 부분이다.

Faster R-CNN과 비슷하다.
CNN의 RPN을 뽑고 RoI를 뽑고 segmentation mask를 예측하는 방향으로 진행된다. region proposal의 카테고리를 예측한다.
proposal의 좌표를 보정해주는 BBox regression도 예측한다. 두번째 갈래는 object인지 아닌지를 판별한다.

profile
AI개발자를 향해 전진중

0개의 댓글