본문 바로가기

DeepLearning/OCR_

(14)
[KR_OCR] 최종 Training 영어데이터로 재학습 된 crnn모델이 있기때문에, 성능을 높이기 위해 재학습 된 가중치 위에 다시 한국어데이터를 학습시킨다. 1> 데이터 준비 - 데이터 위치 : /data/KSIGN/ - 데이터 갯수 : Train 데이터 (1,249장), Validation 데이터 (312장), Total 데이터 (1,561장) - 데이터 출처 : AI_HUB, 구글과 네이버 간판데이터 크롤링 - 어노테이션 파일 직접 제작 (이미지 속 텍스트에대한 박스 정보) 2> 재 학습 이유 - 현재 한국어 데이터가 라벨마다 데이터 불균형이 심하기 떄문에 이를 보완하기 위해 기존 loss 계산법 변경했는데, 이를 기반으로 CRNN 영어데이터로 재학습을 시켰기 때문에 한국어 데이터로도 ..
[OCR] CRNN_Model에 사용한 다른 util.py crnn 학습 시 사용한 다양한 util에 대해서 소개 1. 한국어 데이터셋 부족 # 라이브러리 로딩 import scipy from scipy import ndimage import matplotlib.pyplot as plt - scipy를 사용해서 data augmentation을 할 예정 - crnn model에 grayscale로 들어가기 때문에, 다양한 방식을 사용하지않고 blur와 sharpening만 사용 할 예정 # 이미지 전처리 f = img print(f.shape) #32, 256 blurred_f = ndimage.gaussian_filter(f, 1) filter_blurred_f = ndimage.gaussian_filter(blurred..
[ENG_OCR] 최종 Training(focal_ctc_loss로 변경) 처음에 작업한 training코드에서 한국어를 추가하면서 loss계산 방식을 변경. 변경 된 loss를 사용하여 다시 coco text english 데이터를 학습 시킴 데이터 준비 - 데이터 위치 : /data/COCO_TEXT/train2014/ - 데이터 갯수 : Train 데이터 (14,708장), Validation 데이터 (3,424장) - 데이터 출처 : coco-text - 어노테이션 파일 존재 (이미지 속 텍스트에대한 박스 정보) 재 학습 이유 - 현재 한국어 데이터가 라벨마다 데이터 불균형이 심하기 떄문에 이를 보완하기 위해 기존 loss 계산법 변경 - 데이터 불균형에 적합한 focal_ctc_loss 사용 - 처음과 달리 학습시키는 ..
[KR_OCR] Training(하이퍼파라미터튜닝)_v2 데이터 셋과 모델, 그외 유틸등이 준비가 되면 학습을 시작 기본파라미터부터 시작해서 다양한 방법으로 학습시켜 loss를 최소로 줄인다 9. Training_CRNN_9 ## Dropout은 LSTM에만 적용하고, 활성화 함수를 LeakyRelu로 변경 ## 데이터셋에서 문제가 발생되서 오류를 수정했음 - 총 1084개의 데이터 ( Train : 867개, Validation : 217개) - optimizer : SGD( lr = 0.001, decay=1e-6, momentum=0.9, nesterov=True, clipnorm=5 ) - 손실 값 : Focal CTC loss ( a : 0.75, r : 0.5 ) - activation func : LeakyRelu - Dropout : LSTM -..
[KR_OCR] Training(하이퍼파라미터튜닝)_v1 데이터 셋과 모델, 그외 유틸등이 준비가 되면 학습을 시작 기본파라미터부터 시작해서 다양한 방법으로 학습시켜 loss를 최소로 줄인다 1. Training_CRNN_1 ## 딕셔너리(라벨)에 한글데이터셋만 존재 - 총 1084개의 데이터 ( Train : 867개, Validation : 217개) - optimizer : SGD( lr = 0.01, decay=1e-6, momentum=0.9, nesterov=True, clipnorm=5 ) - 손실 값 : CTC loss - 200 Epoch 30 Epoch 200 Epoch - 대략 30 epoch이 지나면 바로 오버피팅이 발생한다. - 최소 val_loss 값 : 13점..
[KR_OCR] 데이터수집을 위한 어노테이션 데이터 수집을 위한 어노테이션 _이미지 크롤링 후 TextBox와 Label을 달아주는 작업이 필요 이미지 데이터 수집 AI HUB에서 관광 이미지 데이터 셋 다운로드 http://www.aihub.or.kr/ AI 오픈 이노베이션 허브 AI 챗봇,안면인식 등 지능형 서비스 구현에 활용할 수 있는 지식베이스와 기계학습용 이미지 데이터를 제공합니다. www.aihub.or.kr >> 위의 링크에서 관광데이터셋의 매장 전경 데이터셋. >> 위의 파일 중 직접촬영의 매장전경, 크롤링의 매장전경 데이터셋을 사용하였다. >> 위의 파일 속 어노테이션은 간판이 아닌 매장에 대한 어노테이션이기 때문에 다시 어노테이션 작업이 필요하다. 자동크롤러 깃에서 가져오기 (GIT CLONE) - 구글, 네이버에서 간판을 검색 ..
[KR_OCR] 한국어데이터셋(imageWIthBox) AI HUB에서 제공한 데이터를 바탕으로 GTUtilily와 pickle 파일을 생성한 뒤, 텍스트박스가 잘 어노테이션 되어있는지 확인 하는 작업을 진행한다. 1. Loading Library import matplotlib.pyplot as plt import PIL import pickle import os import cv2 import numpy as np from data_KSign import GTUtility - 한국어 데이터셋으로 만든 GTUtility를 import 한다 2. Making Function def getTextbox(data_path = 'data/K-Sign', su = 2, quality = 'high'): if quality == 'high': gt_util = GTU..
[KR_OCR] 한국어학습을 위한 라벨 라벨 값이 알파벳 대문자와 소문자로 구성된 영어와 달리 새로운 라벨이 필요 학습에 사용하는 데이터를 활용하여 Label_dictionary 생성 1. K-Sign Data(AI HUB) 지난번에 AI HUB에서 다운로드한 어노테이션을 활용하여 Dict 생성 1> K-Sign데이터로 GTUtility 객체 생성 from data_KSign import GTUtility gt_util = GTUtility('data/K-Sign/HighQuality/', quality='high') - 앞 포스팅에서 만든 GTUtility를 사용하여 객체 생성하기 2> 생성된 객체의 text값 가져오기 text = gt_util.text - 생성 된 객체의 .text 안에 학습에 사용하는 이미지 데이터의 text값이 담겨져..