본문 바로가기

부스트캠프 AI Tech

[WEEK 4-5] CV 이론

Computer Vision

- Inverse rendering (Rendering은 Computer Graphics)

Machine Learning 에서 Deep Learning 로

- Feature extraction + Classification (엔드투엔드로)

Classifier

- k Nearest Neighbors (k-NN)

Convolutional Neural Networks (CNN)

- fully connected : 탬플릿이 조금만 달라져도 다른 결과

- locally connected : 더 적은 파라미터로 효과적

- 영상에 적합하여 다양한 CV tasks에 backbone으로 쓰임

- Image-level classification, Classification+Regression, Pixel-level classification

AlexNet

- LeNet-5 : 심플한CNN

- 더 크고 , 더 많은 학습데이터에, 더 나은 activation function (ReLU), regularization technique (dropout)

- 5 convolutional layers, 3 fully-connected layers

- Local Response Normalization (LRN) : 명암을 normalization 하는데 이제 안씀 (Batch normalization으로...)

- 11x11 convolution filter 같은 큰 필터도 이제 안씀

- Receptive field : KxK conv. filters, PxP pooling layer (P+K-1)x(P+K-1) 

VGGNet

- Deeper, Simpler, Better performance, Better generalization

- Input은 AlexNet과 같은 224x224 RGB

- 3x3 convolution filters, 2x2 max pooling perations, 3 FC

 

Data augmentation

- Brightness adjustment

- Rotate, flip

- Crop

- Affine transformation (shear)

- CutMix

RandAugment

- 랜덤하게 수행하고 좋은 성능 서치

Transfer learning

- 한 데이터셋에서 학습을 다른 데이터셋에서 사용

- FC layer만 새로 업데이트하여 학습하거나 Convolution Layer는 Low learning rate로 학습

Knowledge distillation (Teacher-student learning)

- Teacher Model 과 Student Model 간의 KL div. Loss 로 학습 : label을 사용 안함

- label이 있으면 Distillation Loss (KLdiv) 와 Student Loss (CrossEntropy) 둘을 사용

- Hard label (One-hot vector), Soft label

- Softmax with temperature(T) : 분포를 퍼트려서 soft하게 만듦

Semi-superviesd learning

- Pseudo-labeled dataset : Unlabeled dataset을 pre-trained model로 생성

- Labeled dataset과 Pseudo-labeled dataset을 합쳐서 Model 학습

Self-training

- Augmentation + Teacher-Student networks + semi-supervised learning

 

Deeper network

- Gradient vanishing / exploding, Computationally complex, Degradation problem

GoogLeNet

- Inception module : 하나의 레이어에 여러 필터들 적용

- 1x1 convolutions : bottleneck, 채널 수를 줄여줌

- Auxilliary classifier : vanishing 방지, 학습시에만 사용

ResNet

- Degradation problem : 레이어가 높게 쌓을수록 최적화가 잘 안되는 문제

- Shorcut (skip) connection : vanishing 문제 해결, 경로의 수 2^n으로 복잡한 맵핑 학습

DenseNet

- Dense blocks : 모두 연결, ResNet과 다르게 더하지 않고 concat

SENet

- Squeeze : golbal average pooling

- Excitation : attention weight

EfficientNet

- width, depth, resolution scaling을 적절한 비율로 compound scaling

Deformable convolution

- offset field에 따라 irregular grid sampling

CNN backbones

- GoogLeNet이 효과적이지만 쓰기 힘들어 VGGNet, ResNet을 많이 사용

 

Semantic segmentation

- 픽셀 단위 분류

Fully Convolutional Networks (FCN)

- 사이즈 호환성 높은 구조

- Fully connected layer 를 Fully convolutional layer (1x1 convolutions) 로

- Upssampling : Transposed convolution 에서 NN-resize, Bilinear-resize covolution 으로

- 중간단계의 특징을 합하는 것이 도움이 됨

U-Net

- Contractiong Path : 일반적 CNN과 동일

- Expanding Path : 단계별로 upsampling, Contractiong Path 대응되는 레이어 concat

- feature sizes 짝수여야함

DeepLab

- Conditional Random Fields (CRFs) : 경계를 잘 찾도록 하는 후처리 툴

- Dilated convolution (Atrous convolution) : weight 사이를 띄어서 더 넓은 영역 고려

- Depthwise separable convolution : 채널별로 Depthwise convolution 한 후 1x1 Pointwise convolution

 

Object detection

Gradient-based detector

- HOG(Histogram of Oriented Gradients), SVM(Support Vector Machine)

Selective search

- 비슷한 색끼리 나누고 합치고

Two-stage detector

- R-CNN, Fast R-CNN, Faster R-CNN

- IoU (Intersection over Union) : 교집합 / 합집합

- Anchor boxes : 미리 정해진 후보 박스

- Non-Maximum Suppression (NMS)

One-stage detector (Single)

- 정확도를 포기하더라도 속도를 빠르게, real-time

- You only look once (YOLO)

- Single Shot MultiBox Detector (SSD)

Focal loss

- Class imblance 문제를 해결해 RetinaNet 제시

DETR

- Transformer를 적용

 

CNN visualization

- filter visualization : 큰 의미 없음

Embedding feature analysis

- Nearest neighbors (NN) : 비슷한 이미지 탐색

- Dimensionality reduction : 이차원으로 줄여서 (t-SNE) 맵핑

Activation investigation

- Layer activation : 히든 노드가 바라보는 곳을 나타냄

- Maximally activating patches : 히든 노드 중 가장 높은 값인 곳

- Class visualization : 클래스에 대해 높은 값을 취하는 이미지 (Regularization term)

Saliency test

- Occlusion map : 마스크로 가려서 예측될 확률

- Backpropagation : 특정 사진으로 클래스 검출에 영향을 미친 부분, gradient magnitude map

- Rectified unit (backward pass), Guided backpropaation : 음수 값 0으로 마스크

- Class activation mapping (CAM) : 히트맵 (Global average pooling (GAP) 필요)

- Grad-CAM : 재학습 필요 없음

- SCOUTER : 왜 아닌지까지

 

Autograd

- Automatic gradient calculating API

- requires_grad : True로 grad를 가질 수 있는 변수로 선언

- backward : 두번 호출 하기 위해 retain_graph = True

- grad_fn : 연산에 대한 생성자

- hook : gradient를 계산할 때 마다 낚아채자

- register_forward_hook, register_forward_pre_hook, register_backward_hook

- remove : register된 hook을 지움

 

Instance segmentation

- Mask R-CNN : RoIAlign, Faster R-CNN + Mask branch

- YOLACT (You Only Look At CoefficienTs) : 선형결합으로 다양한 마스크 생성

- YolactEdge : feature 재활용으로 소형화

Panoptic segmentation

- UPSNet : Semantic & Instance head -> Panoptic head -> Panoptic logits

- VPSNet (for video) : 이전 프레임과 연관성을 담음

Landmark localization

- Coordinate regression : 부정확, 일반화에 문제

- Heatmap classification : 계산량이 많음, Landmark location to Gaussian heatmap (Take-home assignment는 반대로)

- Hourglass network : U-Net과 비슷한 구조가 여러개 쌓임, cancat 대신 더하고, skip도 conv layer를 통과

- DensePose R-CNN : human body를 UV map 표현으로, Faster R-CNN + 3D surface regression branch

- RetinaFace : FPN + Multi-task branches

Keypoints

- CornerNet : Bounding box의 코너 페어를 찾아서 빠르게

- CenterNet : Center 포인트도 추가, 코너 대신 Width와 Height 포인트로

 

Conditional generative model

- 주어진 condition에서 random sample

- audio super resolution, machine translation, article generation with the title

Conditional GAN

- conditional input이 추가됨

- Image-to-Image translation : Style transfer, Super resolution, Colorization 등

- Super resolution (SRGAN) : low resolution to high resolution, MAE/MSE loss 보단 GAN loss, realistic and sharp

Pix2Pix

- GAN loss + L1 loss 을 Total loss 로

CycleGAN

- non-pairwise dataset으로 학습

- GAN loss + Cycle-consistency loss 를 CycleGAN loss 로, 복원이 되게끔 유도

Perceptual loss

- GAN loss 보다 학습과 코드가 simple하지만 pre-trained network 필요

- Style Target과 Content Target를 Pre-trained loss network로 비교

GAN apps

- Deepfake, Face de-identification, Video translation (manipulation)

 

multi-modal

- 데이터의 표현 방법이 다름, 정보양과 피처의 비대칭, 특정 모달에 편중

- Matching, Translating, Referencing

Text embedding

- word2vec (Skip-gram model) : 주변 워드 간의 관계성 학습 유도

Joint embedding (Matching)

- Image tagging : Combining pre-trained unimodal models

- Image & food recipe retrieval

Cross modal translation (Translating)

- Image captioning : Show, attend, and tell - Attention, Inference

- Text-to-image by generative model

Cross modal resoning (Referencing)

- Visual question answering : End-to-end training

Sound representation

- Fourier transform (FT), Short-time Fourier trnasform (STFT), Spectrogram

Joint embedding (Matching)

- Scene regonition bt sound : SoundNet

Cross modal translation (Translating)

- Speech2Face

- Image-to-speech synthesis

Cross modal resoning (Referencing)

- Sound source localization : Unsupervised version 가능, Semi-supervised version은 양쪽 loss 모두 사용

- Looking to listen at the cocktail party

- Lip movements generation

 

'부스트캠프 AI Tech' 카테고리의 다른 글

GitHub 제대로 쓰기  (0) 2023.12.14
[WEEK 6-7] CV 기초 프로젝트  (0) 2023.12.11
데이터 직군에 대한 지식 쌓기  (0) 2023.11.30
[WEEK 3-4] Data Visualization  (1) 2023.11.23
[WEEK 3] DL Basic  (0) 2023.11.20