전체 목차(from1).
MMOCR 은 OCR 문제에서 문자 영역을 검출하는 text detection 과 검출된 영역에서 문자를 읽어내는 text recognition 을 각각 다른 모델로 다루는 프레임워크입니다(from1). 앞선 튜토리얼(from2)에서는 MMOCR 에서 제공하는 모델을 커스텀 detection 모델로 학습할 수 있도록 config 파일을 구성하는 방법을 알아보았습니다. recognition 모델의 경우에도 거의 모든 구성이 비슷합니다. 이 튜토리얼에서는 둘의 차이가 나는 부분과 관련하여, 알아두면 좋을 내용에 대해서만 간단히 짚고 넘어가도록 하겠습니다.
MMOCR 프레임워크에는 recognition 모델 학습을 위한 MMOCR 데이터 표준이 존재합니다. detection MMOCR 데이터 표준 레이블이 bbox 에 대한 정보를 가지고 있는 한편, recognition MMOCR 데이터 표준 레이블은 bbox 에 대한 정보는 없고 label 에 대한 정보만 들고 있습니다. Recognition 모델을 학습하기 위해서는 이 점을 확인해 보아야 합니다.
{
"metainfo":
{
"dataset_type": "TextRecogDataset",
"task_name": "textrecog",
},
"data_list":
[
{
"img_path": "test_img_0_0.jpg",
"instances":
[
{
"text": "GRAND"
}
]
},
{
"img_path": "test_img_0_1.jpg",
"instances":
[
{
"text": "SALE"
}
]
},
// ...
]
}

원본 이미지

cropped 예시1

cropped 예시2
Recognition 모델 학습을 위한 MMOCR 데이터 표준의 경우에도 detection 모델 학습을 위한 MMOCR 데이터와 마찬가지로 이미지파일 N개가 1개의 JSON 파일에 대응됩니다. 하지만 각 이미지 파일은 텍스트 영역에 딱 맞게 잘려진(Crop) 이미지라는 차이가 있습니다. 앞선 실습에 사용했던 Aihub 금융 OCR 데이터의 경우에는 1개 이미지당 평균 8개의 텍스트 영역 bounding box 가 등장합니다. recognition 모델 학습을 위한 MMOCR 표준을 준수한다면 1개의 원본 이미지가 8개의 recognition 용 cropped 이미지로 불어나는 셈입니다.
RAW 데이터셋에서 cropped 된 recognition 모델 학습용 MMOCR 데이터 표준 이미지는 상당히 크기가 작고 가로가 길쭉하다는 특징이 있습니다. 따라서 augmentation 파이프라인 설계 시 텍스트 영역이 잘리거나 찌그러져 앨리어싱이 일어나지 않도록 각별한 주의가 필요합니다.
이때 MMOCR 이 제공하는 도구 tools/analysis_tools/browse_dataset.py 가 도움을 줄 수 있습니다.
MMOCR 공식 문서는 browse_dataset 을 다음과 같이 설명하고 있습니다.
browse_dataset 은 train_dataloader 이 실제로 모델을 학습할 때 사용되는 형태로 변환된 이미지가 어떻게 생겼는지 시각화해볼 수 있도록 도와줍니다. 따라서 데이터가 올바르게 입력되고 있는지 확인해 보려면 이 도구를 사용해 보는 것을 고려해 보세요.
parse me : 언젠가 이 글에 쓰이면 좋을 것 같은 재료들.