save the world

1주차 본문

Deep Learning Diary

1주차

함안조씨 2018. 1. 18. 19:19

<2018.01.18.목>

딥러닝 일기 작성 1일 차이며 Deblurring을 위해 Tensorflow를 사용하게 된 건 한 달이 되었다. 일기를 쓰게된 이유는 다른사람에게 내가 알게 된 것을 알리는 것보다는 딥러닝을 배우는데 있어서 개인적인 기억과 이해를 돕기 위함이다.
작성은 월요일부터 금요일까지를 하나의 글로 만들어 작성 할 것이다.

현재까지 진행 된 내용

Network 구조
전체적인 네트워크의 구조는 tensorflow-Tutorial-master에 05_Convolutional_net.py를 이용하여 시작했다. end to end 구조를 위해서 blur된 이미지를 인풋으로 넣었을때 deblur 된 이미지가 나오도록 한다.

Dataset
Deblurring을 위한 Dataset으로는 http://web.cecs.pdx.edu/~fliu/project/kernelfusion/All_Image_and_Kernels.zip 에서
 "All_Image_and_Kernels.zip" 파일을 받아서 사용중이다. 2976장의 이미지와 2976장의 커널이있으며 이미지의 사이즈는 모두 다르며 흑백이다. 커널은 대부분 19x19, 20x20 이다.
이미지 파일을 읽어오기 위해서 queue 방법을 사용했으며 파일이름을 차례로 또는 랜덤하게 불러와서 이미지를 queue의 순서에 맞게 읽는다.
읽은 이미지는 데이터타입을 float32로 맞추었다.
학습시 입력단에 latent 이미지를 넣으면 하나의 커널이 latent이미지를 blur시키고 blur된 데이터와 latent 이미지의 MSE가 같아지도록 학습시켰다.
현재 이미지데이터들을 불러오는데 queue 시스템을 이용하고 있는데 교수님의 의견으로는 사용하기 불편하고 번거로운 점이 많다고 하여 추후에 시간이 있거나 Dataset을 다루는데 문제가 있을시 "Dataset" 라이브러리를 사용하여 이미지와 커널을 불러오려고 한다. '17.Fec.02 현재까지 문제가 없어서 계속 사용중

Loss function, Optimizer, Initializer
loss function으로는 "tf.contrib.losses.mean_squared_error()" 를 사용했다. loss를 계산하기 위해서는 두 이미지 간의 크기가 같아야하는데 latent 이미지가 100x100이라면 blur이미지에서는 컨볼루션의 영향으로 테두리의 의미없는 정보때문에 100-커널사이즈+1 이 되어 이미지(matrix)크기가 다르기 때문에 latent이미지를 100-커널사이즈+1만큼 해주어 loss를 계산했다.
Optimizer는 "tf.train.MomentumOptimizer(learning_rate=0.001, momentum=0.01, use_nesterov=True)"를 사용했다. momentum을 얼마나 줄지 알아보다가 초기값으로 0.01을 주는것이 보편적이라 하여 우선 0.01로 설정하였다.(참고 https://stackoverflow.com/questions/36162180/gradient-descent-vs-adagrad-vs-momentum-in-tensorflow교수님께서는 momentum을 0.8 또는 0.9정도로 주라고 이야기하심.

Initializer로는 MSRA와 Xavier 둘 다 사용해보려고 했으나 현재는 Xavier를 사용하여 weight들을 초기화 시켰다. (참고 https://stackoverflow.com/questions/33640581/how-to-do-xavier-initialization-on-tensorflow)


'Deep Learning Diary' 카테고리의 다른 글

6주차  (0) 2018.02.19
4주차  (0) 2018.02.06
3주차  (0) 2018.01.31
2주차  (0) 2018.01.22
정리  (0) 2017.09.26