[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
- freeze = ['conv1_1', 'conv2_1', 'conv3_1', 'conv3_2', 'conv4_1', 'conv5_1',]
- 500 Epoch
< Training Process_3 >
< Training Graph >
500 Epoch
- activation fun를 leakyReulu로 변경하고 val_loss가 많이 떨어졌다.
- 대략 200번 에폭부터는 학습이 되지 않고 loss값이 일정하게 진행된다.
- 최소 val_loss 값 : 6점대
10. Training_CRNN_10
## 기존 셋팅값에 데이터 증식을 추가했다.
- 총 1085개의 데이터 ( Train : 868개, 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(0.05)
- Dropout : LSTM
- freeze = ['conv1_1', 'conv2_1', 'conv3_1', 'conv3_2', 'conv4_1', 'conv5_1',]
- 500 Epoch
- 배치사이즈 : 32
< CODE : Data Augmentation >
for w in range(len(words)):
su = random.randrange(1,4)
if su == 1: # Blurring
f = words[w][:,:,0]
blurred_f = ndimage.gaussian_filter(f, 1)
words[w] = np.expand_dims(blurred_f, axis=2)
elif su == 2: # Sharpening
f = words[w][:,:,0]
alpha = 50
blurred_f = ndimage.gaussian_filter(f, 1)
filter_blurred_f = ndimage.gaussian_filter(blurred_f, 1)
sharpened = blurred_f + alpha * (blurred_f - filter_blurred_f)
words[w] = np.expand_dims(sharpened, axis=2)
elif su ==3:
words[w] = words[w]
- 단어로 잘린 이미지가 들어오면 3가지 옵션 중 랜덤으로 적용된다.
- Blurring / Sharpening / Original
< Training Process_3 >
< Training Graph >
400 Epoch
- 데이터 증식을 하고 약간의 loss가 떨어졌다
- 대략 200번 에폭부터는 학습이 되지 않고 loss값이 일정하게 진행된다.
- 최소 val_loss 값 : 6점대