공부한 내용
1. Computer Vision
1.1. Overview
1.1.1. Why is visual perception important?
1) AI
• AI : 사람의 지능을 컴퓨터 시스템으로 구현한 것
• 사람의 지능은 시각, 소리 등 지각능력 뿐만 아니라 이해의 영역까지 포함
• 넓은 영역인 사람의 지능을 구현하기 위해 reference를 인간으로 설정
2) Multi-modal perception
• 사람이 유아기 시절부터 세상을 학습하는 방식에서 시작
• 오감을 활용한 지각능력 -> 세상과 상호작용, 관찰 -> 인과 관계, 사고능력
• 지각능력 획득이 첫 step이자 가장 중요한 단계
3) Perception to system
• 시스템에서의 지각능력은 input과 output data에 관한 것
• AI의 입출력은 사람이 이해할 수 있는 형태가 좋다.
• social perception 등 multi-modal perception 이용해서 더 유용한 정보 취득
• perception이 불완전하다면 사고능력도 불완전 -> 지각능력 구현이 가장 선행되어야 하고 중요함
• CV에서는 시각 지각능력이 가장 중요
1.1.2. What is computer vision?
1) Visual recognition process
• visual world -> sensing device -> interpreting device -> interpretation
• Human : scene -> eyes -> brain -> interpretation
• Computer : scene -> camera(image) -> GPUs & algorithm -> representation(자료구조)
2) Computer Graphics & Computer Vision
• Computer Graphics
- 이미지를 분석한 정보를 다시 이용하여 이미지 or 3D scene 재구성
- rendering techniques
• Computer Vision
- computer graphics와 하는 일이 반대
- inverse rendering
3) Computer Vision
• Computer Vision
- machine visual perception을 만드는 것
- input : visual data(images or videos)
• Class of visual perception
- 시각 지각능력 종류
- color, motion, 3D, semantic-level, social(emotion), visuomotor(시각 운동성), etc.
• CV는 사람의 지각능력을 어떤식으로 알고리즘으로 구현할 지에 대한 연구도 포함
4) Imperfect visual perception
• 사람의 시각 능력도 불완전한 부분이 존재
• e.g. Thatcher illusion
• 눈과 시각 담당하는 뇌 부분에서 똑바로 서있는 얼굴을 많이 학습, 뒤집힌 얼굴은 덜 학습 -> bias된 학습
• 시각능력 구현 시 사람의 인지 구조 모방한 시각능력 구현
• 사람의 시각능력 장단점을 이해하고 불완전성을 보완할 방법을 모색할 필요가 있다.
5) Implement
• Machine Learning
- 전문가가 data feature extraction 방법론 설계
• Deep Learning
- 전문가가 feature extraction 설계하지 않음
- 사람이 feature extraction할 경우, 중요한 정보 간과할 확률 높다.
- feature를 발견해도, extraction 방법에 따라 성능이 달라질 수 있다.
- deep learning은 input에서 바로 output을 생산하는 end-to-end 학습
- 편리하고 높은 성능
- 사람보다 gradient descent가 feature extraction과 classification 잘한다.
6) CVPR (Computer Vision and Pattern Recognition)
• hot한 분야
• deep learning 도입으로 어려운 연구 과제 해결
1.1.3. What you willl learn in this course
1) Fundametal image tasks
• Semantic Segmentation
• Object Detection & Segmentation
• Panoptic segmentation
2) 실전에서 활용할 수 있는 techniques
3) Multi-modal learning
• 시각정보를 더 돋보이게 하는 시각정보 중심의 다른 감각 데이터들 융합
4) Conditional Generative Model
• control가능한 generative model
5) Visualization
• debugging, 이해하기 위한 visualization tools
1.2. Image classification
1.2.1. What is classification
1) Classifier
• image와 class를 분류하는 mapping
1.2.2. An ideal approach for image recognition
1) kNN (k Nearest Neighbors)
• input : query data -> query data 근방의 k개 data를 찾아 많은 label 정보를 기반으로 output return
• 세상의 모든 data가 다 있다면 가장 비슷한 결과를 찾으면 된다.
• classification 문제를 nearest neighbor search 문제로 변환 가능
• 많은 data -> 시간, 메모리 증가
• kNN 사용하려면 image 간 유사도 먼저 정의 필요
1.2.3. CNN (Convolution Neural Network)
1) CNN
• 많은 데이터를 제한된 복잡도의 시스템에 압축해서 녹여낸 neural network
• e.g. single fc layer
- 모든 pixel을 서로 다른 가중치로 weighted sum -> non-linear activation function -> classification score
- image classification 성능 좋지 않음.
• Visualization of single fc layer networks
- weight matrix를 영상 구조에 맞게 reshape(templete 생성) -> visualization -> 평균 image처럼 보임
• Problems of single fc layer networks
- 단순한 구조로 인해 평균 image 외에는 표현 불가
- test time에서 data가 train시의 영상과 다르게 잘려있거나 scale 맞지 않아 물체의 위치가 맞지 않는다면 완전히 다른 결과
- CNN 등장 배경
• CNN은 locally connected neural networks
- fc layer는 하나의 feature를 extract하기 위해 모든 pixel 고려
- CNN은 영상의 공간적인 특성 고려해서 국부적인 영역들만 connection 고려하여 feature extraction
- feature extraction 위해 필요한 parameter 수 감소
- sliding window처럼 filter를 공유하며 전 영역에서 feature extraction -> feature map 형태
- parameter 재활용 -> 적은 parameter, 효과적 feature extraction, over fitting 방지
- image에서 물체의 위치가 바뀌더라도 feature 적절하게 extract -> 영상에 적합한 network 구조
• Backbone
- cv task에서 CNN을 backbone으로 많이 사용
- design pattern : target task의 head를 적합하게 디자인해서 사용
1.3. CNN architectures for image classification
1.3.1. Brief History
• AlexNet - VGGNet - GoogLeNet - ResNet - Beyond ResNet ...
1.3.2. AlexNet
1) LeNet-5
• 간단한 구조
- convolution layer 2개, fc layer 2개
• 글자 단위 인식
- 우편 번호 인식에 성공적
2) AlexNet
• LeNet-5와 유사한 구조
• Deep architecture
- 7 hidden layers, parameter 증가
• ImageNet으로 학습
• ReLu 사용
• dropout 적용
3) Overall architecture
• 개발 당시 GPU memory 부족한 문제로 network를 반으로 나누어 학습
• 연산속도 고려하여 일부 layer에서만 cross communication
• fc layer의 2048 dimension-> 2048*2 = 4096 dimension (because of two streams)
• LRN은 편의상 제외
• Convolution layer, Pooling layer, FC layer로 이루어진 구조
4) Feature map -> Linear layer
• max pooling된 activation map이 linear layer의 input으로 변환
• feature map : 3D tensor
• linear layer : matrix operation
• 3D -> 2D or 1D 구조로 변경 필요(vectorization)
• 방법 1. average pooling
- activation tensor의 공간정보 압축
- 채널 축의 정보만 남겨둔 vector로 변환
• 방법 2. flatten
- activation map을 순서대로 쌓음
• average pooling과 flatten은 vectorization하는 것은 같지만, dimension에 차이가 있다.
• 논문에서는 flattening 사용
5) LRN (Local Response Normalization)
• deprecated
• activation map에서 명암을 normalization하는 역할
• 명암이 국지적으로 normalization된 효과
• 현재는 batch normalization을 더 많이 사용
6) 11x11 convolution filter
• deprecated
• large filter size
• 큰 receptive field size를 위해 큰 coverage filter 사용
7) Receptive field
• activation에서 하나의 element가 나왔을 때, element를 나오게 한 dependent한 input pixel의 영역
• input space에서 dependency가 있는 영역
• 하나의 값을 결정하기 위해 어느 정도의 영역을 참조했는지 나타내는 지표
• receptive field size : (P+K-1) x (P+K-1)
- P : pooling layer kernel size
- K : convolution layer kernel size
1.3.3. VGGNet
1) Overall architecture
• deeper architecture
• VGG16 : 16 layers, VGG19 : 19 layers
2) simpler architecture
• 3x3 convolution later
• 2x2 pooling layer
3) Performance
• better performance
• better generalization
• deep, but simple architecture -> better performance, better generalization
4) Input
• same with AlexNet
• train data의 평균 rgb 값을 각 채널에서 뺀다 -> normalization
5) Key design
• 3x3 convolution filter with stride 1
• 2x2 max pooling operations
• 작은 kernel size의 convolution layer도 stack을 많이 쌓으면 큰 receptive field size를 얻을 수 있다.
• 이미지의 많은 부분 고려 가능
• 적은 parameter
• deep한 구조로 복잡한 function 관계 학습 가능
• 3 FC layers
• ReLU
• No local response normalization
MeetUp
1. 자기소개
2. Ground rule
- 수업 내용 정리 후 발표
- 과제, 수업 내용 질문
- notion으로 회의록 정리
- 4시 30분 시작
- 랜덤으로 요일 별 moderator 정하기
3. 강의 발표
4. 과제 질문
'BoostCamp' 카테고리의 다른 글
2021.09.09 - [Week 6] Day 4. - (0) | 2021.09.10 |
---|---|
2021.09.07 - [Week 6] Day 2. - (0) | 2021.09.08 |
2021.09.03 - [Week 5] Day 5. 마무리 (0) | 2021.09.03 |
2021.09.02 - [Week 5] Day 4. 대회 종료 (0) | 2021.09.03 |
2021.09.01 - [Week 5] Day 3. 9월의 시작 (0) | 2021.09.02 |