Skip to content

lastdefiance20/Korean-Sign-OCR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SW중심대학 OCR 경진대회

Solution Overview

overview image

Team member

정재윤

Code Running Environment

run at local

use docker image of paperspace gradient Scratch docker https://hub.docker.com/r/paperspace/gradient-base

docker tag
pt112-tf29-jax0314-py39-20220803

모델 학습

Data preprocess

https://dacon.io/competitions/official/235970/overview/description 대회 데이터셋 내부 Train, Test 이미지 및 csv 파일을 사용함.

open.zip을 data_process 폴더 내부에 압축 해제한다.

이후 AI HUB에서 제공하는 야외 실제 촬영 한글 이미지 데이터셋에서 가로형간판1, 가로형간판2, 세로형간판, 돌출간판, 책표지 데이터 전부 및 train 라벨 파일을 다운받고, data_process 폴더 내부에 다음과 같이 이름을 바꾸어 압축해제한다.

https://www.aihub.or.kr/aihubdata/data/list.do?currMenu=115&topMenu=100&searchKeyword=%ED%95%9C%EA%B8%80%20%EC%9D%B4%EB%AF%B8%EC%A7%80

[원천]Training_간판_가로형간판_원천데이터1 -> 가로형간판_원천데이터1

[원천]Training_간판_가로형간판_원천데이터2 -> 가로형간판_원천데이터2

[원천]Training_간판_세로형간판_원천데이터 -> 세로형간판_원천데이터

[원천]Training_간판_돌출간판_원천데이터1 -> 돌출간판_원천데이터1

[원천]Training_책표지1 -> 책표지1

[원천]Training_책표지2 -> 책표지2

[원천]Training_책표지3 -> 책표지3

[라벨]Training -> 폴더없이 압축풀어서 1.간판과 2.책표지 폴더가 data_process 폴더 내부에 위치하도록 한다.

데이터를 모두 data_process 폴더 내부에 세팅했다면

Cutter.ipynb 

파일을 실행해 data_process 작업을 실행한다.

이후 train2 폴더에는 train image들이, gt_train과 gt_validation에는 train/valid label 정보와 img path가 저장된다. (txt 파일은 utf-8로 인코딩되어야함)

TRBA 모델 학습하기

deep-text-recognition-benchmark 폴더 내부 data 폴더 안에 Data preprocess 폴더 내부 전처리를 거친 이미지가 담긴 train2 폴더, gt_train, gt_validation 파일을 옮긴다.

이후 코드를 돌리기 전 우선 require 라이브러리를 설치한다.

pip install lmdb pillow nltk natsort fire

이후 train 데이터셋과 valid 데이터셋을 LMDB 파일로 생성한다. (터미널 경로가 deep-text-recognition-benchmark 내에 있어야함.)

python create_lmdb_dataset.py --inputPath data/ --gtFile data/gt_train.txt --outputPath data_lmdb/train
python create_lmdb_dataset.py --inputPath data/ --gtFile data/gt_validation.txt --outputPath data_lmdb/validation

이후 학습한다.

CUDA_VISIBLE_DEVICES=0 python3 train.py --train_data data_lmdb/train --valid_data data_lmdb/validation --Transformation TPS --FeatureExtraction ResNet --SequenceModeling BiLSTM --Prediction CTC --data_filtering_off

120000 epoch 학습이 완료된 pth 파일을 사용한다.

모델 예측

CRAFT 모델을 사용한 단어 자르기

네이버에서 학습한 pretrained weight를 사용한다.

https://drive.google.com/file/d/1Jk4eGD7crsqCCg9C9VjCLkMN3ze8kutZ/view

https://drive.google.com/file/d/1XSaFwBkOaFOdtk4Ane3DFyJGPRw6v5bO/view

두 pth 파일을 받아서 CRAFT-pytorch 폴더 내부에 weights 폴더를 새로 만들고, 그 안에 집어넣는다.

CRAFT-pytorch 폴더 내부에 open.zip에 들어있던 test 폴더를 옮긴다. 이후 모델로 들어가서 코드를 돌린다. (터미널 경로가 CRAFT-pytorch 내에 있어야함.)

python test.py

이후 글자가 잘려진 사진인 result 폴더가 생성된다.

TRBA 모델로 최종 예측

deep-text-recognition-benchmark 폴더 내부에 sample_submission.csv를 위치한다. 이후 deep-text-recognition-benchmark 폴더 내부 data 폴더에(train2 등이 위치한 폴더) CRAFT에서 사용한 test 폴더와, result 폴더를 옮긴다.

만약 학습된 TRBA pretrained weight를 사용하고 싶다면, 이 코드를 사용해서 내가 학습한 120000 epoch 학습을 완료한 파일을 사용할 수도 있다.

https://drive.google.com/file/d/1T94P6Z-zxGOKciD0L_mJP2QQYJv4UXtm/view

deep-text-recognition-benchmark/saved_models/TPS-ResNet-BiLSTM-CTC-Seed2022/best_accuracy.pth 처럼 파일을 위치시킨다.

이후

demo.ipynb

파일을 돌려 test 이미지에 대한 예측을 수행하고, 내부 알고리즘을 통해 예측을 자동으로 병합한 CSV 파일이 만들어지게 된다.

About

korean ocr project

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published