본문 바로가기

전체 글

나도 블로그에 광고 붙였다..! 회사 일이 바빠서 블로그를 제대로 관리하지 못 했었는데 그래도 평일에 평균적으로 300명이나 되는 분들이 방문해시더라. 도움이 되었다는 댓글도 달리고.. '그래 내가 머리 깨가며 공부한 내용들 정리하면 다른 분들에게 조금이라도 도움이 되겠지' 라는 생각으로 시작했던 과거를 생각하며.. 정신차리고 틈틈히 정리해나가려고 한다. 그러면서 동시에 광고도 붙였다ㅎ 많은 수입이 발생하진 않겠지만 글을 계속 쓰다보면 방문자 수도 올라갈거고... 그러면 수입도 조금씩 오를거고 그러면 연말에 고기 썰러 한 번은 갈 수 있지 않을까....? 싶은 마음에 나도 가독성을 해치지 않는 범위에서 광고를 넣어봐야겠다. 광고 한 번 보고 갈 수 있잖아? 이런 느낌으로ㅎㅎㅎ 지금은 AdFit / AdSense 연동했고, 연동하고서는 .. 더보기
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연산이.. 더보기
Tensorflow 개념 정리) 텐서, 변수, 오퍼레이션, 계산 그래프 MNIST 분류 문제를 공부할 때만 해도 사용법 익히기에 급급했기 때문에 tensorflow를 제대로 이해하고 다루진 않았었다. 일반적인 파이썬 코드 구현하고는 다르게 tensorflow는 계산 그래프에 노드( = 연산, 계산, 오퍼레이션 )을 추가하고 session을 통해 실행해줘야 하는 구조라고만 이해하고 넘겼다. tf.placeholder( ), tf.layers.conv2d( ), tf.train.AdamOptimizer( )와 같은 함수들로 계산 그래프를 그려가며 모델을 설계하고, tf.Session( ).run( )으로 그려진 계산 그래프를( = 설계된 모델을 ) 실제로 실행하는 구조라고만 이해했었다. + X = tf.placeholder( tf.float32, None) 의 경우, X는 tf.. 더보기