728x90

DEEPLEARNING 23

[Pytorch] Learning Rate Scheduler 커스텀하기

CycleGAN을 구현하던 도중 learning rate decay를 linear하게 주었다는 부분을 확인할 수 있었다. 그러나 내가 찾아본 바로는 torch 내의 learning rate scheduler는 linear decay를 적용하는 scheduler가 없었다 (아마 그런 scheduling이 좋지 않으니까 구현이 안되어 있는 게 아닐까 한다). 하지만 논문을 최대한 반영해서 구현해보고 싶어서 직접 구현해보기로 했다. 코드 구현 자체는 어렵지 않으나 pytorch 내에서 어떻게 learning rate scheduler가 작동하는지의 원리를 파악할 필요가 있었다. _LRScheduler 파이토치 내에 구현되어 있는 scheduler의 베이스 클래스이다. """ code reference: htt..

[Generative Models] Image-to-Image Translation with Conditional Adversarial Networks (2017)

Image-to-Image Translation with Conditional Adversarial Networks 이번에 리뷰할 논문은 2017년 Image-to-Image(I2I) Translation 분야에 범용적으로 적용이 가능한 모델인 pix2pix를 제안한 논문입니다. 기존의 연구는 I2I translation task의 각 sub task에 특화된 loss를 제안하는 경우가 다수였습니다. 하지만 이 논문에서는 cGAN Loss와 L1 Loss를 함께 적용하면서 다양한 I2I translation task에 적용 가능한 네트워크를 제안하였고, 양질의 생성 산출물을 보여주었습니다. 보다 범용적이고 간단한 I2I translation 네트워크를 제안했다는 것이 이 논문의 key contributi..

[Contrastive Learning] Contrastive Learning이란

오늘은 contrastive learning에 대해 정리를 해보겠습니다. 처음에 facenet에서 triplet loss를 접하고 흥미 있는 분야라고만 생각해왔는데 self-supervised learning 분야에서 많이 발전을 이룬 것 같습니다. 해당 포스트에서 정리한 내용은 survey 논문인 "Contrastive Rerpesentation Learning: A Framework and Review"를 읽고 정리한 내용입니다. 하기한 내용에 질문 혹은 오류가 있을 경우 댓글 부탁드립니다. Contrastive Representation Learning: A Framework and Review 포스트의 목차는 다음과 같습니다. 이번 포스팅에서는 2. Contrastive Learning Archi..

[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

[Pytorch] 실험 재현(reproducibility)을 위한 실험 환경 randomness 제어하기

실험을 여러번 했을 때 똑같은 결과를 보장하는 것을 '재현성(reproducibility)' 라고 한다. 파이토치에서 실험 재현성을 보장하기 위해서 해주어야 하는 사전 절차는 다음과 같다. reproducibility 실험 재현성을 위해서 제어해야할 randomness는 다음과 같다. 1. torch의 randomness 2. torch.cuda의 randomness - multi-gpu를 사용할 경우에는 manual_seed_all로 제어해줘야 함 - pytorch document에 의하면 torch.manual_seed로 모든 device에서의 randomness를 제어 가능한 것으로 나오지만 다른 코드를 더 찾아보니 이 부분도 제어해주기에 추가 3. torch.backends.cudnn (bench..

[CV] OCR - 글자 영역 검출

upstage 이활석님의 부스트캠프 AI Tech OCR 강의를 듣고 정리한 글입니다. 1109 OCR 글자 객체 고밀도 위치 잡는 것 only (classification은 필요가 X → objectness만 잡는다고 생각하면 쉬움) 글자 영역 표현법 직사각형 (RECT) : (x1, y1, width, height) or (x1, y1, x2, y2) 직사각형+각도 (RBOX, Rotated Box) : (x1, y1, width, height, $\theta$) or (x1, y1, x2, y2, $\theta$) 사각형 (일반 사각형; QUAD, Quadrilateral) : (x1, y1, ..., x4, y4) →첫 글자의 좌상단이 (x1, y1) 그 후 시계방향으로 다각형 (polygon) ..

728x90