[프로젝트 4 - OCR] 1. 대회 살펴보기

Jade·2021년 5월 24일
0

부스트캠프 AI Tech

목록 보기
53/54

프로젝트 4 - 대회 살펴보기

  • Task
  • EDA
  • 할 일

[Task]

  • 수식 인식
    수식이 포함된 이미지 > LaTeX 포맷의 텍스트로 변환하는 task
    object detection/segmentation과 자연어 처리 기술을 모두 사용

    이미지 내에서 수식 영역만 뽑아내는 localizaion, 뽑아낸 bbox 내부의 객체를 분류하는 recognition, 주어진 token을 이용하여 LaTex 수식으로 변환하는 단계를 거치는데 Stage4에서는 시간과 난이도 관계로 수식 영역만 crop된 이미지를 사용해서 localization 과정은 생략한다.

[EDA]

  • 데이터 구성
    학습 데이터 - 손글씨 50000장, 인쇄 데이터 50000장
    테스트 데이터 - 손글씨 6000장, 인쇄 데이터 6000장

    100000장의 이미지와 함께 정답, 파일 경로, 수식의 난이도와 출력물/손글씨 여부가 텍스트로 주어진다. 정답은 4 /times 7 = 2 8 과 같이 LaTeX 수식으로 주어진다. 이 때 수식에 나타나는 각 문자는 모두 띄어쓰기 1칸으로 구분되어 있다.

    데이터를 눈으로 훑어봤을 때 특기할 만한 점은 다음과 같다.

    1. 매우 큰 이미지나 매우 작은 이미지가 있음
    2. 다양한 각도로 (90도 이하에서부터 180도 또는 270도) 회전된 이미지가 있음
    3. 수식 위에 형광펜 등으로 표시된 이미지가 있음
    4. 수식이 아닌 그림(밑줄, 공책의 무늬 등)이 포함된 이미지가 있음
    5. Ground Truth에 명시된 수식 외에도 숫자나 문자가 포함된 이미지가 있음
    6. 흐릿하거나 연하게 쓰여서 잘 보이지 않는 이미지가 있음
    7. a와 α, q와 9, C와 ( 등을 혼동하기 쉬운 필체로 쓰인 이미지가 있음

  • 대처방법
    1. 이미지 사이즈 차이가 매우 크기 때문에 이미지의 최대/최소/평균 크기를 확인하여 분류한 뒤, 이미지별로 resize 방법을 다르게 적용할 필요가 있다. 가로나 세로 중 한쪽만 긴 이미지는 단순히 resize해서 정사각형으로 만들기보다 padding을 추가하는 편이 적절할 것이다.

    2. 사람의 눈 없이는 이미지가 회전되어 있는지 알지 못하므로, 이미지를 90*n도 방향으로 회전시켜 보는 방법이 있을 것이다. 하지만 10만 장의 이미지를 회전시켜 학습하면 연산 시간이 너무 오래 걸릴 것으로 예상되고, 틀린 표현을 학습할 우려가 있다고 판단했다. 예측의 confidence가 낮은 이미지만 골라서 회전시켜 보는 방법도 좋을 것 같다.

    3. 보통 형광펜은 밝은 색 (채도나 명도가 높음)이므로 이를 이용하여 영향을 제거하는 방법이 있을 것 같다. OpenCV 기능을 사용하여 custom augmentation을 구현할 수 있지 않을까? 혹은 단순히 grayscale로 바꿔 버리는 방법도 가능할 것 같다.

    4. 이에 대한 대처 방법은 생각하지 못했다. 모델을 돌려 본 다음 결과를 보고 결정해야 할 것 같다.

    5. 이에 대한 대처 방법은 생각하지 못했다. 모델을 돌려 본 다음 결과를 보고 결정해야 할 것 같다.

    6. 흐릿하거나 연한 이미지가 잘 보이도록 명도/대비 등의 augmentation을 강하게 주면 강한 augmentation 효과 때문에 다른 평범한 이미지는 잘 인식할 수 없게 된다. 이를 방지하기 위해서 이미지의 색조나 채도, 밝기 등의 std, mean을 구하고 이를 바탕으로 이미지 그룹을 나눠서 그룹별로 다른 augmentation을 적용할 계획이다. 또, 이미 blur나 노이즈가 심한 이미지들이 많기 때문에 관련 augmentation은 적용할 필요가 없을 것으로 보인다.

    7. 이에 대한 대처 방법은 생각하지 못했다. 모델을 돌려 본 다음 결과를 보고 결정해야 할 것 같다.
  • 시그마 수식은 일반적으로 시그마 기호 > 아래첨자 > 위첨자 순으로 쓰는데 (\sum _ {i} ^ {n}), 시그마 > 위첨자 > 아래첨자 순으로 써도 수식은 작동한다. GT에는 어떻게 되어 있을까? GT에 있는 모든 시그마가 동일한 규칙으로 쓰여 있을까? GT 파일을 보고 정답에 시그마가 포함되어 있는 경우만 골라서 확인해 봐야겠다.

[Metric]

문장 정확도(sentence accuracy)와 단어 오류율(word error rate)의 가중합을 사용
metric = 0.9*sentence accuracy + 0.1* word error rate

  • 단어 오류율
    단어 단위로 삽입/삭제/대체된 글자 개수를 계산하여 구한다. 값이 낮을수록 모델 성능이 좋다. 대회에서는 단어 단위가 아니라 character 단위로 구한다.
    WER = 100*(insertion+deletion+substitution)/total word

  • 문장 정확도
    문장 단위의 정확도를 평가하는 방법으로, 출력과 정답이 정확히 일치하는 경우에만 count한다.


[할 일]

  1. 코드 wise EDA (이미지의 크기, std, mean 등을 분석)
  2. albumentation에 있는 변환들이 어떤 의미인지 알고 사용하기
  3. OpenCV를 이용해서 custom augmentaion 구현 (contour나 photoshop의 curve 기능처럼)
  4. OCR survey 논문 읽기
profile
반가워용

0개의 댓글