본문 바로가기

부스트캠프 AI Tech

글자 검출 프로젝트 트러블 슈팅

# data json 확인

 

- 'images' / 'drp.en_ko.in_house.deepnatural_{6자리 id}.jpg' : 이 이미지 아래

    - 'paragraphs' : 빈 dict

    - 'words'/'{4자리 id}

        - 'transcription' : 단어

        - 'points' : 위치, [[x1,y1],[x2,y2],[x3,y3],[x4,y4]]

        - 'orientation' : 거의 "Horizontal", 조금 "Vertical"

        - 'language' : 거의 그냥 null

        - 'tags' : 거의 ['Auto','UpdatedBbox','UpdatedText','UpdatedTags']

        - 'confidence' : 거의 null

        - 'illegibility' : 안쓰면 true

    - 'chars' : 빈 dict

    - 'img_w', 'img_h' : 크기

    - 'tags' : 이미지 태그는 다 없음 ("autoannotated"만)

    - 'relations' : 빈 dict

    - 'annotation_log', 'license_tag' : 그냥 모두 통일

 

# 학습이 덜된 모델에 대한 추론 (detect)

 

train set 학습 결과를 valid set 검증하는 중 문제 발생 

학습이 덜 된 모델은 detect가 느리거나 아예 안되는 경우가 있었다.

우선 너무 많은 bbox를 detect하여 UserWarning이 뜨는 것 역시 문제.

그렇기에 오히려 batch size를 크게 detect하면 멈추는 것 같았다.

학습이 덜 된 적은 에폭에서는 batch를 1로 설정하여 해결하였다.

 

하지만 batch size가 1인 경우에도 detect가 안되는 경우가 있었다.

loss를 기준으로 초반 epoch에서는 검증을 하지 않는 것으로 변경

 

최종적으로는 그냥 시간이 time을 재서 검증 시간이 너무 오래되면 넘어가도록 변경

 

# 학습마다 줄어드는 loss가 다름

 

Cls loss, Angle loss, IoU loss 세가지 loss가 쓰이는데 항상 loss 경향이 다름

예를들어 Angle loss가 거의 0으로 수렴하는데 Cls loss는 전혀 줄지 않는 경우가 있었음.

일단 많은 epoch으로 셋다 만족할만하게 줄어들도록 오래 학습하는 방법으로...

아니면 augmentation이나 데이터셋을 늘리는 걸로 해결될까?

 

# 실험 결과 정리

 

남을 위해서가 아니라.. 미래의 나를 위해....

제발, 네이밍, 잘하자.

 

# valid 적용이 왜 잘 안되었을까?

 

valid 코드는 정말 문제 없는 것으로 확인됨
model.eval() 하는 과정에서 문제가 있나????