환경
해결완료
컴퓨터 비전을 활용한 분리배출표기 인식 프로그램
과정은 분리배출 표기 인식 모델 학습과 글자 인식 두 과정으로 나뉩니다.
1. 분리배출 표기 인식 모델 학습
1번째 과정: 구글에서 검색한 이미지와 찍은 사진들 155장을 모아 Roboflow라는 플랫폼을 이용하여 사진 속 분리배출표기의 위치를 정사각형 모양으로 기록하고 csv파일로 저장해 레이블셋을 만들었습니다. 또 사진들을 흑백 사진으로 변환하여 학습에 용이하도록 처리하였습니다.
2번째 과정: 데이터셋의 사진을 불러와 (200*200) 크기로 변환하고, 입력값으로 해당 사진들을, 레이블로 표기의 위치 정보(정사각형의 왼쪽 위 점의 x, y좌표값과 정사각형의 길이)를 지정하여 학습시킬 데이터를 준비했습니다. 모델 구조는 객체 검출에 최적화된 VGG16이라는 모델을 사용했습니다. 총 반복 횟수는 10번이었습니다.
결과: 테스트해본 결과 대부분의 사진에서 표기의 실제 위치와는 상관없이 가운데만을 특정하는 결과가 나타났습니다. 아마 학습에 사용한 사진 대부분이 표기가 가운데에 위치해 있어 이러한 결과가 나온 것으로 예상됩니다.
3번째 과정: 위 문제를 해결하기 위해 학습에 이용할 데이터의 수를 늘리고, 표기의 위치가 한 곳에 몰리지 않도록 해야 했습니다. 저희는 이를 처음에 사용했던 155장의 사진을 표기가 포함되도록 무작위의 크기와 위치에서 여러번 잘라내 한 장을 여러장으로 늘려 해결했습니다. 학습 모델은 같은 모델을 사용하였으며, 한 장의 사진을 10장으로 늘려 한 번 학습당 총 1550장의 사진을 학습하도록 하였습니다. 학습 전 같은 방법으로 100장의 사진을 미리 준비하여 학습 때 모델의 정확도를 평가하였습니다. 학습은 정확도가 유의미하게 더이상 오르지 않을 때까지 반복하여 약 30번 진행하였습니다.
결과: 표기가 비교적 큰 비율을 차지하는 사진에서는 거의 정확한 결과를 낼 수 있었습니다. 화질이 떨어지거나 표기가 작을 경우 위치와 크기가 약간 엇나가는 모습을 보여주어, 더 많은 데이터와 다양한 방식으로 사진을 가공하여 정확도를 높일 예정입니다.
2. 글자 인식
위의 모델을 이용하여 모델이 예측한 부분만 잘라 그 안의 글자를 인식하는 프로그램을 만들고자 했습니다. 처음에는 테서렉트라는 OCR 모듈을 사용하려 했으나, 한글 인식률이 떨어져 구글 비전 API의 글자 인식 기능을 사용했습니다.
1. 분리배출 표기 인식 모델 학습
1번째 과정: 구글에서 검색한 이미지와 찍은 사진들 155장을 모아 Roboflow라는 플랫폼을 이용하여 사진 속 분리배출표기의 위치를 정사각형 모양으로 기록하고 csv파일로 저장해 레이블셋을 만들었습니다. 또 사진들을 흑백 사진으로 변환하여 학습에 용이하도록 처리하였습니다.
2번째 과정: 데이터셋의 사진을 불러와 (200*200) 크기로 변환하고, 입력값으로 해당 사진들을, 레이블로 표기의 위치 정보(정사각형의 왼쪽 위 점의 x, y좌표값과 정사각형의 길이)를 지정하여 학습시킬 데이터를 준비했습니다. 모델 구조는 객체 검출에 최적화된 VGG16이라는 모델을 사용했습니다. 총 반복 횟수는 10번이었습니다.
결과: 테스트해본 결과 대부분의 사진에서 표기의 실제 위치와는 상관없이 가운데만을 특정하는 결과가 나타났습니다. 아마 학습에 사용한 사진 대부분이 표기가 가운데에 위치해 있어 이러한 결과가 나온 것으로 예상됩니다.
3번째 과정: 위 문제를 해결하기 위해 학습에 이용할 데이터의 수를 늘리고, 표기의 위치가 한 곳에 몰리지 않도록 해야 했습니다. 저희는 이를 처음에 사용했던 155장의 사진을 표기가 포함되도록 무작위의 크기와 위치에서 여러번 잘라내 한 장을 여러장으로 늘려 해결했습니다. 학습 모델은 같은 모델을 사용하였으며, 한 장의 사진을 10장으로 늘려 한 번 학습당 총 1550장의 사진을 학습하도록 하였습니다. 학습 전 같은 방법으로 100장의 사진을 미리 준비하여 학습 때 모델의 정확도를 평가하였습니다. 학습은 정확도가 유의미하게 더이상 오르지 않을 때까지 반복하여 약 30번 진행하였습니다.
결과: 표기가 비교적 큰 비율을 차지하는 사진에서는 거의 정확한 결과를 낼 수 있었습니다. 화질이 떨어지거나 표기가 작을 경우 위치와 크기가 약간 엇나가는 모습을 보여주어, 더 많은 데이터와 다양한 방식으로 사진을 가공하여 정확도를 높일 예정입니다.
2. 글자 인식
위의 모델을 이용하여 모델이 예측한 부분만 잘라 그 안의 글자를 인식하는 프로그램을 만들고자 했습니다. 처음에는 테서렉트라는 OCR 모듈을 사용하려 했으나, 한글 인식률이 떨어져 구글 비전 API의 글자 인식 기능을 사용했습니다.
과제 해결 과정을 작성하여 파일을 올려 현황을 공유하세요.
현재 0명이 공감했습니다.
공감하기