티스토리 뷰
[Day 33] Computer Vision (CV) - 4
1. 강의 복습 내용
1.1) Instance/Panoptic Segmentation
Instance/Panoptic Segmentation
1. Instance Segmentation과 Panoptic Segmentation 차이
: Instance Segmentation이 구분하는 셀 수 있는 물체를 things라고 하고, Semantic Segmentation을 통해 다룰 수 있는 무정형이며 셀 수 없는 영역(배경)을 stuff라고 한다.
즉, Panoptic Segmentation은 Semantic Segmentation 과 Instance Segmentation을 합친 것으로 볼 수 있다. (stuff+things)
2. Instance Segmentation
: Instance segmentation이란, Semantic segmentation에서 더 나아가 같은 Class 이더라도 서로 다른 instance들을 구분해주는 것
2.1) Mask R-CNN
- Mask R-CNN은 Faster R-CNN에서 Mask Branch를 추가한 모델. 그리고 기존의 RoIPooling 방식에서 RoIAlign 방식으로 변경하였다. -> 마스킹을 위해
- 그림에서는 나오지않았지만, RPN 전에 FPN (Feature Pyramid Network)가 추가되었다.
1. Input 이미지가 Backbone Network에 들어간다. (Resize)
2. Backbone Network를 통해 feature map 생성
3. FPN을 통해 2단계에서 생성한 feature map을 통해 새로운 최종 feature map을 생성
4. 최종 feature map을 RPN을 적용하여 Classfication, Box regression output 도출
5. Box regression output을 Input 이미지에 투영시켜 anchor box 생성
6. anchor box들 중 score가 가장 높은 anchor box만 취한다.
7. 크기가 서로 다른 anchor box들을 RoI Align을 통해 Size를 맞춤
8. 각각의 Branch (Box, Classification, Mask)에 anchor box값을 통과 시킴
2.2) YOLACT
- 적은 개수의 Prototypes (Mask R-CNN의 마스크와 유사)의 선형 결합
- 빠른 연산 속도
2.3) YolactEdge
- YOLACT에서의 Feature 정보들의 연산을 더욱 줄이고 전달하는 과정으로 속도를 더 높임
3. Panoptic Segmentation
: Panoptic Segmentation은 Semantic Segmentation 과 Instance Segmentation을 합친 것 (Stuff+Things)
3.1) UPSNet
- Mask R-CNN에서 3개의 Branch로 나뉘었던 것을, UPSNet은 이 Branch들을 다시 선형 결합하였다.
- FPN + Head Branch = Semantic logits + Class/Box + Mask Logit -> Panotic Head (Panoptic logits)
3.2) VPSNet
- 비디오 영상에 초점을 맞춘 모델
1. Align reference features onto the target feature map (Flusion at pixel level)
2. Track module associates different object instances (Track at instance level)
3. Fused-and-tracked modules are trained to synergize each other
4. Landmark Localization
Landmark Localization (=Keypoint estimation) : Predicting the coordinates of keypoints.
1. Coordinate regression : Keypoint의 (x,y) 좌표들을 FC Layer로 예측 -> 일반화 성능이 다소 떨어짐, Keypoint 개수대로 FC Layer도 커짐
2. Heatmap classification : 이미지 전체의 픽셀들을 하나 하나씩 Keypoint의 좌표가 될 수 있는 지 분류 문제
-> 모든 픽셀을 예측해야하므로 연산량이 많아짐, 이미지 사이즈가 커지면 큰 Imbalance 문제 초래
- Heatmap Classification에서 Gaussian을 사용하여 Label에 해당되는 픽셀을 좀 더 큰 범위로 만들어줄 수 있다.
- 좌표 ->(가우시안)-> Heatmap ->(최댓값 인덱스 추출) -> 좌표 식으로 변환이 가능함
4.1) Hourglass Network
- Receptived Field를 크게 만들고 Skip 커넥션으로 Localization정보를 유지 (U-net과 흡사) -> Stack1
- 이 Stack들을 여러번 쌓아 성능을 개선해나가는 구조
- Downsampling (Feature 추출) -> Upsampling 구조
- 그러나 이전 정보를 다음 단계에 넘겨줄 때, 그냥 넘겨줘서 residual하는 것이 아닌 Conv layer들을 지나 넘겨줌
4.2) DensePose
- UV Map -> 3D (전체의 Landmark 를 알면 3d변환도 가능)
- UV Map의 좌표를 바로 출력함 (= 3d mesh를 바로 출력하는 것)
- UV Map은 3d 공간에 텍스쳐(2d)를 입히기 위해 고안된 것 -> 따라서 이미지를 통해 텍스쳐도 입힐 수 있을 것
4.3) RetinaNet
- Multi-task Branches로 다양한 Task에 대응할 수도록 설계된 모델
- Multi-task branches의 장점 -> 다른 Task를 통해 오는 공통된 정보에서 Backbone Network가 훨씬 더 강하게 학습된다.
-> 즉, 다양한 Task를 수행 할수록 Gradient가 많이 흐를것이고 이는 데이터 증강효과와 비슷하다.
5. Detecting objects as keypoints
: Keypoint 검출을 활용하여 Detecting objects을 수행한다.
5.1) CornerNet
- Top-left, Bottom-Right 를 각각 찾아 Embedding화 시키면 같은 Object의 Top-left, Bottom-Right의 유사도가 같을 것이라는 아이디어 -> 성능보다는 속도에 관점을 둔 모델, 임베딩을 통해 추출한다는 아이디어
5.2) CenterNet
Top-left, Bottom-right, Center -> Width, Height, Center 로 개선 -> CornerNet의 성능을 보완 -> 속도와 성능 모두 우수
- Keypoint를 중심점으로 Width,Height를 늘려나가며 Bouding Box를 찾음
지금까지 알아본 모델들을 보면, Backbone Network에 본인이 관심이 있는 Target-Task에 해당하는 Head들을 만들어줘서 다양하게 응용, 적용을 할 수 있으며 현재에도 그렇게 발전해오고 있다. -> 현재 Computer Vision의 큰 흐름 중 하나
1.2) Conditional Generative Model
Conditional Generative Model
1. Conditional GAN
- Conditional GAN은 생성 조건을 제어해줄 수 있는 C (or condition y)를 추가하는 간단한 동작만으로도, 원하는 데이터를 생성할 수 있다.
2. Image Translation GANs
2.1) Pix2Pix
- L1 Loss를 더하여 학습의 가이드라인 제공 (GAN loss만으로는 학습이 다소 불안하였기 때문)
2.2) CycleGAN
- 앞에서 살펴본 Pix2Pix는 Paired한 데이터를 통해 학습을 하였다.
- 하지만 Paired한 데이터를 확보하는 것은 매우 어렵고 Cost가 발생
- 따라서, CycleGAN은 이러한 문제를 해결하기위해 Unsupervised Learning을 한다.
- CycleGAN이 다른 생성 모델과 다른 점은 Unpaired 데이터 셋을 학습한다는 것
- 그리고 순환 일관성 손실 함수(Cycle Consistency Loss Function)를 사용한다는 것
- 또, 총 4개의 딥러닝 모델이 학습을 진행한다.
- 하지만, CycleGAN에는 Mode Collapse 문제(=감별기 모델이 학습이 일어나지않음)가 발생한다.
- Generater가 하나의 생성 이미지만 계속 만들어내는 문제
- Mode Collapse 문제의 해결책으로 제시된 Cycle-consistency Loss는 X->Y->X 로 돌아오는 과정에서 X가 모두 일치해야한다는 것이다. (Generator가 다양한 이미지를 생성? 본래의 X를 지우지않도록 검사)
2.3) Perceptual Loss
- 높은 퀄리티의 Output을 만들기위한 방법중 하나
- 학습하기도 편하고 코드도 간결
- Pre-trained Network가 필요
- Style Target, Content Target에서 추출된 Feature Map을 통해 Transformed Image의 Feature Map과의 비교
- ImageFeature reconstruction loss : Content Target (실제 이미지)와 생성 이미지의 VGG 에서 추출된 Feature의 Loss (L2 Loss) -> Content를 유지하는지 체크
- Style reconstruction loss : Style Target (의도하는 스타일의 이미지)와 생성 이미지의 VGG 에서 추출된 Feature의 Gram matrices를 구하고 Loss (L2 Loss) -> Style을 유지하는지 Check
- Gram matrices : Localization 정보가 중요한것이 아니라 이미지(Feature)의 전반적인 통계적 특성이 중요
*) 즉, Content Target <-> Transformed Image는 Feature의 공간 정보의 유사도가 중요하고, Style Target <-> Transformed Image는 공간적 정보보다 Feature들의 전반적인 통계적 특성(=Gram Matrices)이 중요하기 때문에 비교하는 방식이 다르다.
2. 피어 세션
1. 강의 내용에 대한 토의
- Image Segmentation
- GAN 심화
- 질문 답변 진행
- Further Question
2. 과제 토의 및 마스터클래스 준비
3. Conclusion
1. 더 학습해보고 싶은 것
- Mask R-CNN
- UPSNet
- CenterNet (-> 성능이 뛰어난 것 같음)
- 다음 논문이나 자세한 메소드 메커니즘 파악하기
- Conditional GAN, CycleGAN
- 각 Loss 함수, 메커니즘 재 파악
- Perceptual Loss
- 응용해볼 것 고민해보기
'부스트캠프 AI Tech > 학습정리' 카테고리의 다른 글
[Day 35] 모델 경량화 - 1 (0) | 2021.03.15 |
---|---|
[Day 34] Computer Vision (CV) - 5 (0) | 2021.03.12 |
[Day 32] Computer Vision (CV) - 3 (0) | 2021.03.11 |
[Day 31] Computer Vision (CV) - 2 (0) | 2021.03.09 |
[Day 30] Computer Vision (CV) - 1 (0) | 2021.03.08 |
- Total
- Today
- Yesterday
- DeepLearning
- AI 프로젝트
- 코딩테스트
- 데이터연습
- 브루트포스
- 알고리즘
- P-Stage
- 이분탐색
- C++
- ResNet
- Unet 구현
- cnn
- 데이터핸들링
- DACON
- python
- 부스트캠프 AI Tech
- 다이나믹프로그래밍
- 프로그래머스
- 그리디
- 백트래킹
- 동적계획법
- 백준
- Unet
- 공공데이터
- Data Handling
- NLP 구현
- dfs
- 네트워킹데이
- pandas
- Vision AI 경진대회
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |