본문 바로가기

Deep Learning

(4) Advancing medical Imaging Informatics by Deep Learning-Based Domain Adaptation - Adversarial Training Domain Adaptation의 한 부류인 Latent Feature Space Transformatioon에 대한 네 번째 정리 글이다. 두 번째, 세 번째 글에서는 Divergence minimization에 대해 다뤘었고, 이번 글에서는 Adversarial training에 대해 정리하려고 한다. 논문에서는 Adversarial training에 대해 6 문장 정도만 할당해서 간략하게 언급하고 있는데 그 내용을 정리해보면 아래와 같다. DA를 위해 GAN의 경쟁적 학습 개념을 적용한 방법이다. generator와 discriminator를 경쟁적으로 학습시킨다. discriminator가 input image의 domain이 source인지 target인지를 구분 못하도록 generator를 학.. 더보기
(3) Advancing Medical Imaging Informatics by Deep Learning-Based Domain Adaptation - Maximum Mean Discrepancy 이전 글에서 나는 "다음 글에서는 Maximum Mean Discrepancy 와 Wasserstein distance에 대해 정리하도록 하겠다." 고 당차게 말했지만.. 와 Wasserstein distance라는 게 엄청나게 수학적 개념, 특히 확률에서 출발한 방법이더라. 확률에 대한 감이 어느정도 잡히고 나서야 제대로 이해할 수 있겠다는 생각이 들었다. 그러려면 단시간에는 불가능하니... 우선 Maximum Mean Discrepance (MMD)에 대해서만 정리하고자 한다. Maximum Mean Discrepancy (최대 평균 불일치) MMD도 두 데이터 분포 사이의 차이를 측정하는 방법이고, 그림에 나와있는 수식처럼 차이를 계산한다. 평균하고 빼고 제곱한 결과가 MDD 값이다. 무얼 평균? .. 더보기
0 ~ 255의 픽셀 값을 왜 0 ~ 1로 rescale하는 걸까? 제목 그대로다. CNN을 사용할 때면 보통 input image를 255로 나눠서 0~1 사이의 값을 갖도록 맞춘다. 왜 그러는 걸까? 정확한 근거를 못 찾아서 어디까지나 내 생각이지만, neural network가 feature scale에 예민한 모델이라 0 ~ 1로 맞춰주는 게 아닐까 싶다. 그리고 스쳐 지나가듯 읽은 사이트에서 255라는 값이 network 학습에 바로 사용하기에는 너무 큰 값이라서 0 ~ 1로 rescaling하는 것이라는 글을 본 기억이 있다. 제대로 된 결론은 못 내렸지만.. 뭐 그냥 그렇다고... 나처럼 궁금해하는 사람이 있을까 해서.. 정확히 알고 계신분 댓글 남겨주시면 감사하겠습니다! 더보기
(2) Advancing Medical Imaging Informatics by Deep Learning-Based Domain Adaptation - Divergence minimization Latent Feature Space Transformation에 대해 더 자세히 정리하는 두 번째 글이다. 적어도 4개 정도는 더 써야 원하는만큼의 지식을 챙겨갈 수 있지 않을까 싶다. 모르는 개념도 많고.. 어려워서 공부하는데도 꽤 오랜 시간과 노력이 필요할 것 같다. Latent Feature Space Transformation의 목적은 말 그대로 network를 통해 추출되는 feature들을 사용해서 DA를 하는 것이다. 예를 들어 CNN에서는 여러 개의 convolutional layer를 거쳐 feature map들이 생성될텐데, Latent Feature Space Transformation에서는 DA를 위해서 이 feature map들을 어떻게 해보겠다는 거다. 적절한 feature m.. 더보기
ImgaeDataGenerator.flow_from_directory을 이용해 이미지 증식하는 방법 Data augmentation은 Network의 robustness를 높이기 위해 거의 default로 적용하는 방법이다. 케라스에서는 ImageDataGenerator 클래스의 몇 가지 클래스 함수들로 이미지 로드 뿐만 아니라 augmentation을 지원한다. flow( ) flow_from_directory( ) flow_from_dataframe( ) 이번 글에선 flow_from_directory( ) 함수를 사용해서 augmentation을 하는 방법에 대해 정리하고자 한다. 그러기 위해선 일단 사용할 이미지가 필요하다. 저작권 문제에서 자유로운 https://pixabay.com/ 에서 마음에 드는 고양이와 강아지 사진을 각각 2장씩 골라 아래와 같은 폴더 구조로 저장하자. 여기서 이렇게 .. 더보기
keras.models.Model( ) 케라스에서 모델 설계를 할 때 Sequential( )을 주로 사용해왔다. 단순히 이전 layer의 output이 다음 layer의 input으로 들어가는 선형적인 경우에 사용해주면 아주 편리하기 때문이다. 그래서 단점도 존재한다. DenseNet( ) 같이 선형적 흐름이 아닌 모델 설계의 경우엔 사용하질 못 한다. keras.models.Model( )을 사용하면 Sequential( )의 불편한 점에서 벗어날 수 있다. 이 놈은 Multi Input / Multi Output을 지원한다. 위와 같은 흐름을 갖는 모델을 설계하고 싶다면 Model( )을 사용해주면 된다. import keras from keras.layers import Input, Embedding, LSTM, Dense from k.. 더보기
MNIST 분류 모델, 조금 다르게 실행해보자 / get_tensor_by_name( ) 일단 코드부터 보자. 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 32 33 34 35 36 37 38 39 40 41 import tensorflow ass tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('./mnist', one_hot = True) X = tf.placeholder(tf.float32, (None, 28,28,1), name = 'INPUT') Y = tf.placeholder(tf.float32, (None, 10)) is_training = tf.pla.. 더보기
RNN과 CNN 동시 사용 모델(RCNN / CRNN)의 개념 및 구현 RCNN 개념과 CNN 개념을 하나로 연결해서 설계된 모델이 있다. 연결 순서에 따라 아래와 같이 나뉜다. Convolutional Recurrent Neural Network (CRNN) Recurrent Convolutional Neural Network (RCNN) 1. CRNN CNN을 연산을 먼저 한 뒤에 각 채널을 나눠서 RNN에 입력하는 구조이다. CNN을 통해 Feature를 추출하고, 이를 RNN으로 분류하는 흐름이라 생각하면 된다. [ An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition ] 2. RCNN 여러 conv연산이.. 더보기