본문 바로가기

Development/OCR

EasyOCR 사용자 모델 학습하기 (2) - 학습데이터 생성

728x90
반응형

출처: https://www.jaided.ai/

 

첫 번째 단계인 '학습데이터 생성'부터 진행해 보도록 하겠다.

 

참고로, 이전 포스트에서는 전체 단계에 대해 설명했고 아래 링크를 통해 확인할 수 있다.

 

[Development/OCR] - EasyOCR 사용자 모델 학습하기 (1) - 시작하기 전에

 

EasyOCR 사용자 모델 학습하기 (1)

이번에는 EasyOCR에서 제공하는 API를 통해 OCR 기능을 이용할 때 사용되는 기본 신경망 모델이 아닌, 사용자가 직접 학습시키고자 하는 데이터를 준비해 학습하고, 원하는 성능의 모델을 만들어 사

davelogs.tistory.com

 


1. 학습데이터 생성

 

학습데이터 생성 단계는 앞에서 말한 것과 같이 TextRecognitionDataGenerator라는 오픈소스 프로젝트를 이용할 것이다. 해당 프로젝트와 관련된 자세한 내용은 아래 링크에서 확인하기 바란다.

 

프로젝트 소스코드: github.com/Belval/TextRecognitionDataGenerator

 

Belval/TextRecognitionDataGenerator

A synthetic data generator for text recognition. Contribute to Belval/TextRecognitionDataGenerator development by creating an account on GitHub.

github.com

프로젝트 매뉴얼: textrecognitiondatagenerator.readthedocs.io/en/latest/index.html

 

TextRecognitionDataGenerator’s documentation — TextRecognitionDataGenerator latest documentation

 

textrecognitiondatagenerator.readthedocs.io

 

참고로, 이 포스트에서는 위 프로젝트의 Python Official Package가 아닌, 소스코드를 내려받아 진행한다.

 

 

1.1 프로젝트 설치 및 개발환경 구축

 

다음 명령 구문을 통해 TextRecognitionDataGenerator 프로젝트 소스코드를 내려받고, 프로젝트에서 요구하는 환경을 구축한다.

 

# 소스코드 내려받기
$ git clone https://github.com/Belval/TextRecognitionDataGenerator.git

# 개발환경 구축
$ pip3 install -r requirements.txt

# 개발환경 구축 (수기 관련 문자열 지원 필요시)
$ pip3 install -r requirements-hw.txt

 

위 구문을 통해 개발환경 구축을 위한 패키지 설치가 제대로 이뤄지지 않는다면, 다음의 명령 구문으로 수동 설치할 수도 있다.

 

# 개발환경 구축을 위한 패키지 수동 설치
# requirements.txt에 명시된 패키지 버전의 의존성 문제로 인해 설치가 안 될 경우에만 수동 설치 추천
$ pip3 install pillow
$ pip3 install numpy
$ pip3 install requests
$ pip3 install opencv-python
$ pip3 install tqdm
$ pip3 beautifulsoup4
$ pip3 diffimg

# 수기 관련 문자열 지원 필요 시
$ pip3 install tensorflow
$ pip3 install matplotlib
$ pip3 install seaborn

 

1.2 학습데이터 생성하기

 

학습데이터를 생성할 때 사용하는 명령 구문은 거의 딱 하나로 처리가 가능한 반면, 해당 명령 구문이 지원하는 옵션들이 너무 다양하기에 우선 자주 사용할 만한 옵션들부터 정리했다.

 

No Arguments Description
1   -i, --input_file 기본으로 제공되는 학습 단어 모음(dictionaries)이 아닌, 직접 구축한 학습 단어 모음을 사용하고 싶을 때 사용
(단, 학습 단어 모음을 지정하게 되면, 그에 맞게 반드시  -l을 이용해 학습데이터 생성 언어도 변경 필요)
2   --output_dir 생성데이터를 저장하는 위치를 지정할 수 있으며, 기본값은 '/out' 디렉토리이다.
3   -c, --count 생성할 학습 데이터의 개수로, 기본값은 1,000
4   -l, --language 학습데이터의 언어를 변경하고자 할 때 사용
5   -t, --thread_count 학습데이터 생성 시 사용할 CPU 코어의 개수
6   -f, --format 생성되는 이미지 사이즈로, 기본값은 32 pixel
7   -ft, --font 생성할 학습데이터에 사용할 특정 폰트파일 지정 시 사용
(단, 여러 폰트로 생성하고자 할 경우 특정 폰트파일 지정을 할 필요가 없다)

 

728x90

 

1.2.1 기본 설정으로 생성하기

단, 기본 설정으로 생성하면 1,000개의 학습데이터가 생성되기에, 시간을 아끼기 위해 테스트로 10개만 생성해 본다.

아래와 같은 코드로 실행을 하게 되면, 10개의 학습데이터를 기본 언어인 '영어'로 생성하게 되며, 생성 결과는 '/out' 디렉토리에 저장된다.

 

# 학습데이터 생성 개수를 10개로 지정
$ python3 run.py -c 10

 

기본 학습데이터 생성 결과

 

결과 저장 디렉토리 '/out'에는 임의의 단어로 구성된 영어 문자열 데이터가 만들어졌다.

 

1.2.2 한글 학습데이터 생성하기

이번에는 원래 목적인 한글로 된 학습데이터를 생성해 보고자 한다. 이를 위해 다음의 명령 구문에서 필요한 옵션들을 정확히 설정한다.

(한글 학습데이터 생성 및 학습은 다음 포스트에서 학습에 사용할 프로젝트의 소스코드 수정이 불가피해서 일단 다음으로 미룬다)

 

# 언어설정(-l ko)
$ python3 run.py -c 10 -l ko

 

한글 학습데이터 생성 결과

 

1.2.3 최종 학습데이터 생성하기

이제 다음 포스트에서 진행하게 될 학습을 위해 최종 학습데이터를 넉넉히 1,000개 생성한다.

 

 

# 학습데이터 생성 개수(-c 1000), 언어(default) 설정
$ python3 run.py -c 1000

 

 

이제 학습데이터 생성은 끝났다. 

 

다음 단계 진행을 위해 아주 기본적인 학습데이터만 생성했지만, 여기서 사용한 프로젝트는 굉장히 다양한 옵션을 갖추고 있어 더 다양한 학습데이터를 생성할 수 있다. 시간이 된다면 별도의 포스트를 통해 소개해 볼 수 있기를 기대한다.


 

다음 단계는 본 포스트에서 TextRecognitionDataGenerator 프로젝트를 이용해 생성한 학습데이터는 학습을 위한 deep-text-recognition-benchmark 프로젝트에서 요구하는 데이터 구조가 아니기에, 단순한 데이터 변환 과정을 진행하고자 한다.

 

 

[Development/OCR] - EasyOCR 사용자 모델 학습하기 (3) - 학습데이터 변환

 

EasyOCR 사용자 모델 학습하기 (3) - 학습데이터 변환

이전 포스트에서 TextRecognitionDataGenerator 프로젝트를 이용해 생성한 학습데이터는 학습을 위한 deep-text-recognition-benchmark 프로젝트에서 요구하는 데이터 구조는 아니었고, 또한 바로 사용할 수 없었

davelogs.tistory.com

 

728x90
반응형