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로 대체)
'Deep Learning' 카테고리의 다른 글
데이터 사이언스 스쿨 - 딥러닝 (0) | 2019.11.12 |
---|---|
if(kakao) dev 2019 - README.ocr 정리 (0) | 2019.10.26 |
GAN(Generative Adversarial Nets)을 파악해보자! (0) | 2019.10.15 |
딥러닝 전문가와의 대화 (0) | 2019.10.15 |
Kaggle 입문기 (0) | 2019.10.15 |
댓글