본문 바로가기

Back/Deep Learning

[Python] [CNN]점자번역 프로그램(0)

0. 들어가기전... 

머신 러닝을 배우며 프로젝트를 진행하게 되었고 팀원 3명으로 팀을 이뤄 프로젝트를 진행하게 되었습니다.

 

  1. 주제 선정
  2. 설계
  3. 구현
  4. 실제 결과물
  5. 한계점 및 추후목표

 


 

1. 주제 선정.

https://www.kaggle.com/shanks0465/braille-character-dataset

 

Braille Character Dataset

 

www.kaggle.com

주제 선정을 위해 여러가지 데이터들을 살펴 보던중 다음과 같은 점자(Braille) 데이터를 보게 되었습니다.

더불어 작년 학교에서 수강했던 특수교육학의 내용이 머릿속을 스쳐지나 갔습니다..

출처 : 중대신문사(http://news.cauon.net/)

시각 장애인들은 점자를 이용하여 정보를 읽어냅니다.

하지만 그 점자를 설치하는 사람들은 대부분 비시각 장애인들이며 그렇기에 위의 사진과 같이 점자가 뒤집히는 상황이 발생하여도 문제를 발견하기 어렵습니다.  

 

엘리베이터 버튼의 경우 단순히 화살표의 방향만 보고 설치한것이며 비교적 한단어, 한 자음등 간략하게 정보를 주어 틀려도 쉽게 찾을 수 있지만 문장이 길어질 경우 그 오류를 찾기는 어려워집니다.

 

그렇기에 점자를 읽어 번역할 수 있다면, 설치 다시 확인하기 용이 할 것이고, 잘못된 점이 있다면 발견하기 좋을것이라 생각했습니다.

 

 


 

2. 설계 

 

 

설계에 있어서 다음과 같은 사항을 중점적으로 생각하였습니다..

- 외부의 점자이미지를 받아올 것

- GUI를 구현해 번역 결과를 다시 출력해 줄것.

- 점자>영어 전환, 영어>점자 전환이 가능할 것.

- 띄어쓰기(공백)도 러닝하여 문장구조로 구현이 가능할것.

 

 


 

 

2-1. 점자의 특징.

https://ko.wikipedia.org/wiki/%EC%98%81%EC%96%B4_%EC%A0%90%EC%9E%90

 

영어 점자 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

점자는 기본적으로 6개의 점이 동일한 간격으로 배치 되어 있어야 한다. 

그러므로 점자는 지나친 회전(90º이상) 반전되어선 안된다.

또한 공백 역시 일정한 간격을 두고 쓰여져야 한다.

 


 

 

2-2 자료 확인

위 kaggle에서 제공한 이미지셋을 열어보면 위와 같이 약간씩 문제가 있는 이미지들이 보입니다.

 

이에 따라 점자 데이터 셋을 처음부터 만드는 것이 적합하다 결정 내렸습니다.

 

 


 

 

2-3. 기능 설계

 

이미지를 넣을때 기본적으로 문장 단위로 입력 받을 수 있도록 하였습니다.

점자로 표기한 hello world

위와 같이 이미지를 입력 받았을때 한글자씩 잘라 어떤 알파벳인지 맞추고 그 결과를 리스트에 담아 결과로 반환한다는 계획을 세웠습니다.

 

  1. 문장 이미지를 입력 받는다.
  2. 문장을 한 알파벳 단위로 잘라낸다.
  3. 잘라낸 알파벳을 모델에 넣어 확인한다.
  4. 확인된 결과를 리스트에 추가한다.
  5. 리스트의 결과를 문자열로 묶어 반환한다.

2-4. 그러므로 다음과 같은 기능들을 구현하고자 합니다.

 

전처리)

  • 모델학습에 사용될 이미지를 부풀리기
  • CNN 모델 

 

점자>영문)

  • 이미지의 경로를 입력받아 전달
  • 문장을 입력받아 자르기
  • 예측 및 문자열 생성
  • UI로 전달

 

영문>점자)

  • 문자열 입력시 하나씩 읽기
  • 읽어온 알파벳에 해당되는 점자 이미지 불러오기
  • 하나씩 붙여서 완성 점자 이미지 출력