Computer Vision Applications

pseeej·2021년 8월 15일
0

DL_Basic

목록 보기
5/6
post-thumbnail

Semantic Segmentation

Semantic Segmentation

  • same as Dense Classification, per pixel Classification
  • 어떤 label에 속하는지 확인 위해 img의 pixel마다 분류 실행
  • 자율주행에서 사용

Fully Convolutional Network

  • 일반적인 CNN의 형태.

  • flat 과정을 통해 1차원인 vector로 만듦

  • Fully Convolutional Network

  • 일반적인 CNN에서의 Dense Layer를 없애는 과정Convolutionalization

  • 일반적인 CNN과 parameter가 정확하게 일치
    -Fully Flatten을 통해 reshape하고 fully convolution으로 넘어가는 것은 convolution을 바꿨기 때문

  • 중간에 있던 게 20x20x1000이었던 것을 400,000짜리 vector로 바꾸는 것이 아니라 20x20x1000 feature filter로 만듦

  • 그 kernel의 1x1x1000짜리 convolutional feature map 만듦

  • Fully Convolutional Network는 input의 spatial dimension에 independent

  • convolution이 가지는 shared parameter 성질 때문에 output이 커지면 그것에 비례하여 뒷단의 network와 spatial dimension이 커짐

  • 어떠한 input size에서도 돌 수 있는 FCN에서, output dimension들은 subsampling을 통해 줄어들 수 있음

  • 따라서, coarse한(space resolution이 낮은) output을 dense pixel로 바꿔줘야 함

Deconvolution (Convolution Transpose)


- convolution의 역연산

  • parameter 숫자와 network architecture의 크기 계산할 때 편리
  • convolution은 30x30 → 15x15, deconvolution은 15x15 → 30x30
  • deconvolution을 통해 spatial dimension을 키워줌
  • convolution을 통해 5x5 → 2x2
  • deconvolution을 통해 padding을 많이 줌으로써 2x2 → 5x5
  • 이에 따른 결과

Detection

R-CNN


1. img 안에서 patch(부분)을 뽑아냄
2. CNN 돌기 위해 size를 똑같이 맞춰줌
3. support vector machine(SVM)으로 분류 수행
- softmax를 사용해도 되나, SVM을 썼을 때 실험결과가 더 높음

SPPNet

  • R-CNN에서는 crop/warp의 수가 보통 2000 정도기 때문에 CNN이 2000번보다 더 많이 돌아야 함
  • 반면에, SPPNet은 CNN이 한 번만 돌게됨
  1. image 안에서 bounding box 뽑고
  2. image 전체에 대해 convolution feature map 뽑고
  3. 뽑힌 그 bounding box 위치에 해당하는 convolution feature map의 tensor만 긁어옴
  • tensor 한 번만 돌리지만, bounding box를 만들고 필요한 size만큼의 pooling으로 하나의 vector를 만들고 분류해줘야 하므로 사실 느림

Fast R-CNN


1. image 기반으로 input과 bounding box들을 가져온다
2. convolutional feature map을 한 번 뽑아낸다
3. 각 지역에 대해 ROI(Region of Internet)을 통해 고정된 길이의 feature를 가져온다
4. 최종적으로 Neural network를 통해 class와 bounding-box regressor 두 개의 결과를 얻어낸다

Faster R-CNN

  • Fast R-CNN에서 Region Proposal Network를 추가함

Region Proposal Network

  • img에서 특정 영역의 patch가 bounding box로써의 의미가 있을지/없을지 판단
  • Anchor Box : 미리 정해놓은 bounding box의 크기
  • 이 template들이 어떻게 바뀔지에 대한 offset 찾고 template 고정
  • fully convolution 통해 해당하는 영역에 물체가 존재 여부 확인
  • 9(3x3) : 세 개의 다른 region size(128, 256, 512)와 세 개의 다른 비율(1:1, 1:2, 2:1)
  • 4 : 네 개의 bounding box regression parameter (bounding box를 위아래&양옆 기준으로 얼마나 키우고 줄일지)
  • 2 : box classification (해당 bounding box가 쓸모있을지 없을지) - 최대한 적은 bounding box 사용 위해
  • Faster-CNN의 결과

YOLO

  • 굉장히 빠른 object detection algorithm
    - tensor에서 분류하고 하는 것이 아니라 그냥 한 img에서 바로 output 나올 수 있기 때문에 Faster R-CNN보다도 더 빠름
  • bounding box와 class probability를 동시에 예측
    - bounding box를 따로 뽑는 과정이 없으므로 더 빠름
  1. img를 SxS grid로 나눔
  2. 찾고 싶은 물체의 중앙이 grid 안에 들어가게 될 경우, 해당 grid cell이 해당 물체에 대한 bounding box와 그 해당 물체가 무엇인지를 같이 예측
  3. 각 cell이 B bounding box들을 예측 (B=5)
    • box 재정의 과정 (x, y, 높이, 너비 기준)
    • 해당 object를 쓸지 말지 결정
  4. C class probability 예측 과정 거침
  • 최종적으로 SxSx(Bx5+C) 크기의 tensor가 됨
    - SxS : grid의 cell 개수
    - Bx5 : offset(x, y, w, h)와 사용 여부를 포함하는 B bounding boxes
    - C : class의 개수
profile
세진니의 눈물 가득 블로그

0개의 댓글