부스트 캠프 ai tech 13~14주 OCR - 1


OCR

  • Text라는 단일 Class에 대하여 예측을 하는 Task
  • 위치를 검출하는 Text Detection과 내용을 인식하는 Text Recognization으로 나뉠 수 있다

일반적인 Object Detection Task와의 차이

Text Image Data의 특성상 일반적인 Object Detection과는 아래과 같은 차이를 가진다

  • Object의 높은 밀도
    • Data 특성 상 연속적인 Line에 여러가지 word가 존재하고 그 line이 붙어서 반복하기 때문에 일반적인 Object Detection에 비해 매우 높은 밀도를 가진다
  • 극단적인 Ratio
    • 언어에 따라서 띄어쓰기가 아에 존재하지 않거나 긴 단어들이 존재하기 때문에 Ratio가 극단적이다
  • 특이한 모양
    • 구겨짐
      • 글자들이 종이같은 평면에 존재하는 경우가 많고, 휘어지거나 구겨지는 경우도 다수 존재하기 때문에 object의 영역도 구겨지면서 특이한 모양을 가진다
    • 휘어짐
      • 간판등 디자인적 부분으로 인하여 휘어진 영역을 가지는 경우도 존재한다
    • 세로 쓰기
  • 객체의 특징
    • 같은 글자라도 큰 크기편차가 존재할 가능성이 높음
    • 객체 영역이 모호함

OCR 모델은 위의 특징들을 고려하여 만들어 져야 한다

OCR Model

Base Model

OCR 모델은 크게 2가지 방법으로 글자 영역을 예측한다

  1. Regression-based
    • 이미지를 입력받아서 글자영역 표현값을 출력하는 단순한 방식
    • 사각형으로 출력하기 때문에 불필요한 영역을 포함하고, 정확도가 떨어지는 한계가 존재
    • Anchor Box의 범위를 벗어나는 영역에 경우 측정 정확도가 떨어진다
      • 글자 객체가 가지는 극단적인 Ratio를 제대로 반영하지 못하는 경우가 많음
  2. Segmentation-based
    • 이미지를 입력받아서 화소단위로 정보를 뽑고 후처리를 통하여 글자 영역의 표현값을 확보
    • Post-processing과 후처리가 필요하기 때문에 Regression-based에 비하여 연산량이 많다
    • 서로 간섭이 있거나 인접한 개체간의 구분이 어렵다
  3. Hybrid 방식
    • 위의 두가지 방법을 혼합하여 예측하는 방식
    • Regression을 통하여 대략적인 영역을 탐색하고, Segmentation-based로 화소정보를 추출하여 세부적인 영역을 결정하는 방식을 취한다
    • MaskTextSpotter

Task Based

  1. Character-Based
    • Charater 단위로 검출
  2. Word-Based
    • Word 단위로 검출

reference

부스트 캠프 ai tech 9주 4일차 3D perspective


3D

  • 사람은 Projection된 2D 이미지로 부터 3D를 인식한다

3D의 표현방법

  • Multiview images
    • 여러 방향에서 찍은 사진데이터로 표현
  • Volumetric (voxel)
    • x, y, z의 3차원 pixel로 3D를 표현
  • Part assembly
    • 단순한 여러개의 Polygon 덩어리로 3D를 표현
  • Point cloud
    • 물체의 surface을 dot의 좌표로 표현
  • Mesh
    • point와 edge로 이루어진 map
    • 3각형으로 이루어진 Polygon Data
  • implicit shape
    • 고차원의 함수형태로 surface를 표현

3D Dataset

ShapeNet

  • 51300개, 55개의 Category를 가진 3D Dataset
  • 전부 디자이너들이 제작함

PartNet

  • 26671개의 3D 데이터가 573585개의 Part로 분리되어있는 3D Dataset

SceneNet

  • 5 Million개의 RGB-Depth Pair Dataset
  • Simulationed indoor image(생성 이미지)

ScanNet

  • 2.5 Million
  • 실제 Indoor Scan Image

Outdoor 3D Scene Dataset

  • KITTI
    • LiDAR Data, 3D Bboxes
  • Semantic KITTI
    • LiDAR Data, point
  • Waymo open Dataset
    • LiDAR Data, 3D Bboxes

3D Task

  • 3D object recognition
  • 3D object detection
  • 3D semantic segmentation

Conditional 3D generation

  • 2D Image에서 3D Mesh를 구하는 Task
  • Mesh RCNN
    • 기존 Mask RCNN 에서 Mesh Branch를 추가한 형태
  • Learning to Reconstruct Shapes from Unseen Classes
    • CNN구조로 부터 Feature 추출
    • 3개의 Branch로 Feature 재생성
      • normal map
      • depth
      • silhuette
    • 재구성을 통한 3D shape 출력

reference

부스트 캠프 ai tech 9주 3일차 Multi-modal Learning


Multi-modal Overview

  • Unimodal : 하나의 특징 Data로 학습시키는 기법
  • Multi-modal : 여러가지의 Data로 학습시키는 기법

Difficultiy of Multi-modal

  1. 데이터마다 표현방법이 모두 다르다
    • Audio : wave
    • Image : pixel
    • text : sequence? query?
  2. 데이터간의 Unbalance한 Feature map
    • 데이터 자체의 종류가 다르기 때문에 생성하는 분포의 차이가 클 가능성이 높다
    • 학습시키기 용이하지 않음
  3. 항상 Multi-modal이 좋은방법은 아니다
    • 전체 모델에서 한 데이터에 집중하여 학습하면서 다른 데이터를 소홀히 하는 편향적인 학습이 이루어 질 가능성이 존재한다

Multimodal Learning

  • Matching : 두 데이터에 대해서 같은 공간으로 매칭시키도록 학습
  • Translating : 한 데이터를 다른 데이터로 변형 시키도록 학습
  • Referencing : 참조를 통한 상호보안적으로 더 좋은 결과를 내게 학습

Image & Text

NLP Preview

Text Embedding

  • Text Map to vector
  • Text를 1차원 Vector로 변환해서 공간상에 표현하는 방법

Word2vec

*

Joint embedding

  • Matching 기법을 사용해서 만들어진 Multi-modal
  • Pretrained unimodal Model을 합쳐서 사용하는 기법

두 가지의 Data로 부터 같은 차원의 Feature를 추출하고, 이것을 Joint Embedding 시켜서 Matching 이 이루어지는 같은 데이터는 높은 Metric, Matching 되지않는 데이터는 낮은 Metric을 부여하도록 학습시키는 방법이다.

  • 같은 차원의 Feature로 추출하는 이유
    • 하나의 Feature Dimension상에서 Metric을 계산해야한다

Image Tagging

  • 주어진 이미지에 대해서 Tag를 붙여주거나, 여러가지 Tag에 맞는 이미지를 검색해 주는 모델
  • Distance를 Metric으로 사용한 모델
  • Tag를 추가하거나 빼면 기존의 이미지와 유사하면서 바뀐 Tag만 적용될만한 이미지를 우선적으로 뽑아주는 결과를 얻었다

Recipe text vs food image

  • 주어진 요리 사진에 레시피를 출력해주거나 레시피를 입력했을때 매칭된 이미지를 뽑아주는 모델
  • cosine similarity와 semantic regularization loss를 이용하였다
    • cosine similarity : text data와 image로 뽑은 Feature가 얼마나 유사한지를 계산
    • semantic regularization loss : 공통된 요리 카테고리에 속해있는지를 계산해서 반영한다 (성능을 높이기 위해 보정)

Cross modal translation

  • Translating 기법을 사용한 모델
  • 모델에서 뽑은 Feature를 input으로 다른 모델에 넣고 변환시킨다.
  • Data를 Feature로 바꿔주는 첫 모델을 Encoder, Feature로 Output를 뽑아내는 모델을 Decoder라고 지칭한다

Show attend and tell

  • CNN을 통해서 Feature를 추출
  • 추출한 Feature를 바탕으로 RNN에 입력
  • RNN 에서는 단어를 예측하면서 다음에 참조할 Feature map을 선택한다
  • 위의 과정이 반복되면서 문장을 생성한다

Text2Image

  • Text에서 image를 생성하는 모델
  • Conditional GAN을 통해서 구현 하였다
  • Encoder를 통해서 Text로 부터 Feature를 얻는다
  • Feature를 Conditional Input으로 Conditional GAN을 학습시킨다

Cross modal reasoning

  • Referencing 기법을 통해 학습시킨 모델
  • 두 모델에서 나온 Feature로 Joint embedding을 진행하고 추가적으로 Layer를 배치하여 하나의 Task를 푸는 형태로 디자인 되어있다
  • 위의 Show attend and tell은 Translating와 Referencing이 둘다 사용된 모델이다
    • 실제로 학습할 때는 word token을 같이 받음

reference

부스트 캠프 ai tech 9주 2일차 Conditional Generative Model


Conditional Generative Model

  • 사용자가 컨트롤이 가능한 Generative Model
  • 서로 다른 두 도메인을 변화시켜주는 Task
  • 통역모델, 음성의 고품질 전환, 요약모델 등 다양한 분야에서 응용가능하다

Conditional GAN

랜덤으로 생성되는 Latent Noise z 만 받는 GAN과는 다르게 latent Noise z + Conditional Input이나, domain Data의 형식으로 받는다

  • CV 응용분야
    • Style Transfer
    • Super resolution
    • Colorization

Super Resolution

  • 해상도가 낮은 이미지를 높은 이미지로 변환시키는 Task
  • Super Resolution을 위한 기존의 Naive Regression model에서는 MAELoss나 MSELoss를 사용
    • MAE와 MSELoss는 이미지를 전체 이미지의 평균값으로 생성하는 경향이 존재해서 이미지가 뿌옇게 생성됨
  • Super Resolution GANLoss를 이용하여 좀더 선명한 품실의 image를 얻어냈다
    • GAN Loss는 전체 이미지의 분포로 접근해서 생성하는 경향이 있었기에 MAE, MSE에 비해서 덜 뿌연 이미지를 생성

Image Translation Model

Pix2Pix

  • Image Translations Task를 위한 GAN model

  • Generator는 Segmentation Masking Data를 사용하여 이미지를 생성한다

  • Discriminator는 Segmentation Masking Data + image를 가지고 진짜인지 가짜인지 판별한다

  • Total Loss

    • GAN Loss + L1 Loss
      • 논문에서는 GAN Loss로 Cross Entropy를 사용
    • L1 Loss : 형태는 Ground Truth와 비슷하지만 Blurry한 이미지가 생성
    • GAN Loss : Sharp한 이미지가 형성되지만 형태가 불안전한 이미지가 생성

$$
G^{*} = arg, \underset{G}{min}, \underset{D}{max}, \mathcal{L}_{cGAN}(G,D) + \lambda \mathcal{L}_{L1}(G)
$$

CycleGAN

  • Pix2Pix와 같은 Image Translation Model 이지만 Unpair Data를 변환시켜줄 수 있다
    • Pix2Pix의 Pair Image라는 제약상황에서 벗어날 수 있다
  • Generator
    • Input으로 변환시킬 Image를 받는다
    • Unet의 Decoder처럼 단계적으로 Size를 확장시키면서 생성하는구조의 Generator를 가진다
  • Discriminator
    • Input으로 Image를 받고 Real, Fake를 판단
    • PatchGAN의 형태를 가짐
  • CycleGAN에서는 2개의 Discriminator와 2개의 Generator가 존재해서 서로 Cycle을 이룬다
  • Total Loss
    • GAN Loss + Cycle Consistency Loss
    • GAN Loss : adversarial losses를 적용
    • Cycle Consistency Loss : mode collapse 문제를 막기위해 도입한 함수
      • 변환된 이미지를 재변환(reconstruct)시켰을 때 Real Image사이의 L1 Distance Loss

$$
\mathcal{L} = \mathcal{L}_{GAN}(X \rightarrow Y) + \mathcal{L}_{GAN}(Y \rightarrow X) + \mathcal{L}_{cycle}(G, F)
$$

Perceptiaul Loss

  • GAN은 학습시키기 힘들다

  • High quality output을 위한 Loss

  • Adversarial Loss

    • 학습과 구현의 난이도가 높다
    • Data 만 존재하면 Pretrained 모델이 없어도 좋은 성능을 낼 수 있다
  • Perceptiaul Loss

    • 학습 및 구현의 용이성
    • Pretrained 모델을 통해서 만 구현이 가능

Perceptiaul Loss 구조

Perceptiaul Loss는 다음과 같이 이미지를 변환시켜주는 Image Transform Network과 pretrained Model로 이루어진 Loss Network 2개로 구현 할 수 있다.
우선 Image Transform Network는 바꿀 이미지를 넣어서 새로운 이미지로 생성하는 역할을 한다. Loss Network는 생성된 이미지 $\hat{y}$, 이미지를 바꾸고싶은 Style Target $y_{s}$와

reference

부스트 캠프 ai tech 9주 1일차 Instance & Panoptic Segmantation


Instance Segmantation

  • Pixel 단위의 Classification 뿐만 아니라 객체간의 구분도 판단하는 Task

Mask R-CNN

  • Faster R-CNN를 기반으로 Instance Segmentation Task를 해결하기 위해 디자인된 모델
  • Keyword
    • RoI-Align
    • Mask Branch(head)

RoI Align

기존 RoI Pooling은 반올림을 해서 Pooling을 연산해서 조금 부정확 하더라도 BBox를 찾는것이기 때문에 괜찮았지만, Segmentation Task에서는 Mask가 이질적으로 변할 가능성이 있기 때문에 소수점 자리까지 연산이 가능하도록 한 RoI 기법

Mask Branch

Faster RCNN의 Neck에서 BBox 별로 추출한 Feature에 따로 Mask Branch를 두어 Binary Classfication을 수행한다

YOLOACT

YoloActEDGE

Panoptic Segmentation

Instance + Semantic Segmentation Task

UPSNet

Backbone Network를 통해서 뽑은 Feature를 이용하여 Semantic, Instance Feature로 가공한 뒤 Panoptic head로 합치는 과정을 거치는 모델

  • Keypoint
    • 3개의 head
      • Semantic head
      • Instance head
      • Panoptic head

Heads Design

  • Instance Head
  • Semantic Head
  1. Semantic head와 Instance head에서 Feature를 추출
    • Instance head에서는 각 Object에 대해서 mask Feature를 얻음
    • Semantic Head에서는 Instance의 클래스가 겹치는 $X_{thing}$ 과 배경 $X_{stuff}$ Feature를 받아옴
  2. Instance Feature를 적절히 Resize하여 가공하고 Semantic Head의 $X_{thing}$ 과의 합연산을 통하여 각 물체에 대한 Instace Mask를 얻는다
  3. Segmentation Feature에서 Max값만 추출한 Feature Map에서 Instance Feature와 합연산 처리가 된 부분을 제거한다
    • 이는 Unknown Class에 해당하는 새로운 채널로 추가된다
    • Semantic Feature와 Instance Feature간의 충돌을 해결해 주는 역할을 한다
  4. 2와 3에서 만들어진 Feature들과 배경을 나타내는 $X_{stuff}$를 Concat시켜서 최종적인 Panoptic Segmentation mask를 예측

VPSNet

  • UPSNet을 Video에서도 동작하도록 디자인된 모델
  • 기존 UPSNet과 동일한 구조를 가지고 추가적으로 Track Head가 추가되어 동일 객체에 대해서 Instance Segmentation이 잘 진행되도록 한다

Landmark Localization

얼굴이나 사람의 포즈를 추정하고 Tracking 하는데 사용되는 기술이다

  • Coordinate regression

    • Landmark 별 Regression을 진행하는 방법
    • 기존에 많이 사용하던 방식이지만 부정확 했다
  • Heatmap Classification

    • Segmentation과 비슷하게 모든 픽셀에 대해서 Landmark 인지를 연산하는 방법
    • Coordinate regression보다 좋은 성능을 보여주었지만, 모든 픽셀에 대하여 연산을 진행하다보니 더 많은 연산이 필요하다

Hourglass Network

  • Stacked hourglass modules
  • Skip Connection

Hourglass Module

  • Unet과 비슷한 구조
    • 서로 대칭되는 Layer가 존재한다
  • Feature를 대칭되는 Layer로 넘겨줄 때 CNN을 통해서 걸러지고 + 연산이 이루어진다

DensePose

이미지를 3D Surface(UV map)로 표현해주는 모델

  • Fast R-CNN + 3D surface regression branch

RetinaFace

  • 얼굴에 대해서 여러가지 task를 동시에 처리하는 모델
    • Gender Classification
    • Face Detection
    • 5 Landmark Regression
    • 3D Mashup
  • FPN + Multi-task branches
  • Backbone + target Branch
    • 우리가 원하는 모델 디자인 가능

Detecting objects as keypoints

CornerNet

Top-left, Bottom-right 2 point만 예측하면 BBox를 만들수 있다는 것에서 시작한 모델

  • 속도는 매우 빠른편
  • 성능은 좋지 않다

CenterNet

CornerNet에서 Center까지 같이 예측하는 모델
추가적으로 Center를 예측하면서 성능의 상승이 이루어졌다

  • CenterNet(1)
    • Top-left, Bottom-right, Center
  • CenterNet(2)
    • Center, height, width

reference

부스트 캠프 ai tech 8주 4일차 CNN visualization


CNN visualization 의 필요성

  • 기존 DeepLearning 모델은 내부를 볼 수 없는 시스템(Black Box)라고 여겨졌다
    • 실제로는 내부 Parameter 값을 볼 수 있지만 weight들로 이루어진 Metrix만 존재하기 때문에 해석하기 힘들다
  • CNN visualization에서는 weight들을 시각화 해서 설명가능하게 만들어 준다
    • filter들을 시각화 함으로써 어떤방식으로 동작하는지 설명이 가능해진다
    • weight의 GradCAM을 통하여 어떤부분에 모델이 집중하는지 보여주면서 왜 잘 동작했는지, 동작하지 않았는지를 더 쉽게 설명이 가능하다
    • 시각화된 결과를 기반으로 추가적인 성능 향상을 위한 가설을 세울 수 있다

CNN Visualization

  • CNN Visualization에는 다양한 방법들이 존재한다
  • 이 글에서는 Model behavior analysis와 Model Decision analysis부분에 대해서 다룬다

Model behavior analysis

  • 모델 자체의 행동에 집중하여 분석하는 기법

Embedding feature analysis

High Level의 Layer에서 얻어지는 Feature를 분석하는 기법이다

Nearest Neighbors in Feature Space

  • Nearest Neighbors를 이용한 모델 시각화이다
  • Neural Networks를 이용하여 High Level의 Feature를 뽑고 이를 이용하여 DB를 생성한다
  • test Data를 Model에 넣어서 kNN으로 모델이 생성한 High dimensional Feature Space를 확인한다
  • 예제를 보고 판단하기 때문에 전체적인 부분을 확인하기는 힘들다

t-SNE

  • 위의 모델이 생성한 High demensional Feature Space를 Low dimensional Space로 변화시켜서 시각화하는 방법
  • Feature의 전체적인 그림을 그려주어서 Feature Space를 어느정도 이해할 수 있도록 도와주는 역할을 한다

Activation investigation

Mid ~ High Level Layer에서 이루어지는 Feature 분석 기법이다

Layer Activation

  • mid to high level hidden unit의 행동을 파악해보는 기법
  • 특정 Layer의 특정 Node를 가공하여 어느부분을 집중적으로 보는 node인지를 masking한다

Maximally activating patches

  • Hidden Node 별로 가중치가 가장 높은 부분을 뜯는 기법
  • 국부적인 부분에 적합하여 Mid Level Feature에서 사용한다

Class visualization

  • 예제 데이터를 사용하지 않고 네트워크의 parameter로 이미지를 시각화 하는 방법
  • 특정 class에 대한 네트워크의 예상치를 확인하는 방법이다
  • 이것을 보고 주변객체와의 연관성 등도 파악이 가능하며 데이터의 편향성이 존재하는지도 파악 할 수 있다
  • 특정 이미지를 넣어서 확인하는 것이 아닌 dummy 이미지를 넣어서 확인한다

Model Decision analysis

  • 모델의 특정 입력에 대해서 경향에 집중하여 분석하는 기법

Occulsion map

  • 특정 부분에 Occusion patch를 이용하여 가린 이미지들로 뽑은 Score바탕으로 heapmap을 구성하는 방법
  • 특정 이미지의 스코어 영향을 미치는 영역을 파악할 수 있다.

via Backpropatation

  • 특정 이미지에 대해서 classification하는데에 영향을 미친 부분을 heapmap으로 표시하는 기법
  1. 특정 이미지에 대한 class의 스코어를 얻는다
  2. Backpropagation을 통해서 입력 이미지의 Gradient를 구한다
  3. 얻어진 Graident의 magnitude를 구한다
    • 얼마나 큰 영향을 끼쳤는지가 중요하기 때문에 부호를 제거한다
  4. 해당 map을 시각화

Class Activation Mapping

  • 특정이미지에 대해서 어떤 결과가 나왔고 어떤부분을 참조하였는지를 보여주는 기법
  • Global Average Pooling + FC Layer가 있는 모델에서만 사용이 가능하다

Grad CAM

  • CAM과 같이 특정이미지에 대해서 어떤 결과가 나왔고 어떤부분을 참조하였는지를 보여주는 기법
  • CNN Backbone이기만 하면 어떤 모델이든지 사용이 가능하다

reference

부스트 캠프 ai tech 8주 3일차 Object Detection


Object Detection

  • 특정 오브젝트가 어디에 위치해있고, 그 오브젝트가 무엇인지를 탐지하는 Task를 말한다
  • Classification과 Box Localization을 같이 하는 Task
  • 자율주행이나 OCR등에서 사용된다
  • Classification과 Box Localization을 따로 연산하는 Two Stage 방식과 동시에 연산하는 One Stage 방식이 존재한다

Two Stage Object Detection

  • 이미지의 BBox를 추출하고 이 BBox로 Classification을 진행하는 모델을 말한다
  • R-CNN 계열의 모델이 여기에 속한다
  • 2단계로 연산을 하기 때문에 연산속도는 느린편에 속하지만 정확도가 높다
  • 이미지로부터 BBox를 만들어 내는 알고리즘
  • 이미지의 색상단위로 Over Segmentation을 진행하고 규칙에 따라 점점 합쳐나가는 알고리즘
    • Color Similarity
    • Texture Similarity
    • Size Similarity
    • Shape Similarity
    • A final meta-similarity measure

R-CNN

Classification이 바로 Object Detection에 응용된 모델이다.
모델은 아래와 같이 간단한 단계로 BBox를 구하고, Classification을 진행한다

  1. Selective Search를 사용하여 물체가 있을 법한 후보를 선택한다(~2k)
  2. 선택된 후보군 전체에 대해서 이미지의 크기를 재가공하여 Classification 모델에 집어넣는다 (2000개의 후보들에 대해서 모두 CNN, SVM 연산)
  • RCNN은 초기 모델인 만큼 다양한 문제점 또한 존재한다
    • BBox를 뽑아내는 알고리즘은 Seletive Search 같은 Huristic 알고리즘이기 때문에 학습이 불가능해서 성능향상이 크지 않다
    • Selective Search는 Cpu에서 연산이 이루어지기 때문에 시간도 많이 소요된다
    • 후보 전체에 대하여 Classfication을 한번씩 진행하다보니 연산량이 많아져서 시간소모가 크다

Fast R-CNN

기존의 R-CNN의 연산이 매우 오래걸린것을 해결한 모델이다.
Roi Pooling을 이용하여 모든 후보에 대해서 Convolution Network 에 입력하던것을 단 1번으로 줄였다.

  • Keyword
    • RoI Pooling
    • SPPNet

RoI Pooling을 이용한 Fast R-CNN

  1. 전체 이미지를 CNN에 통과시켜서 Feature Map을 추출한다
  2. Seletive Search등의 Region Proposal Method를 이용하여 RoI를 찾는다
  3. 찾은 RoI를 미리 뽑아둔 Feature Map에 투영하여 RoI에 해당하는 부분에 대해서 Pooling을 진행해서(SPPNet 이용) Classification을 위한 FC Layer의 input Size에 맞춘다
  4. softmax연산을 통하여 Classification을 진행한다
  5. Bounding Box Regression을 통하여 BBox의 위치를 재조정한다

R-CNN에서 RoI Pooling을 도입하여 연산속도면에서 획기적인 발전을 이룩한 모델이지만 여러 한계점이 존재했다

  • 아직도 Seletive Search를 사용하기 때문에 BBox 검출에 대해서 큰 학습이 이루어지지 않았기 때문에 성능면에서는 큰 차이가 없다
  • 모델 뒷부분의 성능은 개선되었지만 BBox 검출 속도는 그대로기 때문에 Bottleneck 현상이 발생한다

Faster R-CNN

Fast R-CNN의 단점이었던 Seletive Search를 Nueral Network(RPN)로 대체함으로써 End to End로 학습이 가능해진 모델이다

  • Keyword
    • RPN
    • NMS
    • IoU (Intersection over Union)
      • 두 BBox가 얼마나 잘 겹쳐있는지를 판단하는 Metric

RPN

  • Region Proposal Network

R-CNN 계열에서 RoI를 생성하던 Region Proposal Method를 대체하는 Network이다.
RPN에서는 다양한 모양의 BBox를 출력 해 내기 위해서 미리 특정 크기의 Anchor Box들을 구현해 놓고 이 Anchor Box들과 대조하여 IoU를 계산한다.

  • Faster RCNN 에서는 3개의 Scale과 3개의 비율을 조합하여 9개의 Anchor Box를 미리 정해 두었다.

RPN에서는 Slide Window 방식으로 Anchor Box를 이용하여 물체가 존재하는지에 대한 유무와 BBox의 delta 값을 Feature Map으로 부터 추출한다

  • Delta : 고정된 크기의 Anchor Box를 실제 BBox에 일치시키는 이동 정보를 담고있는 벡터를 말한다

결론적으로 RPN을 학습시키면 물체가 존재할 가능성이 높은 BBox를 도출하는 쪽으로 학습이 진행된다

RPN으로 부터 추출된 BBox 좌표를 기준으로 기존에 뽑아두었던 Feature Map에 RoI Pooling을 적용하고 Classification과 Box Regression을 진행한다

Non Maximum Suppression

  • RPN으로 생성된 수많은 BBox중 중복되는 Box들을 지우는 알고리즘
  1. 동일한 클래스에 대해서 Sorting을 통해 Comfidence 순서로 정렬 시킨다
  2. 가장 Confidence가 높은 BBox와 IoU가 일정 이상인 BBox는 중복되었다고 판단하고 삭제한다

추가적인 사항

  • 실제로 Faster RCNN을 학습시킬때는 RPN과 RCNN 모델을 따로 각각 학습을 시킨뒤에 붙였다고 한다

One Stage Object Detection

  • 이미지의 BBox를 추출하면서 Classification까지 동시에 진행하는 모델을 말한다
  • 1단계로 연산을 하기 때문에 실시간 처리속도가 높지만 정확도가 2 Stage Detector 보다 조금 떨어진다

YOLO

  • One Stage Object Detection Model의 대표적인 모델
  • Faster RCNN과 유사하게 Anchor Box와 Box Regression을 통해서 BBox를 예측한다
  • Anchor Box의 위치를 찾는것과 동시에 Class Probability map을 생성한다
  • Class Probability map과 BBox를 합쳐서 detection을 마친다
  • 초당 처리 프레임 수는 Faster RCNN을 앞섰지만, 성능면에서는 조금 떨어지는 경향을 보였다

Single Shot MultiBox Detector(SSD)

  • YOLO의 정확도 문제가 개선된 One Stage 모델이다
  • 아래의 그림과 같이 여러개의 Feature Map에서 Anchor를 이용하여 Feature를 추출한다
  • 각 레이어마다 Anchor Box에 대한 정보들을 종합하여 최종적으로 NMS를 통해 겹치는 BBox를 제거하여 결과를 낸다
  • 이를 통하여 Yolo와 비슷한 수준의 처리속도와 Faster RCNN을 넘는 성능을 보여주었다

RetinaNet

  • Focal Loss와 FPN구조를 도입함으로써 One Stage Detector의 성능을 더욱 끌어올린 모델 구조
  • Keyword
    • Focal Loss
    • Feature Pyramid Network(FPN)

Focal Loss

  • One Stage Detector의 고질적인 문제인 적은 Positive Sample 문제를 해결하기 위해 고안된 Loss 함수이다
    • Positive Sample은 단 하나지만 Negative Sample은 엄청나게 많이 발생하기 때문에 Class imbalance 문제가 발생한다
  • Cross Entropy loss로 부터 고안된 Loss 함수
  • 맞추기 쉬운 Sample에 대해서 발생하는 weight를 낮추고 맞추기 힘든 Sample에 대해서는 높은 weight를 주게 된다
    • loss값은 Focal loss가 작지만 같은 지점의 Gradient를 보면 Focal Loss가 훨씬 크다

Feature Pyramid Networks

  • 서로다른 해상도의 Feature Map을 쌓아올린 형태를 가지는 CNN 모델이다
  • 입력층에 가까울수록 Low Level의 Feature를 가지고, 출력층에 가까울수록 High Level(Global Level)의 Feature를 보유하는 CNN의 특성을 이용하였다
  • (a)는 다양한 Scale의 Feature 맵을 사용해서 다양한 크기의 Object를 탐색하는 것이 가능하고 성능도 좋다. 하지만 여러장의 이미지에서 모두 Feature Map을 추출해야하기 때문에 느린 처리속도를 가진다
  • 기존의 Yolo는 단일 Scale의 Feature 맵을 사용하는 (b) 방식을 사용했다. 모델구조가 단순하여 빠른 처리가 가능하지만, 성능이 떨어지는 단점이 존재한다
  • SSD에서 사용한 방식인 (c)는 다양항 크기의 Feature Map을 사용하여 좋은 성능과 빠른 처리속도를 보여주었지만, Backbone을 지나서 충분하게 High Level 수준의 Feature들을 합쳐서 결과를 내기 때문에, 더 높은 해상도의 Low Level Feature Map(High Resolution map)을 사용 하지 않아 Small Object 검출에 한계가 있다고 논문에서 서술했다
  • FPN에서는 (d)의 구조를 통하여 Low Level 부터 High Level 까지의 Feature Map을 전부 사용하여 검출이 힘든 작은 물체 까지 잘 검출하는 모습을 보여주었다

reference

부스트 캠프 ai tech 8주 2일차 Sementic Segmantation


Semantic segmentation

  • 이미지의 픽셀단위로 Classification을 수행하는 Task
  • 의료분야에서나 자율주행, 영상편집 등의 분야에서 다양하게 사용된다.

Fully Convolutional Networks (FCN)

  • KeyPoint : 기존 fully connected Layer(fc Layer)를 Convolutional Layer로 대체하면서 fc Layer의 문제점을 해결하고 Semantic Segmentation까지 end to end로 구현한 모델
  • 기존의 Classification 모델들은 마지막 Layer를 fc Layer로 구성하기 때문에 고정된 input 이미지 사이즈를 가져야 했지만 1 x 1 Convolution Layer를 사용하면서 가변적인 input 이미지를 사용할 수 있게 되었다

  • 맨 마지막 단에 Upsampling을 시행하여 해상도를 맞춰주어 Segmentation을 한다

    • Transposed Convolution
  • 아래와 같은 특징을 골고루 가지기 위해 중간단계의 map을 Upsampling을 해서 가져와 더한다. 단계별 Map들이 합쳐지면서 더 좋은 Segmantaion 이 가능했다.

    • Layer를 적게 거칠수록 이미지의 지역적이고 세부적인 부분에 집중한다
    • Layer를 많이 지나가면 이미지의 전체적인 부분에 집중한다

U Net

  • FCN을 유사한 구조를 가진 Segmentation 모델
  • Feature를 추출하는 Contracting 과정과 Upsampling을 단계적으로 진행하는 Expanding 과정으로 나뉜다
  • Contracting Path
    • 한번의 과정이 끝날 때 마다 Channel 수를 2배로 늘린다
    • 기존의 FCN의 추출과정과 비슷하다
  • Expanding Path
    • 해상도를 2배씩 늘리면서 점진적으로 Upsampling을 진행한다
    • 반대로 Channel수는 절반으로 줄이면서 진행한다
    • Contracting 과정에서 대칭으로 대응되는 Layer에서 나온 Map과 Concatenating을 진행해서 Fusion 시킨다
  • 주의할점
    • MaxPooling을 통해서 크기를 반으로 점진적으로 줄이고 다시 Upsampling을 통해 2배씩 늘려나가기 때문에 이미지 사이즈가 홀수일 경우 차원이 맞지않아 계산이 불가능하다

DeepLab

  • 구글에서 2018년에 작성된 논문으로 그 당시 좋은 성능을 보여주었다
  • 모델의 특징으로는 Dilated convolution와 Depthwise separable convolution를 이용하여 파라미터 수를 줄이면서 성능을 유지시켰다
  • 본 글에서는 논문의 주된 특징인 Dilated convolution와 Depthwise separable convolution Layer에 대해서 다룬다

Dilated convolution

  • Atrous Convolution 이라고도 한다
  • 필터 내부에 빈 공간이 존재하는 Convolution Layer를 말한다
  • parameter r을 조절하여 내부의 빈 공간의 크기를 조절 할 수 있다
    • 1일 경우 기본적인 Convolution Layer와 동일
  • 동일한 양의 파라미터와 계산량을 유지하면서 한 픽셀이 볼 수 있는 영역을 크게 할 수 있다.
    • 기존에 한 픽셀이 볼 수 있는 영역을 크게 하기위해서는 Kernel Size를 키워야 했는데 이는 필연적으로 파라미터와 계산량의 증가가 따라온다
    • 이미지 데이터의 경우에는 한 픽셀 주위의 픽셀이 어느정도 연관이 되어있다고 가정할 수 있기 때문에 가능한 방식으로 생각된다

Depthwise separable convolution

  • 기존 Convolution Layer의 연산을 2단계로 분리시켜서 사용되는 파라미터 수를 획기적으로 줄인 방법이다
  • Convolution Layer에서는 Channel축을 필터가 한번에 연산하지만, Depthwise separable convolution Layer에서는 Channel을 분리해서 1의 길이를 가지는 여러개의 Feature로 만들고 여기에 1 x 1 x 채널길의 크기의 필터를 다시한번 적용하여 연산을 하는 방식을 취한다
  • 이를 통해서 기존 연산에서는 $H \times W \times C \times n$ 개의 파라미터가 필요 했지만 Depthwise separable convolution 연산에서는 $H \times W \times C + C \times n$ 개의 파라미터가 필요하게 되어 수를 더욱 줄일 수 있었다.

reference

부스트 캠프 ai tech 8주 1일차 CNN architectures


Image Classifier

  • 이미지를 분류하는 기본적인 모델을 말한다
  • 충분한 데이터가 존재한다면 모든 분류문제는 K-Nearest Neighobors로 해결이 가능하다.
    • 영상 분류 문제를 검색 문제로 바꿔서 해결이 가능하다
    • 하지만 데이터는 너무 많고, 우리의 머신 리소스는 한정적이기 때문에 모든 문제를 해결하기에는 적합하지 않다
    • 데이터 수에 비례해서 시간복잡도가 증가한다
  • 초창기에는 single Fully Connected Layer를 이용해서 분류 문제를 해결하려 했다
    • 레이어층이 적다보니 평균적인 이미지에서 벗어나면 잘 작동하지 않았다(test 성능이 좋지 않았다)
  • 이미지를 전체적으로 보는것이 아닌 부분적으로 파라미터 연산을 하는 Locally Connected Layer가 등장하였고 Convolution Layer의 전신이 되었다

Data Augmentation

  • 우리가 모델을 학습시킬때 사용하는 Data는 실제 전체 데이터에서 샘플링한 극히 일부의 데이터이다. 또한 데이터를 제작한 사람의 주관또한 들어가 있을 가능성이 존재하기 때문에 Train Data의 분포가 실제 데이터와 일치한다고 보기 힘들다. 이를 보안하기 위해서 Data의 분포를 다양하게 만드는 방법을 Data Augmentation이라고 한다.
  • 기본적인 Augmentation
    • 밝기, 채도, 명암 조절
    • Random Crop, Filp, Rotate
    • Affine Transform : 기하학적 변환
      • warp로 시작하는 함수
  • 특수한 Augmentation
    • CutMix : 두개의 사진을 잘라서 합치는 Augmentation. 라벨값 또한 비율에 맞게 조절한다
  • MixUp : 두개의 사진을 Alpha값의 조절을 통한 픽셀을 합치는 Augmentation. 라벨값 또한 비율에 맞게 조절한다

Transfer Learning

  • 기존에 학습시킨 네트워크를 이용하여 새로운 Task를 해결하는 모델에 재학습 시키는 방법
  • 학습시키는 Dataset이 비슷한 분포를 가지고 있어야 더욱 잘 학습 된다.
  • Layer Freeze
    • 특정한 Layer의 Parameter를 Freeze시켜서 고정시키고 나머지 Layer로만 학습시키는 방법
    • 데이터의 양이 적을때 효과가 좋다
  • Fine Tuning
    • 새로 추가된 Layer의 Learning Rate와 기존 CNN 부분의 Learning Rate를 다르게(기존 부분을 더 작게) 설정하여 Tuning하는 방법
    • 어느정도 데이터가 존재할때 효과가 좋다

Knowledge distillation

  • Teacher Student Learning
  • 큰 모델에서 학습한 weight를 작은 모델에도 비슷하게 작동하게 전달하는 기법
    • 최적화방면에서도 많이 이용된다.

reference

부스트 캠프 ai tech 4주차 Data 시각화 (14)


Interactive Visualization

정형 데이터의 단점

  • 각각의 데이터마다 plot해주어야 하기때문에 Feature가 많으면 그만큼 plot수도 많아진다
  • 상관관계가 존재할 경우에는 10 * 9 개의 plot이 필요하다
  • 공간적인 낭비가 크다
  • 이러한 단점을 Interactive한 시각화로 보안할 수 있다

Matplotlib

  • 인터랙티브를 제공하지만 local에서만 가능
  • 외부 라이브러리를 통해서 웹에도 서비스가 가능은 하다
  • 기능또한 많지 않아서 의미가 크지 않다

Plotly

  • 가장 많이 사용하는 Interactive 시각화 라이브러리
  • R이나 JavaScript같은 다른 언어도 지원한다
  • 문서화가 잘되어있다
  • 커스텀이 아쉽다

Bokeh

  • Matplotlib와 비슷한 라이브러리
  • 문서화가 부족하다

Altair

  • 문법이 pythonic하지 않다
  • 데이터 크기에 5000개의 제한이 있다
  • 기본차트에 특화되어 있음

reference