일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 백준 알고리즘
- simclrv2
- 딥러닝손실함수
- UnderstandingDeepLearning
- mme paper
- adamatch paper
- CoMatch
- BYOL
- tent paper
- semi supervised learnin 가정
- Pix2Pix
- GAN
- Meta Pseudo Labels
- shrinkmatch paper
- conjugate pseudo label paper
- WGAN
- CGAN
- dann paper
- Pseudo Label
- CycleGAN
- ConMatch
- mocov3
- 최린컴퓨터구조
- 컴퓨터구조
- dcgan
- cifar100-c
- shrinkmatch
- SSL
- Entropy Minimization
- remixmatch paper
- Today
- Total
목록딥러닝 (76)
Hello Computer Vision
논문을 읽는 도중 subsampling이란 말이 계속 등장하는데 정확하게 설명할 수 없다고 생각해 공부해보려고 한다. 내용에 대한 출처는 밑에 적어두었습니다. subsampling말고 sampling이란 말을 우리가 흔히 들어봤다. 제한된 데이터 표본 안에서 어떤 식으로 sampling하는지도 성능에 중요한 요소가 될 수 있다. 그렇다면 subsampling이란 무엇일까? 우선 예시를 들어 설명해보자면, 한 이미지에 대해서 가벼운 변화가 일어나더라도 우리는 쉽게 A라는 것을 알 수 있다. 그 이유는 조그만한 변화가 일어났더라도 전체적으로 A의 형상을 띄고있기 때문이다. 그렇다면 컴퓨터는 이것을 A라고 이해할 수 있을까? 이해할 수도 있지만 못할 수도 있다. 정확하게 분류하기 위해 작은 변화, 위치 이동 ..
이번에 object detection관련 공부를 하면서 custom dataset을 정의하는 과정에서 ->, :를 발견하여 공부해보려고 한다. 지금까지는 클래스를 정의하면서 따로 써본적이 한번도 없어서 일단 신기했다. ->(화살표)의 쓰임 함수 리턴 값의 주석역할을 한다. def myfunction(x) -> str: return x, type(x) print(myfunction(3)) (3, ) 다음과 같이 주석으로 str이 리턴될 것이라고 알려줘도 에러값이 뜨지않는 것을 확인할 수 있다. : (콜론)의 쓰임 화살표가 (->)가 리턴값에 대한 주석이었다면 콜론은 함수 매개변수에 대한 주석을 나타낸다 def myfunction(x : int) -> str: return x, type(x) print(my..
ConvNextV2 관한 논문을 읽고 있는데 저자들이 GRN을 적용시켰다고 하는데 이를 한번 가볍게 이해해보고자 기록으로 남기려 한다. (다른 분들의 도움을 받을라 했는데 다른 포스팅들이 없어 순전히 논문 설명만을 기대었습니다) 이전에 AlexNet에서 LRN(Local Response Normalization)이 쓰인적이 있던 것이 기억났다. 기억이 잘 나지않아 다시 한번 살펴봤는데 활용요소는 비슷한 거 같아서 GRN이해를 위해 설명 해보려고 한다. LRN이란? Local Response Normalization의 줄임말이다. 다른 분들의 글들을 보면 다음과 같은 그림으로 설명한다. 그림을 잘 보면 검은색 사각형들이 다수 포진해있는걸 확인할 수 있는데 이러한 검은색 도형들로 인해 사이사이에 있는 회색 ..
최근 ViT라든가 CNN논문들을 살펴보면 ReLU 가 아닌 GELU를 사용하는 경우가 많은데 한번 살펴보려고 한다. (논문에서 처음 보았을 때는 오타인줄 알았다..) 일단 파이토치 공식문서에 올라와있는 공식들을 한번 살펴보면 다음과 같다. $GELU(x) = 0.5 * x * ( 1 + Tanh(\sqrt{(2/\pi)} * (x + 0.44715 * x^{3})))$ 상당히 직관적이었던 ReLU와는 달리 조금 복잡한 것을 확인할 수 있다. 적용되는 기울기를 살펴보면 ReLU와 비슷하지만 x가 음수인 부분에서 약간의 기울기가 발생하며 값이 낮아질수록 0으로 수렴함을 알 수 있다. GELU함수는 ReLU, dropout, zoneout 함수들의 특징들을 조합하여 유도되었다고 하는데 ReLU함수가 x부호에 ..
pytorch를 사용하다 보면은 클래스를 정의할 때 nn.Module을 상속받고 다음 코드에 super().__init__() 사용할 때가 많다. 일단 super() 를 쓰는 이유에 대해서는 상위 클래스를 상속받기 위해서는 먼저 초기화를 해줌으로써 이 상위 클래스의 속성을 sub class가 받아오도록 하는 것이다.(sub class : 현재 내가 정의하는 class) nn.Module같은 경우 우리가 많이 쓰는 Linear, Conv2d 같이 nn.Module의 instance들을 sub class내에서 자유롭게 사용할 수 있는 것이다.
이번에 ViT를 공부하는 와중에 텐서를 조금 더 내 자유자재로 만들 수 있는 라이브러리를 발견했다 그건 바로 einops! terminal 에 pip install einops 하면은 금방 설치할 수 있다. 한번 코드 예시를 통해 알아보겠다. 매우 직관적이므로 쉽게 알 수 있다. from einops import rearrange import torch.nn as nn import torch img = torch.rand(8, 224, 224, 3) print(img.shape) print(rearrange(img, 'b h w c -> b c h w').shape) print(rearrange(img, 'b h w c -> (b c) h w').shape) print(rearrange(img, 'b h..
모델공부를 하는 도중 생소하지는 않았지만 완전히 이해하기는 힘들어서 정리해보려고 합니다. 뒤쪽에 많은 분들이 헷갈릴만한 부분들에 대해서 최대한 정리해보았습니다. 출처 : 영상자료,블로그자료 우리가 사용하는 일반 convolution을 본다면 다음 이미지와 같다. 이미지의 $D_{F}$는 input값의 h,w를 뜻하고 $D_{k}$는 kernel의 크기를 뜻한다. 만약 (3,64,64)크기의 input이 있고 이를 16깊이의 채널 깊이를 만들고 싶다면 (3, $D_{k}, D_{k}$) 의 커널 16개의 계산을 수행하면 되는 것이다.(그림 참조) 그렇다면 연산량은 어떻게 될까? 연산에 사용되는 커널크기, input값의 채널크기, output값의 이미지크기, 원하는 깊이의 채널크기가 될 것이며 여기서 사용된..
이번에 CycleGAN관련하여 팀원들과 모델을 만들었는데 데이터셋은 각각 다르고 같은 코드를 사용했었다. 내 데이터셋은 이미지의 높이, 너비가 같았고 한 팀원의 데이터셋은 celebA였고 이 데이터셋의 크기는 178 x 218이다. 그리고 코드 내 전처리하는 과정에서 transforms.Resize(256) 코드가 있었고 내 데이터셋에는 적용되었지만 팀원의 데이터셋에는 오류가 났다.(전처리 목적 : (256 x 256)크기로 만들기) 이유를 찾기 위해 일단 document를 찾아보았다. Resize document 만약 input값으로 받은 이미지의 높이, 너비가 같다면은 int값 하나를 그냥 주어도 해당 값으로 잘 변환이 되지만 만약 높이와 너비가 다르면 다르게 공식이 적용되는 것이었다. 이 경우를 c..