정재윤
use docker image of paperspace gradient Scratch docker https://hub.docker.com/r/paperspace/gradient-base
docker tag
pt112-tf29-jax0314-py39-20220803
https://dacon.io/competitions/official/235970/overview/description 대회 데이터셋 내부 Train, Test 이미지 및 csv 파일을 사용함.
open.zip을 data_process 폴더 내부에 압축 해제한다.
이후 AI HUB에서 제공하는 야외 실제 촬영 한글 이미지 데이터셋에서 가로형간판1, 가로형간판2, 세로형간판, 돌출간판, 책표지 데이터 전부 및 train 라벨 파일을 다운받고, data_process 폴더 내부에 다음과 같이 이름을 바꾸어 압축해제한다.
[원천]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로 인코딩되어야함)
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 파일을 사용한다.
네이버에서 학습한 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 폴더가 생성된다.
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 파일이 만들어지게 된다.