분류 전체보기 27

RNN, LSTM 에서 tanh 를 사용하는 이유

https://stats.stackexchange.com/questions/444923/activation-function-between-lstm-layers Activation function between LSTM layers I'm aware the LSTM cell uses both sigmoid and tanh activation functions internally, however when creating a stacked LSTM architecture does it make sense to pass their outputs through an activation stats.stackexchange.com RNN을 공부하면서 Activation Function으로 sigmoid보다 tanh를..

[개념 정리] Batch Normalization in Deep Learning - part 2.

논문에서 저자가 말한 것 처럼 Batch Normalization (BN)는 네트워크 레이어의 Internal Covariate Shift (ICS)문제를 해결하기 위해 나온 기법이다. BN을 이용하면 확실하게 학습 속도가 빨라지고 안정적으로 학습되는 것을 실험적으로 증명하였다. 하지만 실제로 BN은 ICS 문제를 해결한 것이 아니고 Optimization Landscape를 smooth 하게 만들기 때문에 좋은 성능을 낸다는 것이 2018년 NIPS에 논문으로 발표되었다. How Does Batch Normalization Help Optimization? Batch Normalization (BatchNorm) is a widely adopted technique that enables faster ..

[개념 정리] Batch Normalization in Deep Learning - part 1.

딥러닝을 공부하다 보면 자주 접하는 이론적인 내용이자 실제 구현에서도 라이브러리를 이용하여 쉽게 Layer로 추가하여 사용하는 Batch Normalization에 대해 알아보자. 개요 ICML 2015에 한 논문이 등장했다. "Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift" - Sergey loffe and Christian Szegedy[1] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift Training Deep Neural Networks is complicate..

BCEWithLogitsLoss 와 MultiLabelSoftMarginLoss 차이

(Binary / Multi-label / Multi-class) Classification 우리가 보통 Binary Classification(이진 분류) 문제를 풀 때 loss 계산을 위해 torch.nn.BCEWithLogitsLoss를 사용한다. torch.nn.BCELoss도 있는데 BCELoss에 sigmoid 함수를 함께 결합한 것이 BCEWithLogitsLoss다. 보통 이진 분류 모델의 output으로 logit 값이 나오기 때문에 loss 계산 전에 sigmoid를 거쳐야 하므로 해당 과정이 포함된 BCEWithLogitsLoss를 쓰면 편리하다. torch.nn.BCEWithLogitsLoss = torch.nn.BCEWithLoss + torch.sigmoid Binary Clas..

[개발팁] 'MultilabelStrarifiedKFold' : Multi-label classification 에 적용 가능한 strarification cross validator

StratifiedKFold in scikit-learn 우리가 보통 이진분류 같은 문제를 풀기 위해서 제공된 데이터셋을 학습/검증 셋으로 나눌 때 데이터셋의 class별 비율을 동일하게 가져가서 학습한다. 이 때, 주로 사용하는 것이 scikit-learn의 'StratifiedKFold' 함수인데 이것을 사용하면 K-fold 교차검증을 수행하면서 동시에 매 fold마다 데이터셋의 class 비율을 일정하게 나누어서 학습/검증 셋으로 나눠준다. 예를들어, '자동차, 자전거, 오토바이' class가 각각 1000개, 500개, 100개로 총 1600개로 이루어진 데이터셋을 StratifiedKFold 함수를 이용해서 5-fold로 나눈다면 매 fold마다 학습 데이터셋은 1280개 (자동차 800개, 자..

num_workers & pin_memory in DataLoader

pytorch를 이용해 딥러닝 모델을 학습시킬 때 custom dataset을 이용할 경우 torch.utils.data.Dataset으로 데이터셋을 정의하고(input data type, augmentation 등) torch.utils.data.DataLoader로 어떻게 데이터셋을 불러올 지(batch size, sampling 등) 정의한다. 학습을 시키다 보면 병목이 생기는 부분이 있는데 특히 데이터를 읽어서 가져올 때 시간이 오래 걸린다. 모델 학습을 하는데 시간을 써도 모자랄 판에 학습하기도 전에 불러오는 데이터에서 시간이 걸린다니... 즉, CPU를 이용해 데이터를 저장된 SSD나 HDD에서 읽어와 호스트의 메모리에 올리고 학습을 위해 GPU 메모리로 전달하는 과정에서 병목이 발생한다. 이..

[개발팁] Multi-label Classification에 쓸만한 전처리 모듈 'MultiLabelBinarizer'

Multi-label Classification problem 캐글에서 진행하고 있는 'Plant Pathology 2021 - FGVC8' competition을 진행하다가 찾게 된 유용한 모듈. Plant Pathology 2021 - FGVC8 Identify the category of foliar diseases in apple trees www.kaggle.com 해당 대회는 Multi-label Image Classification 문제로 사과나무 잎에 어떤 병에 걸렸는지 판별해야 한다. 제공되는 데이터셋의 label을 보면 문자열로 병명을 제공하고 있으며 건강할 경우 'healthy', 병에 걸려있는 경우 병 이름들을 공백으로 구분하여 보여주고 있다. 즉, 두 개 이상의 병에 걸려있는 경우..

[#05] Text Recognition Model 학습하기(deep-text-recognition-benchmark)

OCR 모델을 이용하여 약국이나 편의점에서 살 수 있는 일반의약품의 상품명을 인식해보는 과정을 담아보는 글. 지난 글에서는 AI Hub에서 제공하는 Text in the Wild 데이터셋을 가공하여 학습할 수 있게 전처리 과정을 수행하였다. 전처리된 데이터를 이용하여 한글을 인식할 수 있는 Text Recognition Model을 학습해보자. github.com/clovaai/deep-text-recognition-benchmark clovaai/deep-text-recognition-benchmark Text recognition (optical character recognition) with deep learning methods. - clovaai/deep-text-recognition-benc..

Deep Learning/OCR 2021.04.12

[#04] AI Hub 한국어 글자체 AI 이미지 데이터 전처리

OCR 모델을 이용하여 약국이나 편의점에서 살 수 있는 일반의약품의 상품명을 인식해보는 과정을 담아보는 글. 지난 글에서는 정부에서 관리하는 AI Hub 사이트에서 한글 이미지 데이터셋을 구할 수 있었다. 하지만 태깅 데이터 정보가 담겨있는 json 파일은 262Mb의 크기로 대용량이기 때문에 우리가 원하는 정보만 추출해야하며 또 OCR 모델을 학습시키기 위해 전처리를 할 필요가 있다. 데이터를 가공해 학습에 사용하자 데이터 분석 AI Hub에서 제공하는 Text in the Wild 데이터셋의 태깅데이터 textinthewild_data_info.json 파일은 크게 info, images, annotations, licenses 라는 key들로 이루어져있다. import json file = json..

Deep Learning/OCR 2021.03.31

[#03] 한글 데이터셋 수집하기

OCR 모델을 이용하여 약국이나 편의점에서 살 수 있는 일반의약품의 상품명을 인식해보는 과정을 담아보는 글. OCR 데이터셋은 어떻게 생겼을까? 앞서 언급한 OCR 대회를 주최하는 ICDAR 학회에서 제공하는 데이터셋들을 둘러보자. 대회 Task별로 데이터셋의 형태는 다양하다. 내가 그중에서 찾고자 하는 것은 Text Recognition Task의 데이터셋이다. 2015년에 열린 ICDAR IC(Incidental Scene Text) 대회의 Task 4.3 Word Recognition을 한 번 보자. IC15 Dataset(Task 4.3) 보통 Text Recognition의 데이터셋은 단어가 잘린(cropped)형태로 이미지 데이터와 이미지 파일 이름과 매칭 되는 단어 정답('gt.txt') 형..

Deep Learning/OCR 2021.03.31