네이버 부스트캠프 학습 정리 41

[P-stage 1] Swin Transformer

Transformer를 사용한 모델도 사용해보자는 의견이 있어 정리하고 사용해보기 위한 정리글. ViT (Vision Transformer) NLP 분야에서 한 획을 그은 (GPT 모델에도 사용되는) Transformer를 image classification 분야에 맞게 변형하며 CNN을 사용하지 않도록 만든 모델. 사실상 이 모델의 등장 이후 CNN을 사용한 모델의 종말을 예고했고, Transformer가 NLP뿐 아닌 CV까지 뻗치며 인공지능의 근본이 되었다. 1. 이미지를 여러 개의 patch로 자른 후 각 패치별 embedding demension (16 x 16 x 3)으로 만든다. 이를 통해 기존 Transformer 모델에서의 시퀀스 데이터와 같이 만든다. 2. 각 패치에 대한 flatte..

[P-stage 1] DenseNet

EfficientNet, ResNet과 함께 실험해 볼 모델인 DenseNet에 대해 정리. 'Densely Connected Convolutional Networks' 논문에서 소개된 모델이다. 모든 레이어 간의 Feature map을 연결한 모델. 첫 번째 Convolution인 빨간 색 layer의 마지막 단인 feature map에서 연결된 빨간 선을 보면 이후 오는 모든 레이어에 연결한다. 즉 이전 레이어의 피처맵을 그 이후의 모든 레이어의 피처맵에 연결해 덧셈이 아닌 연결 연산을 한다. 이 연산을 통해 얻을 수 있는 점은 1. 모델이 이전의 정보를 기억하며 정보의 흐름이 이어진다. 기존의 CNN 모델에서 이전 레이어의 피처 맵이 다음 레이어의 입력 값으로 사용되며 많은 레이어를 통과해 모델의 ..

[P-stage 1] EfficientNet

현재 ImageNet Accuracy에서 SOTA 모델인 EfficientNet. SOTA 모델을 쓰는 것이 당연히 좋지 않을까.. 싶어서 사용하고 있지만, 그리고 대회에서도 아마 data를 조정하고 hyper parameter를 조정하는 것이 점수를 높이는 방법이고 모델은 그냥 EfficientNet을 쓰는게 좋지 않을까 싶지만, 그래도 알고 쓰는게 좋을 것 같아 이 모델에 대한 정리를 한다. 모델의 크기 키우기 하드웨어 기술이 감당할 수 있는 모델의 크기가 증가하는 만큼 모델의 크기를 키워 성능을 높이는 방향의 연구가 이루어지고 있다. 모델의 크기를 키우는 3가지 주요 방법으로는 1. Layer의 깊이를 더 깊게 쌓는 것 2. Channel width(filter의 수) 를 늘리는 것 3. image..

[P-stage 1] Image Classification Loss에 대한 고찰

Baseline 코드의 loss.py 파일에 들어가면 기본적으로 3가지 Loss가 정의되어 있고, nn.CrossEntropy가 있다. CrossEntropyLoss FocalLoss LabelSmoothingLoss F1Loss 이 네 가지를 사용하는 경우도 알고 쓰고, 이를 알면서 또 내 모델에 어떤 Loss function을 쓰는게 좋을 지 생각해보자. Cross Entropy Loss N가지 종류의 클래스에서 데이터의 라벨이 one - hot encoding으로 정답이 있을 때, 활성화 함수 Softmax를 통과한 클래스의 예측값이 다음과 같이 나왔다고 하자. 이 식은 다음의 식으로 변경이 가능하며 2번 클래스로 예측한 확률이 가장 높기 때문에 실제 확률 분포의 확률 분포가 [0, 1, 0] 으로..

[P-stage 1] 실험 환경 세팅

가상 환경 설정 SSH 서버에 접속하기 위한 여정. 부스트캠프를 진행하며 대회 진행에서 학습에 필요한 GPU를 인당 1개씩 v100으로 서버를 통해 지원해준다. v100 32G는 몇백만원 하는 굉장히 고가의 GPU.. 갓이버 클라우드. 아무튼 이 서버를 사용하기 위해 매번 들어가기 귀찮기도 하고, Vscode와 연동하는 방법을 어떤 분이 Slack에 친절히 pdf까지 올려주셔서 이 방법을 통해 Vscode에서 SSH 서버에 원격 접속해 이용하는 방법에 대해 익혔다. 1. Key 발급 서버를 실행시키면 최초 실행 시 자동으로 key 파일이 다운로드 된다. 나는 데스크탑에서 서버를 최초 실행하고, 다시 노트북에서 서버를 연동하려고 시도해서 key 파일을 못 찾아서 한참을 헤맸다. 이런 경우 아마 key 파일..

P stage 돌입과 학습 정리 방식 변경

이제 간단한 이론 강의와 과제로 진행되던 U stage가 끝나 본격적으로 대회가 시작하는 P stage에 들어간다. 이번 주, 다음 주는 마스크 착용 감지에 대한 Image classification에 대해 대회를 진행하며, 프로젝트로 진행하는 만큼 강의의 내용은 '어떻게 진행할 지' 에 대해서 알려주고 이론적인 내용은 없다고 봐도 무방하다. 따라서 학습 정리에 대해 이제 대회가 시작한 나머지 기간동안은 코드를 작성하며 내가 깨달은 점, 모델을 구현하기 위해 찾은 지식들과 내가 사용하는 모델에 대한 정리. 즉 내가 무엇을 쓸 때 '알고 쓰자' 에 초점을 두어 정리할 것이다.

5주차 회고

이번 주 학습정리는 모든 강의에 대해 하지 않았다. 솔직히 3개나 한 것도 기적이다. 강의를 들으면서 약 40%이상의 시간을 멍때렸고, 집중하지 못했다. CV의 방대한 분야에 대해 1시간마다 이 엄청난 내용들을 압축해서 호로록 진행하는 교수님의 말이 잘 안들렸다. 그나마 관심이 있는 panoptic segmentation, cGAN, multi-modal에 대해 정리하고 정리가 애매한 분야인 CNN visualization, 3D understanding, Recent trends on vision transformer에 대해서 정리하지 못했다. 하지만 ViT에 대한 이해가 필요하다고 생각되어 지난 DL basic 주차에 있었던 ViT 심화 과제를 따로 풀어보고, 심화학습에 정리할 예정이다.

[CV basic] Multi-modal

Multi - modal 인간의 지각 능력 (시각, 청각, 후각, 촉각 등)의 여러 지각 능력에서 각 다른 지각의 특성을 갖는 데이터들을 함께 이용해서 학습한 모델을 의미한다. Text data를 사용해 Image를 분류할 수 있는 모델이나, 반대로 Image data를 사용해 그 image를 설명하는 text를 생성하는 모델 등이 해당된다. 하지만 이런 멀티 모달은 학습하기 어려운 특징이 있다. 각 데이터의 유형마다 가지고 있는 정보가 다르기 때문에 정보의 양 뿐만 아니라 feature space 역시 다 다르기 때문에 유형마다의 차이가 크기에 합쳐서 표현할 방법이 필요하다. 멀티 모달의 여러 유형마다 데이터의 난이도, 편향등이 다르기 때문에 같은 비율의 데이터를 사용해 학습을 진행하는 경우 결과로 한..

[CV basic] Conditional Generative Model

cGAN 주어진 'condition'에 따라서 이미지를 생성할 수 있는 것. 위 이미지처럼 'sketch of a bag' 이 condition으로 주어지고, 이에 맞는 이미지를 생성하게 된다. 일반적인 generative model에서는 다양한 가방하면 떠오르는 이미지들 중에서 랜덤하게 한 개를 그리지만, conditional generative model에서는 스케치에 기반한 가방이 생성된다. 일반적인 GAN과 cGAN의 차이는 Real/Fake를 통한 'Criminal' (Generator) crafts, and "Police" (Discriminator) detects가 서로 counterfeit하며 학습하는 과정은 같지만, Fake 과정에서 C라는 특정 조건을 부여하게 된다. 이런 방식을 통해 ..

[CV basic] Instance Panoptic Segmentation

Instance segmentation semantic segmentation은 각 pixel들이 어느 클래스에 속하는지 분류한다. 하지만 이 경우 같은 class 내의 object들에 대해 서로 구분지을수 없다는 단점이 있다. 반면 instance segmentation은 각 pixel들이 어떤 클래스에 속하는지 분류한 후 같은 클래스 내에서도 서로 다른 instance인 경우 다른 색으로 표현한다. 즉 semantic segmentation + distinguishing instances를 동시에 수행한다. Mask R-CNN Fast R-CNN의 구조에서 pixel에 대한 class를 예측할 수 있는 개선이 이루어진다. 따라서 pixel 단위 segmentation mask를 예측할 수 있는 bra..