전체 글 70

[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..

[CV basic] Object Detection

R-CNN Object Detection 분야에 최초로 딥러닝 기법을 적용한 모델. 전체 태스크를 다음의 두 단계로 나눠 2-stage Detector라고 한다. 1. 물체 위치를 찾는 Region proposal 2. 물체를 분류하는 Region Classfication 입력 이미지에서 bounding box를 만들어 내고 해당 부분에 대해 extract region proposal를 진행한다. 이후 박스 크기를 고정값으로 Warped한 후 해당 image regions에서 CNN - pretrained 모델에서 forward 연산을 통해 feature map을 추출한다. 이후 해당 부분에서 SVM을 통해 분류를 진행 후, bounding-box regression 역시 추가로 진행한다. 하지만 이 경..

[CV basic] Semantic Segmentation

Fully Convolutional Networks semantic segmentation에 대한 최초의 end-to-end architecture. 기존의 Fully connected layer인 FC layer에서는 마지막 평탄화 과정에서 뉴런의 값이 flatten되며 기존 이미지의 위치 정보를 잃어버린다. 따라서 Fully convolutional layer를 사용해 단순히 차원만을 축소해 위치 정보를 유지할 수 있다. FC layer의 자리에 1x1 크기를 가진 kernel과 클래스 개수만큼의 차원을 가진 CNN을 대체하여 사용하는 경우 위치 정보를 기억할 순 있지만, feature map의 크기가 원본보다 훨씬 적다는 한계가 있다. 위 한계를 극복하기 위해선 upsampling을 사용한다. se..

[CV basic] GoogLeNet/ResNet

GoogLeNet GoogLeNet의 전체 구조. 동그라미 친 부분이 Inception module이며, 첫 부분은 Vanilla CNN이다. Inception module (a)는 1x1 conv를 통한 차원 축소를 진행하지 않은 Inception module이며, (b)는 차원 축소를 진행한 모듈이다. Inception module은 1x1, 3x3, 5x5 conv filter 이후 3x3 max pool을 진행한 후 모든 필터를 합쳐서 뱉어낸다. (b)의 차원 축소는 1x1 conv filter의 bottleneck 구조로 이루어진다. 이런 구성으로 이루어진 Inception module을 쌓아서 이루어진 구조이며 그 아래엔 Auxiliary classifiers가 있다. Auxiliary cla..

[CV basic] Data Efficient Learning

Data augmentation 데이터셋은 대부분 편향되어있다. 훈련 데이터와 실제 데이터 사이에는 항상 차이가 있기 때문에 data augmentation을 통해 실제 세상에 있는 데이터와의 차이를 매꿔야 한다. 데이터 증강을 하는 방법으로는 데이터를 회전시키거나 좌우반전시키는 Flip/Rotate, 색을 변경하는 방법, 임시로 이미지의 크기를 자르는 Crop, Affine 변환, 각기 다른 이미지를 잘라서 붙이는 Cutmix, 노이즈를 주어 흐리게 만드는 blur 등의 여러 기법이 있다. PyTorch의 코드에서는 albumentations, transforms등의 함수를 사용해 data augmentation을 간단히 진행할 수 있다. albumentations_transform = albument..

[CV basic] AlexNet/VGGNet

작년에 왔던 각설이 죽지도 않고 또 온것처럼 CV 얘기에선 정말 빠질 수 없는 근-본모델.. 이제는 도메인 별 기초를 배우기 때문에 심화학습으로 배웠고, 과제로 풀었던 코드까지 살짝 리뷰하며 정리 LeNet 가장 최초의 CNN 모델이라고 볼 수있는 LeNet. Conv - Pool - Conv - Pool - FC - FC 구조로 이루어져 있으며, 5x5 with strde 1 필터를 사용한다. pooling으로는 2x2 max pooling with stride 2 사용. AlexNet 위에서 LeNet을 언급한 것은 비교하기 위함. 단순히만 봐도 Conv - pool - Conv - pool - Conv - Conv - Conv - Pool - FC - FC - FC 로 모델이 훨씬 복잡해졌음. 또한..

[DL basic] Transformer

https://www.youtube.com/watch?v=o8RkbHv2_a0 NewJeans Attention Is All You Need Sequential Model seq2seq 모델의 경우 인코더-디코더 구조로 구성되어 있다. 인코더는 입력 시퀀스를 하나의 벡터 표현으로 압축하고, 디코더는 이 벡터 표현을 통해 출력 시퀀스를 만들어 낸다. 하지만 이 과정은 입력 시퀀스가 벡터로 압축되는 과정에서 그 정보가 손실되고, 이럴 보정하기 위해 사용하는 기법이 어텐션이다. 트랜스포머는 이 어텐션만으로 인코더와 디코더를 만든다는 아이디어에서 고안된 모델이다. 그래서 Attention Is All You Need라는 논문으로 게재되었다. High-Level Look for Transformer 인코딩 구간의..