Week4 강의 요약
Image classification
VGGNet
- 깊고, 단순한 구조임에도 좋은 성능 및 일반화 성능을 가지고 있는 모델
Data augmentation
- Train dataset은 Real data의 분포를 완벽하게 표현할 수 없음
- 주어진 데이터들을 일정 부분 변형한 데이터도 추가한다면 조금 더 Real data의 분포에 가까워질 수 있을 것임
- ex) brightness, rotate, flip, crop, affinetransformation, cutmix etc
Transfer learning
- 많은 양의 고품질 데이터셋을 구축하는 것은 매우 어려움
- 비슷한 데이터셋의 경우 공통적인 특징을 가지고 있음
- 따라서 이전에 '대량'의 '고품질' 데이터셋으로 학습한 모델을 가져와 해결하고자 하는 task에 맞게 적절히 변형 및 학습을 하면 task에 적합한 고성능의 모델을 쉽게 만들 수 있음
Approach 1
- 마지막 레이어를 자르고, 적절한 크기의 fc layer(혹은 task에 맞는 layer)를 붙여주기
- 새로 붙인 layer에 대해서만 학습을 진행
Approach 2
- 마지막 레이어를 자르고, 적절한 크기의 fc layer(혹은 task에 맞는 layer)를 붙여주기
- 새로 붙인 layer에는 high learning rate로, 가져온 layer 들에 대해서는 low learning rate로 학습을 진행
Semantic Segmentation
FCN
- 최초의 semantic segmentation을 위한 end-to-end 모델
- input과 동일한 size의 segmentation map을 출력
- fc layer 대신 1x1 conv layer를 이용하였기에 임의의 size의 input을 넣을 수 있음
- fc layer를 사용하는 경우 공간 정보를 상실하게 됨
- 1x1 conv layer를 사용하는 경우 공간 정보를 유지할 수 있음, 각 픽셀마다의 class를 예측할 수 있게 됨
- 예측한 score map이 low-resolution이라는 한계점이 존재
- upsampling을 이용하여 score map을 키움으로써 해결해 볼 수 있음
upsampling ex) Transposed convolution, Upsample and convolution
- FCN에서는 score map을 확장하는데 skip connection을 이용
- lower layers에서의 fine, detail, local한 정보와 higher layers에서의 coarse, semantic, global 정보를 결합
U-Net
- FCN과 마찬가지로 fully convolutional networks임
- FCN에서의 skip connections(element-wise add)와 비슷하게, dense map을 예측할 때 contracting path에서의 정보를 concat함
- 보다 더 정확한 segmentation을 수행할 수 있음
DeepLab
- Conditional Random Fields (CRFs)
- input image에서 뽑은 경계를 이용하여 segmentation map의 경계를 정교하게 다듬어주는 post-processing 방법
- Dilated convolution
- kernel의 각 element마다 한 칸씩 띄어서 파라미터의 증가 없이도 기존의 convolution kernel보다 더 넓은 영역을 고려할 수 있게 한 방법
- Depthwise separable convolution
- 기존의 convolution 방법보다 parameter의 개수와 연산량을 크게 줄일 수 있는 convolution
Object Detection
Two-stage detector(R-CNN family)
R-CNN
- image로부터 region proprsal을 뽑기 (약 2k 개)
- CNN feature를 계산(이미 학습되어 있는 feature extractor를 사용)
- SVM을 이용하여 region classify
Fast-RCNN
- image로부터 Conv.feature map 뽑기
- ROI pooling을 이용하여 ROI feature 뽑기
- 각 ROI에 대하여 class 및 box를 예측
Faster-RCNN
- R-CNN과 Fast R-CNN에서의 Resion proposal 부분을 neural net으로 만들어 end-to-end로 학습을 가능하게함
Single-stage detector
- 정확도를 조금 포기하더라도, 속도를 확보해서 real time detection이 가능하도록 설계
YOLO
- SxS Grid로 나누어 각 Grid에서 box를 특정할 수 있는 4개의 좌표값과 confidence score을 뽑음
SSD
- CNN pyramidal feature hierarchy를 이용하여 box를 특정할 수 있는 4개의 좌표값과 confidence score을 뽑음
- 다양한 feature map을 합쳐서 좌표값과 score을 뽑기 때문에 정확도 측면에서 YOLO보다 더 좋은 성능을 보임
Single-stage detector vs. Two-stage detector
- Focal loss
- 일반적인 영상에서 background 크기 > 실제 물제의 크기 : 일종의 class imbalance 문제라 볼 수 있음
- Focal loss란 정답에 가까울수록 gradient가 적게 발생하도록 하고, 어렵고 잘못 판별된 예제들에 대해서는 gradient가 크게 발생할 수 있도록 한 loss임
- RetinaNet
- Feature Pyramid Networks(FPN) + class/box prediction branches
- layer를 깊게 쌓으면 속도가 조금 느리게 되어다로 조금 더 좋은 성능을 보일 수 있음
마스터 클래스 - 안수빈 마스터(서울대 HCI Lab 석사 졸업, 해시드 Data Analyst)
- export를 support하고, beginner를 끌어줄 수 있는 지속 가능한 개발자가 되자.
- 내 분야에서 실력도 갖추고, 함께 하고 싶은 개발자가 되자.
- 프로그래머와 분석가에게 최고로 필요한 언어는 자Python/C++/Java가 아닌 "영어"이다.
한 주 요약
이번 주에는 지난주에 이어 Data viz와 함께 Computer vision에 대해 다룬 강의들을 들을 수 있었습니다. 특히 Computer vision의 기초를 다뤄주신 오태현 교수님께서 수많은 양의 내용들에서 굵직한 부분들을 뽑아 자세히 알려주셔서 Computer vision에 대해 보다 큰 시야로 바라볼 수 있게 된 것 같습니다.
그리고 이번 주의 마지막 피어세션에는, Computer vision 강의 내용들을 바탕으로 팀원 분들과 함께 질문을 주고받는 시간을 가졌습니다. 질문을 정리하면서 어떤 부분이 중요한 부분인지에 대해 고민을 해볼 수 있었고, 질문에 대한 대답을 하며 어떤 부분을 제대로 알고 있는지 혹은 더 공부를 해야 하는지에 대해서 파악할 수 있었기에 정말 유익한 시간이었던 것 같습니다!
벌써 내일이면 4월이라는게 정말 신기합니다...! 매일매일 목표를 세우고 이루어 나가고 있는 것이 제 입으로 말하는 게 조금 부끄럽지만,, 정말 뿌듯하고 하루하루 성장해나가는 느낌이 듭니다!
이번 한주도 수고했으니, 주말은 꽃도 구경하며 재충전하는 시간을 가져야겠습니다☺️🌸