본문 바로가기
Deep Learning

Kaggle - Denoising Dirty Documents

by Think_why 2019. 10. 15.

Kaggle에 있는 "Denoising Dirty Documents" 프로젝트를 시작했다. (Pytorch로 진행)

https://www.kaggle.com/c/denoising-dirty-documents 

 

컨셉은, OCR(Optical Character Recognition)을 돕는 이미지 Noise 제거 컨셉이다. 

커피 자국이나, 그을린 자국, 구겨짐 등이 Train data로 주어진다. 

그리고, 스캔본처럼 깨끗하게 가공된 Train_cleaned 데이터도 주어진다. 

아래의 images는 Train data, labels는 Train_cleaned를 imshow한 결과이다.

 

 

위의 144 개 Training set와, 추가로 72 개의 Test set이 주어진다. 

상하 & 좌우 반전(확률 0.6)으로 Data Augmentation을 진행했고, (144 -> 320)

Convolutional AutoEncoder 형식으로 문제를 해결했다. 

간단하게 해결하기 위해 U-net 구조에서 residual을 뺀 구조라고 볼 수 있다. 

먼저 Conv Layer와 MaxPooling Layer로 Encoding을 진행하고, 

ConvTranspose Layer(MaxPool의 반대역할)와 Conv Layer로 Decoding을 했다. 

 

Learning rate = 1e-03 이고, Training Loss를 보면, 학습은 괜찮게 된 것 같다.

Steps = 316(train data) / 4(batch) * 30(epoch) = 2370 Steps

 

 

 

아래의 그림은 차례대로 [Train / Train_cleaned / 나의 생성 결과] 이미지이다.

 

 

Public Score는 0.17875인데, 높은 점수는 아니지만 어느 정도 해결은 한 스코어이다.  

Epoch에 따른 학습 진행 이미지와, 최종 학습 코드는 아래 Github의 ipynb 파일에 있다.

(Github에서 자주 ipynb rendering 오류내서 nbviewer로 대체)

 

>https://nbviewer.jupyter.org/github/wlstyql/Kaggle/blob/master/Denoising_Dirty_Documents/AutoEncoder_pytorch.ipynb

 

Jupyter Notebook Viewer

 

nbviewer.jupyter.org

 

728x90

댓글