728x90

전체 글 114

[DL] Convolution 연산의 output size에 대한 이해

convolutional layer의 output size 공식에 대한 제 나름의 이해를 간단하게 정리한 글입니다. The output size of a Convolutional layer [가정] 2-D discrete convolutions (커널 사이즈 2-D) input이 정사각형 (h == w) kernel이 정사각형 stride의 경우 각 축에 동일하게 적용됨 zero padding의 경우 각 축에 동일하게 적용됨 dilation은 적용하지 않음. [공식] $$o = \lfloor \frac{i+2p-k}{s} \rfloor + 1 $$ $i$ = a size of input $p$ = amount of padding $k$ = kernel size $s$ = stride $o$ = outpu..

DeepLearning/Basic 2022.05.03

[Paper Review] Very Deep Convolutional Networks for Large-Scale Image Recognition (VGGNet)

이전에 정리해두었던 vgg net review를 올립니다. 간단한 구조를 채택하여, 성능이 보다 높았던 inception 보다 더 많이 활용되었던 구조입니다. 지금도 backbone으로 종종 쓰이나 resnet보다는 그 활용성이 떨어집니다. 기존의 network 깊이를 19 layer까지 쌓음으로써 성능을 끌어올렸다는 점에서 주목을 받았고, 그 비법은 작은 필터 사이즈의 convolution layer를 여러 개 쌓은 것입니다. 자세한 내용은 후술하겠습니다. 목차는 다음과 같습니다. Context Introduction VGG Net 구조 Classification Framework Experiments Conclusion 1. Introduction ILSVRC 2014 second-winner 대규모..

DeepLearning/Basic 2022.05.01

[Generative Models] Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks (2017)

이번에 리뷰할 논문은 CycleGAN으로, 2017년 ICCV에 발표된 논문입니다. inverse mapping과 cycle consistency loss를 통해 unsupervised image-to-image translation의 성능을 끌어올린 아키텍처로 인용횟수 또한 12000회를 웃돕니다. 학습 과정의 안정성을 개선할 뿐 아니라 unsupervised learning으로 아키텍처의 generality를 높였다는 점에서 그 기여가 큰 연구입니다. 하기한 내용에 부족한 부분 혹은 오류가 있다면 댓글로 언제든 말씀 부탁드립니다. 1. Introduction image-to-image translation: 이미지 쌍을 활용해 입력 이미지와 출력 이미지 간의 mapping을 학습 하지만, 이미지 쌍 ..

[Generative Models] Unsupervised Representation Learning With Deep Convolutional Generative Adversarial Networks (2016)

오늘은 DCGAN 논문을 리뷰해보겠습니다. DCGAN의 경우에 구조나 사용된 기법들이 아주 새롭다고 할 수는 없지만 representation learning으로서 GAN이 어떻게 기능하는지 실험을 진행했다는 점에서 흥미롭게 볼 수 있었습니다. 하기한 내용은 혼자 공부하면서 적은 것이라 틀린 부분이 있다면 말씀 부탁드립니다! 1. Introduction GAN을 학습시키면서 good image representation을 구축하는 방법을 제안함. 이후 Generator(이하 G)와 discriminator(이하 D) 네트워크의 일부분을 지도학습의 feature extractor로 재사용하는 방법을 제안. 기존 GAN의 경우에는 불안정한 학습으로 인한 이상한 출력을 생성한다는 단점이 존재했음. (DCGAN..

[Generative Models] Generative Adversarial Networks (2014)

Generative Adversarial Networks (NIPS, 2014) 무려 8년 전에 나온 논문이지만, 현재 생성 모델의 기초가 되고 있는 Generative Adversarial Networks (이하, GAN)의 논문을 읽고 리뷰를 해보았습니다. 혼자 공부하는 용도로 적은 것이 크고 논문 이외에 별도의 참고자료는 참고하지 않았으므로 흐름 상 놓친 부분 혹은 하기한 사항에 오류가 있을 시 댓글 부탁드립니다. 1. Introduction deep learning이 Discriminative task에서 괄목할 만한 성과를 보이고 있음 그러나 generative models에서는 크게 다음과 같은 두 가지 이유 때문에 deep learning의 적용이 어려움 1) difficulty of app..

DeepLearning/Basic 2022.04.05

[Docker/python] 도커 내에서 파이썬 버전 업그레이드

도커 이미지 내의 파이썬과 실제 프로젝트에 필요한 파이썬의 버전이 다를 수 있다. 이 경우에 파이썬의 버전을 업그레이드하는 방법을 정리해보고자 한다. 아래 서술할 내용은 파이썬의 버전 업그레이드보다는 여러 개의 버전을 한꺼번에 관리하는 것에 더 가깝다. 정리하자면, 파이썬 상위 버전을 설치한 후 python 커맨드를 날렸을 때 어떤 버전의 파이썬을 실행할 것인지를 상위버전으로 설정해주면 된다. 파이썬 상위버전 설치 참고로 bash 명령어는 root 사용자일 때는 sudo를 사용하지 않는다. 아래는 root 계정이 아님을 가정하고 명령어를 작성하였다. sudo apt update sudo apt install python3.7이렇게 설치를 한 후에 python --version으로 python 버전을 확인..

[python] install error (disutil 관련)

ERROR: Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall. pip -r requirements.txt를 수행하다가 맞닥뜨린 에러. 기존의 패키지를 uninstall하고 다시 새로운 버전을 설치하는 과정에서 어떤 파일을 지워야할지 결정할 수 없기 때문에 발생하는 installation 에러이다. 나같은 경우엔 PyYAML과 Cython 등을 설치하면서 발생했다. 기존 설치되어있던 라이브러리가 있다면 충돌하면서 발생할 확률이 높다 (나같은 경우엔 ..

[ML/DL] 쿨백-라이블러 발산 (Kullback-Leibler Divergence)

쿨백-라이블러 발산은 머신러닝이든 딥러닝이든 공부를 지속해가다보면 심심치 않게 만나볼 수 있는 개념이다. 공부를 할 때마다 위키피디아를 들락날락하지 않도록 블로그에 정리해보고자 한다. Kullback-Leibler Divergence (KLD) KLD는 knowledge distillation, variational inference 등 두 개의 분포 간의 차이를 계산할 때 사용되는 measure이다. 정의 X가 이산확률변수일 경우 $$D_{KL}(P||Q) = {\sum_{i} P(i)\ log\frac{P(i)}{Q(i)}}$$ X가 연속확률변수일 경우 $$D_{KL}(P||Q) = {\int_{x} p(x)\ log\frac{p(x)}{q(x)}} $$ 의미 위의 정의를 풀이하자면, 어떠한 확률분포..

DeepLearning/Basic 2022.03.25

[VSCode / jupyter] VSCode에서 conda 환경의 주피터 커널 추가하기

이야기에 앞서 VSC에서 코드를 주로 작성하는데 프로젝트마다 다른 conda 가상 환경을 사용하는 것을 선호한다. EDA를 하는 경우에는 jupyter notebook 환경에서 하는 게 편한데, VSC에서도 extension만 설치한다면 jupyter를 무리없이 사용할 수 있다. 다만 가상환경을 분리하는만큼 주피터 커널 또한 가상환경의 커널을 사용해야 하는데 이런 부분에서 종종 문제가 발생했다. (커널을 생성해줬는데 주피터에서는 인식하지 못하는 경우 등) 이 부분을 해결한 과정을 간단히 적어보고자 한다. 실행 환경 Ubuntu 20.04 (WSL) VSCode python 3.9.7 conda 4.11.0 VSCode 내 관련 extension 설치 python과 jupyter 관련 extension을 ..

[python] 프로그래머스 - 전염병

문제 설명 m x n 크기인 사무실이 있습니다. 사무실에는 전염병에 걸린 직원이 있는데, 이 직원은 매일 상하좌우로 병을 퍼트려 다른 직원을 감염시킵니다. 단, 백신을 접종한 직원은 면역력이 있어 감염되지 않습니다. 예를 들어 2x4 크기 사무실에서, 병에 걸린 직원의 위치가 (1,4), (2,2)이고 백신을 맞은 직원의 위치가 (1,2)입니다. 이때 백신을 맞은 직원을 제외한 모든 직원이 병에 감염되기 까지는 이틀이 소요됩니다. 사무실의 크기 m, n과 병에 걸린 직원의 위치 infests, 백신을 맞은 직원의 위치 vaccinateds가 매개변수로 주어집니다. 이때 백신을 맞은 직원을 제외한 모든 직원이 병에 감염되기까지 며칠이 걸리는지 return 하는 solution 함수를 완성해주세요. 제한 사..

728x90