본문 바로가기
[End]Robotics Lectures in UoS/Deep Learning

[DL] Lecture6:Deep learning for computer vision

by 담백로봇 2023. 5. 6.

Objectives

  • Explain the main uses of deep learning in computer vision
  • Design and implement deep learning systems for computer vision

Tutorial

  •  Encoder - decoder 
  •  one-stage detector and two-stage detector 

 


  • computer vision 분야는 크게 4개. Image recognition, semantic segmentation, object detection, instance segmentation 있다. 

PART1: Semantic Segmentation

  •  semantic segmentation  (semantic 이란 단어는 언어나 논리에 따른 관계를 지칭) 은 각 픽셀들과의 연관성으로 그룹지어 클래스를 부여한다. 각 필셀에는 label이 부여되고 그 라벨은 물체나 클래스에 속한것을 뜻하게된다.
  •  갑자기 생각나서 찾아본 "back bone" 은 deep learning에서 cnn들의 집합이라고 생각하면된다.  cnn , pooling, normalization이 어떻게 구성된지에 따라 달라진다. 

  • encoder - decorder achithecture는 주로 sementic segmentation system에서 쓰인다고보면된다.
  •  Q) 왜 encoder 와 decoder가 필요한데?
    • 엔코더는 여러개의 CL과 pooling Layer으로 이루어져 있어 high level feature를 가진 인풋 이미지를 다운샘플링하게 되는데 이는 spatial dimension을 점진적으로 줄여 복잡한 feature를 더 잘 추출 할 수 있게하는 작업이다. 이는  복잡한 정보들을 압축한다고 생각하면된다. 디코더는 압축된 정보들을 다시 업샘플링을 통해 오리지날 이미지를 복구하게되는데 이때 segmentation(pixel-wise segmentation mask) process가 적용된다고 생각하면된다.
    • Q) 아니그럼 왜 압축을하는데? : 여러개의 Convolutional Layer 을 이용해서 spatial demention(공간의 차원)을 줄이게되면 더 복잡한 특징점(feature)들을 찾을 수 있고, 연산량을 줄이고, generalization을 향상 시킨다.. 간단한 레이어(lower-level layer) 에서는 단순한 특징점인( local feature라고하자) ) edge,corners, texture pattern밖에 찾을 수 없지만 spatial dimention을 축소시키면 더 복잡한 피쳐들(global feature같은 물체부분,모양,방향)까지 구분이 가능하다.
    • Q) 아니 그럼 higher-level layer(복잡한 레이어) 들이 왜 더 복잡한걸 (high level feature) 잘찾는데? :  복잡한 레이어는 더 많은 필터를 가지고있고 필터사이즈가 더 크기때문에 더 복잡한 패턴을 잡을 수 있는것이유. (필터의 역할이 특징점을 찾는다는것을 생각해보자, 그럼 필터의 수와 사이즈만 늘려면 더 좋아지지 않나 생각할 수 있지만 연산량이 폭발하기 때문에 점진적으로 Decode를 하면서 특징점을 찾아낸다!!

 

  • Segnet은 amx uppooling 을 사용한다. 

  • U-Net 의 특징은 skip connection을 통해 low-level 과 high-level feature들을 합치게하여 더 정확한 segmentation을 가능하게한다. 여기서 말하는 low-level fature는 low level layer에 추출할 수 있는 edges같은 것이고 위 도표에서 첫 level이라고 할 수 있고 high-level feature는 encoder를 통해 추출되는 정보로 다시 decoder되는 곳에서 low-level feature과 합쳐지는것을 확인 할 수 있다. 정리하면 local feature 과 global feature들이 decoder에서 사용되어 더 정확하게 알수있다(decoder에서는 max uppooling이 사용되면 오리지널 정보와 달라질 수 있기에!)

 

 

  •  Q) U-NET vs Deeplabv3+ 는 무슨 차인가?:  u-net은 skip connection을 사용하는 특징이있고 강점으로는 작은 오브젝트를 검출하는것에 탁월해 의료분야에 쓰이며 상대적으로 파라미터가 적다.  deeplabv3+는 atrous convolution과 ,feature pyramid network(FPNs), spatial pyramid pooling(spp)를 사용하며 강점으로는 다양한 스케일의 오브젝트를 잘찾아 큰 줄체를 특히나 효율적으로 찾아 global context가 중요한 outdoor 에 많이쓰인다고한다.  (시험에는딱히안나올듯)

PART 2: Object Detection and Recognition.

 

  • Two-stage 와 One-stage 의 구조와 특징을 알아보자!

  • Loss function = bounding box squared error(detection) + classification categorical cross-entropy loss (recognition)

  • two stage에서 처음 region proposal에는 딥러닝이 사용되지않고 두번째 stage에서 인식할때 사용됨.
  • region proposal 과 bounding box 는 다르다.  region proposal은 오브젝트의 위치의 후보자들을 low-level feature 추출기법( search space or edgeboxes) 으로 찾아내어 다음 recognition 단계에서 필요한 부분만 찾을 수 있도록도와준다. Bounding box는 stage2 단계에서 검출되는것으로 좀더 오브젝트의 바운더리에 타이트하게 맞춰진 region proposal같은 거라 생각하면된다. 
  • 위 도표에서 SVM(Support Vector Manchine)은 HOG(Histogram of Oriented Gradients)피처나 SURF(Speeded-Up Robust Feature) descriptor를 뽑아낸다. 그 이후 SVM 분류기는 postive set과 negative set들을 이용해 오브젝트인과 아닌것을 구분하는 과정을 거친다. (HOG 랑 SURF 더 공부해보기). SVM은 연산량에서 효율적이고 높은 정확도를 가질 수 있으나 후처리가들어간 피쳐들을 이용해 최적화되지 못할 수 있는데 최근에는 yolo에서 딥러닝을 활용해 다이렉트로 피처를 학습해 성능이 향상되었다고한다. (아.. margin을 메뉴얼하게 설정해줘야하는게있었다)

 

  • Head용어란? : 딥러닝에서 head는 주로 마지막 레이어들을 지칭하며 분류, regression, object dection같은 특정 작업을 위해 사용된다. 

  • Region of Interest 는 Region proposal 과 deep convolutional network에서 나온 feature map을 overlay 시키고 이를 max pooling으로 같은 사이즈의 feature map 들을 만들어준다.  

  • Faster에서는 region proposal이 deep cn feature extractor에서 나온 아웃풋을 이용함. Fast에서는 인풋이미지에서 바로 나온 데이터 이용.  
  •  

YoLo

  • Anchor Boxes 개념은 yolo에게 정말 중요한 컨셉! AB는 미리정의된 바운딩 박스로 다른 사이즈와 다른 비율로 무수히 뿌려져있는상태로 이중에 가장 IOU(Insection over Union)이 가장 높은것이 하나로 보여지는것이다.  아래 그림은 우리가 Yolo 에서 보고있는 한개의 바운딩박스를 얻기위해 AB는 수없이 무수한 Prediction box를 뿌려놓는것이다! (아래는 단지 1%의 anchor boxes를 보여준것 얼마나 많은부분을 비교하며 검사하는것인가.... 비효율적인것같은데 근래 가장 결과가 좋은...이를 해결하는 또다른 알고리즘도있겠지?=> single-shot detection , focal loss, anchor free object detection, EfficientDet) 

https://towardsdatascience.com/anchor-boxes-the-key-to-quality-object-detection-ddf9d612d4f9

  • 그렇다면 이 앵커박스는 무수히 많은 박스를 뿌려놓고 그중 object에 걸리는 것들을 표현해주는것으로 만약 최소크기의 박스가 측정하고자하는 물체보다 크다면 작은 물체를 검출할수없다! 이는 yolo의 대표적인 단점이다. 이를 위해 anchor box의 configuration을 유저가 임의적으로 조절할 수 있다..

  • one stage detectors directly predict object class probabilities and bounding box coordinates for all possible locations and scales in the image.
  • region proposal network가 없다. 그러므로 작은 오브젝트를 못 검출할 수 있지만 매우 빠르다.

  • IOU값이 가장 높은 Anchor box가 best match가 되는 바운딩 박스를 표현해낸다!

PART3: INSTANCE SEGMENTATION

 

  • 크게보면 two-stage detection에 mask binary classifier 가 추가됬네.

 

댓글