종이 시험지 자동 채점 프로그램 | Tensorflow Object Detection API | Faster R-CNN | Ch4. 항목 감지 모델 학습하고 추론하기

박나연·2022년 1월 2일
1

2021CapstoneDesign

목록 보기
7/7

항목 감지 모델 학습

이제 앞에서 문제감지모델을 이용해 문제별로 잘라낸 이미지를 사용할 시간입니다. 사용자가 선택한 답의 번호를 확인하기 위해 문제 속 선택한 항목과 선택하지 않은 항목을 구분하는 것이 필요합니다. 따라서 먼저 앞에서 저장된 이미지들을 라벨링하였습니다.

항목 라벨링(Labeling)

위 사진처럼 번호를 각각 box로 라벨링을 진행하였고, 각각 not-choice, choice 두개의 클래스로 나뉘어 집니다.

모델 학습

여기서도 faster rcnn 모델을 사용했습니다. 그 중 inception resnet atrous v2 신경망을 사용했으며, 생성한 데이터셋으로 수정한 config 파일을 gitHub에 업로드 하였습니다. config파일 속 수정되어야 하는 부분은 아래와 같습니다.

10 num_classes: 1

108 fine_tune_checkpoint: "faster_rcnn_inception_resnet_v2_atrous_coco_2017_11_08/model.ckpt"

123 input_path: "object_detection/data/question_train.record"

125 label_map_path: "object_detection/data/question_labelmap.pbtxt"

137 input_path: "object_detection/data/question_val.record"

139 label_map_path: "object_detection/data/question_labelmap.pbtxt"

특히 108줄의 fine_tune 체크포인트 부분을 미리 학습된 모델의 체크포인트파일을 작성해주어야 학습을 연결하여 진행할 수 있습니다 !!
원하는 모델은 여기 에서 다운로드 후 사용가능합니다.

Faster_RCNN.config

동일한 방식으로 학습을 진행합니다. 챕터 3를 포스팅할때와 최종 학습 step이 조금 바뀐점이 있다면, 많은 수행착오끝에 수능시험지 만을 학습에 사용했고, 학습시 각각 100장 정도의 train set 으로만 진행하였습니다. 또한 문제 감지 모델학습을 위해서는 약 1300 step을, 항목 감지 모델학습을 위해서는 약 1097 step을 학습하였습니다.

모델 테스트

모델 테스트 과정입니다. 여기서도 앞서 문제 감지모델의 테스트에서 진행한 과정과 동일하게 진행됩니다. 따라서 그 과정에 필요한 파일에 관한 설명은 아래 링크에서 볼 수 있습니다.

모델 테스트 과정 - Inference

여기서 확인한 것은 각 문제에서 선택한 항목과 선택하지 않은 항목을 올바르게 인식하였는지, 다른 색의 bouding box로 시각화하여 확인했습니다. 또한 최종적으로 구현될 프로그램에서 몇번을 선택했는지 파악해야 하므로, 각 문제에서 몇번이 선택되었는지를 확인하는 알고리즘을 구현했습니다.

먼저 위 사진은 모델이 감지한 항목을 시각화한 사진으로, 제대로 인식하는 모습을 확인할 수 있습니다.

각 문제에서 몇번이 선택되었는지를 확인하기 위해서는 수능 시험 객관식의 나열 패턴을 파악해야 했습니다.

총 세가지의 패턴이 있습니다. 위 세가지의 패턴 중 각 문제가 어떤 패턴으로 객관식이 구성되어있는지를 먼저 확인하고, 각 패턴에 따라 위치별로 선택한 항목이 몇번째 위치에 있는지 확인하는 것을 구현했습니다. 거창한 알고리즘은 없고, 단순히 위치로만 판단하는 것을 구현했습니다. 모든 코드는 gitHub에 업로드 했습니다.

Choice Number.ipynb


종이시험지 자동채점 프로그램에 관한 포스팅은 여기서 마칩니다. 자세한 동작영상과 코드는 github에서 확인할 수 있습니다.

https://github.com/Nayeon12/Scoring-Paper-Tests-with-RCNN

profile
Data Science / Computer Vision

1개의 댓글

comment-user-thumbnail
2023년 1월 13일

엄청 신기하네요, Instance Segmentation을 시험지 채점에 적용하다니... 엄청 창의적이신것 같아요!!

답글 달기