DeepLearning/OCR_
[OCR] CRNN_Model에 사용한 다른 util.py
new_challenge
2019. 5. 9. 15:46
반응형
crnn 학습 시 사용한 다양한 util에 대해서 소개
1. 한국어 데이터셋 부족
< Data Augmentation >
# 라이브러리 로딩
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_f, 4)
alpha = 50
sharpened = blurred_f + alpha * (blurred_f - filter_blurred_f)
- 이미지를 불러와서 crop_word함수를 사용해 현재 텍스트만 있는 이미지 상태라고 가정하고 시작
- f는 원본 이미지
- blurred_f는 원본 이미지에 블러 처리
- sharpened는 원본 이미지에 샤프닝 처리
# 결과 확인하기
plt.figure(figsize=(12, 4))
plt.subplot(131)
plt.imshow(f, cmap=plt.cm.gray)
plt.axis('off')
plt.subplot(132)
plt.imshow(blurred_f, cmap=plt.cm.gray)
plt.axis('off')
plt.subplot(133)
plt.imshow(sharpened, cmap=plt.cm.gray)
plt.axis('off')
plt.tight_layout()
plt.show()
- matplotlib을 활용하여 위의 3가지 형태의 이미지를 확인한다.
- 위와 같이 : 원본 > 블러 > 샤프닝 순서로 이미지가 출력된다.
- 우리는 위 코드를 사용하여 실제 이미지가 모델에 들어갈때 랜덤하게 위의 augmentation처리가 되도록 할 예정
crnn_data_fcl_aug_merge.py의 부분
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]
- crop_words함수를 통과하고 나온 이미지들이 위의 data augmentation을 거친다.
반응형