Computer Vision💖/Basic

    [CV] Hidden dimension이 너무 클 때 flatten 하지 말고 똑똑하게 layer 추가하기

    [CV] Hidden dimension이 너무 클 때 flatten 하지 말고 똑똑하게 layer 추가하기

    요즘 모델 아키텍처적인 설계를 많이 하구있다. 사실 내가 가장 못하는 구현이기도 하다. ㅜㅜ 연구를 점점 해나갈수록 내가 상대적으로 잘하는 것, 못하는 것이 슬슬 구분되기 시작하는데 이건 내가 못하는 것에 속한다 ㅎㅋ.. 예전에 친한 언니가 딥러닝은 차원맞추기라고 하는 얘기를 들었던 적이 있는데, 요즘 공감되구 있다. 암튼 ViT 아키텍처를 고치다가, weight matrix를 중간에 추가해야할 일이 생겼다. 그런데 dimension이 맞지 않는거다. 예를 들어서 아래와 같은 상황이다. [1, 65536, 64] 텐서에 특정 weight matrix를 곱해서, 결과적으로 [1,8] 크기의 행렬을 만들어야 함 # Flatten? 나는 아키텍처 설계에 익숙치 않기 때문에, 위와 같은 상황에서 처음에는 아래와..

    [CV] 이미지들 사이의 관계를 T-SNE plot으로 나타내기

    [CV] 이미지들 사이의 관계를 T-SNE plot으로 나타내기

    오늘은 논문용 그림을 그리다가.. T-SNE plotting에 대해 나중에 또 쓸 일이 있을 것 같아서 간단히 정리해놓는다! 😎 여러 공모전 참여에서 얻은 overfitting의 상처로.. 연구를 처음 배울 때부터 나는 domain shift에 관심이 많았다. DG/DA paper들에서 꼭 보이는 plot이 T-SNE plot 인데, 데이터들 사이에 domain shift를 보여주기에 딱이다. 이 포스팅에서는 ResNet18에서 얻은 feature들을 T-SNE으로 차원축소해, 이들이 얼마나 떨어져있는지 plotting 하는 방법을 다룬다. [1] Pretrained ResNet18 Setting 먼저 PyTorch 내장된 ResNet을 불러온다. ResNet18은 특히 Input size가 (224, ..

    [CV] ResNet-18로 특정 Image의 feature 추출하기 (PyTorch)

    [CV] ResNet-18로 특정 Image의 feature 추출하기 (PyTorch)

    오늘은 리부탈에서 사용했던 간단한 feature extraction 과정을 포스팅해보려고 한다. 리부탈 끝난 기념으로 여유롭게 포스팅을 하구있다 🥳🔥 우선 오늘 포스팅할 내용은 특정 Image 하나가 들어왔을 때, 이 image를 잘 나타내는 feature를 추출하는 pytorch 방법이다. 나의 경우에는 segmentation map의 feature가 필요했고, 단순 convolution layer를 쌓는 것보다 pretrain된 PyTorch 내장 모듈을 사용하는 것이 좋을 것 같다는 생각에 ResNet을 이용하게 됐다. 우선 간단히 ResNet-18부터 짚고 넘어가고, 어떻게 특정 image의 feature를 추출하는지 그 code를 소개해보려고 한다. # ResNet-18 우선 이 글을 읽는 독자..

    [CV] Adversarial Learning(적대적 학습)이란? + 응용

    [CV] Adversarial Learning(적대적 학습)이란? + 응용

    오늘은 PointAugment paper를 읽다가 main 원리로 나온 Adversarial learning에 대해 포스팅해보려고 한다. 주로 적대적 학습이라고 하는데, 그냥 내가 이해한 내용을 간단히 정리해보려고 한다. (미팅준비로 인해... 자세한 포스팅은... 미뤄두겠다.) # Idea 우선 적대적 학습에서, 적대적(adversarial)이란 '서로 대립관계에 있는' 이라는 뜻이다. 흔히 들어봤을 GAN의 속 의미가 Generative adversarial networks 인데, 여기 들어가는 adversarial과 비슷한 의미라고 이해할 수 있다. GAN은 흔히 두개의 네트워크가 경쟁하며 학습하는 모델이라고 잘 알려져 있는데, Discriminator를 잘 속이기 위한 데이터를 Generator가..

    [CV] Self-supervised learning(자기주도학습)과 Contrastive learning - 스스로 학습하는 알고리즘

    [CV] Self-supervised learning(자기주도학습)과 Contrastive learning - 스스로 학습하는 알고리즘

    오늘은 Self-supervised learning(자기주도학습)과 주된 학습 방법인 Contrastive learning에 대해 포스팅하겠습니다. 먼저 Self supervised learning이 왜 필요한지부터 살펴보겠습니다. Self-supervised learning의 필요성 딥러닝 학습에는 충분한 양질의 데이터가 필요합니다. 또한 이러한 데이터들의 지도학습을 위해서는 라벨링 과정이 필수적인데요, 하지만 현실에서 데이터를 충분히 수집하기란 매우 어렵습니다. 또한, 수집된 데이터에 라벨링을 하는 과정도 시간과 노력이 많이 필요할 수밖에 없죠. 또한 의료 분야의 데이터의 경우 이러한 라벨링의 제약이 있는 경우도 분명 존재할 것입니다. 따라서 이러한 현상에 대응하기 위한 방법으로 비지도학습(Unsup..

    [CV] AlexNet(2012) 논문을 code로 구현 해보자 (Keras, PyTorch)

    [CV] AlexNet(2012) 논문을 code로 구현 해보자 (Keras, PyTorch)

    이번 포스팅에서는 지난번 포스팅했던 AlexNet을 Keras와 PyTorch로 각각 구현하고 적용해보고자 합니다. 사실 저는 Keras에 훨씬 익숙하기에, 메인 code들은 Keras로 작성하겠습니다. 이론 설명은 지난번 포스팅을 참고해주세요! 2021.06.23 - [딥러닝(DL) 📈/CV] - [Vision] AlexNet(2012)의 구조와 논문 리뷰 [Vision] AlexNet(2012)의 구조와 논문 리뷰 오늘은 Deep한 CNN의 발전에 가장 큰 영향을 준 AlexNet(2012)에 대해 포스팅하고자 합니다. AlexNet은 2012년에 개최된 ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 에서 우승을 차지한 아키텍처.. daeun-..

    [CV] AlexNet(2012)의 구조와 논문 리뷰

    [CV] AlexNet(2012)의 구조와 논문 리뷰

    오늘은 Deep한 CNN의 발전에 가장 큰 영향을 준 AlexNet(2012)에 대해 포스팅하고자 합니다. AlexNet은 2012년에 개최된 ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 에서 우승을 차지한 아키텍처로, 이전의 모델인 LeNet-5보다 더 Deep한 CNN 구조를 도입해 화제가 되었습니다. (여기서 LeNet-5은 정말 Simple한 초기 CNN 모델을 뜻합니다. 자세한 설명은 여기를 참고해주세요) LeNet-5의 등장 이후, 대용량의 이미지 data를 다루기 위해서는 더 큰 학습 역량(a large learning capacity)을 가진 아키텍처가 필요했습니다. 다음 그림은 LeNet-5과 AlexNet의 아키텍처를 비교해 나..

    [CV] ResNet - Residual Connection(잔차연결)

    [CV] ResNet - Residual Connection(잔차연결)

    📊📈논문 참조 0. 등장 배경 VGG16, 19 : 3*3 filter를 이용해 레이어의 깊이를 늘려 우수한 성능을 보였다. 특히 CNN 계열에서 레이어가 깊어지면 특징이 더 풍부해지기 때문에, CV 분야에서의 네트워크 깊이는 많은 장점을 가져와주었다. 사람들은 따라서 VGG에 따라 깊이가 깊어지면 더 높은 성능을 낼 것이라고 생각하였다. 하지만 점차 레이어가 깊어지면 Vanishing Gradient와 같은 문제가 발생함을 인지하였으며, 따라서 본 논문에서는 레이어의 깊이가 깊어질수록, input층에 가까운 은닉층이 희미해지기에 학습에 도움이 되지 않을수도 있음을 주장하였다. 본 논문은 레이어의 깊이에 따른 문제를 종합적으로 지적하고 있다. 1. 잔여블록 (Residual Block) 실제로 우리가 원..