머신러닝 프로젝트 – CNN과 아두이노를 이용하여 글자를 인식하고 국가별로 분류하기

머신러닝 프로젝트 – CNN과 아두이노를 이용하여 글자를 인식하고 국가별로 분류하기

2018년 October 19일 5 By SUNGMIN

CNN과 아두이노를 이용하여 글자 이미지를 국가별로 분류하는 프로젝트를 해보았다.

 

프로젝트의 목차는 목표 & 목적, 이미지 데이터에 대한 설명, 파이썬 코드, 아두이노 구조&코드, 이미지 회전, 이미지 전처리, 결론, 배운점&느낀점이다.

 

프로젝트의 목표 – 영상은 하단에 첨부해두었다.

 



 

 

 

이미지 데이터 처리 방법과 CNN, 아두이노 실습을 위해서 프로젝트를 진행하였다.

 

학습에 사용한 언어 이미지 데이터에 대한 설명.
(인터넷 상에서 원하는 파일을 찾을 수 없어 데이터를 직접 만들었다.)
26개의 글자에 대해 5개의 폰르를 적용한 이미지를 하나의 국가당 학습 데이터로 사용
(언어별로 각각 130개의 이미지 데이터 사용)

 

학습에 사용한 언어 이미지 데이터에 대한 설명.
(인터넷 상에서 원하는 파일을 찾을 수 없어 데이터를 직접 만들었다.)
26개의 글자에 대해 5개의 폰르를 적용한 이미지를 하나의 국가당 학습 데이터로 사용
(언어별로 각각 130개의 이미지 데이터 사용)

 

파이썬 코드. 이미지를 배열로 변환하고 가공하여 저장하는 코드.
(각 코드에 대한 설명은 주석으로 달아두었다)

 

파이썬 코드. 이미지를 배열로 변환하고 가공하여 저장하는 코드.

 

파이썬 코드. 이미지를 배열로 변환하고 가공하여 저장하는 코드.

 

파이썬 코드. CNN class 부분.
학습에 사용할 데이터를 가져오고 모델을 생성하고 학습률을 0.001로 초기화.

 

파이썬 코드. CNN class부분.
CNN 신경망 구조.

 

파이썬 코드. 학습과 예측을 실행하는 코드.

 

파이썬 코드. Main 부분.
모델 생성하고 학습을 실행하고 평가하는 부분.

 

파이썬 코드. 아두이노 시리얼 통신 설정. 카메라 읽어오는 부분.

 

파이썬 코드. 실제 데이터를 받아와서 가공하고 예측하는 부분.

 

아두이노 코드. 시리얼 통신과 서보모터 설정하는 부분.

 

아두이노 코드. 서보모터 작동을 위한 함수.

 

아두이노 코드. 서보모터 작동을 위한 함수.

 

아두이노 코드. loop().
서보모터 위치 초기화하고 시리얼 통신으로 언어 분류값 받아와서 서보모터 작동시키는 부분.

 

아두이노 코드. loop().
서보모터를 원래의 위치로 돌리는 부분.

 

아두이노 기계 구조. 하드보드지와 테이프로 만들어서 많이… 조잡하다… 저비용.

 

아두이노 기계 구조.

 

아두이노 기계 구조. 아두이노 배선.

 

파이썬 코드. Data.py 코드. 이미지를 회전 시키키 전의 코드.

 

파이썬 코드. Data.py 코드. 이미지를 회전 시킨 후의 코드.

 

회전시킨 이미지 데이터를 추가 한 이유.

 

파이썬 코드. Data.py 코드. 이미지 데이터 2진화 하기 전과 후의 코드.

 

이미지 데이터 2진화 시키기 전과 후의 결과.

 

이미지 데이터 2진화에 대한 견해.

 

결론.

 

배운점&느낀점.

 

읽어 주셔서 감사합니다~

PPT사용은 자유롭게 사용하셔도 되나 저작권 표기는 꼭 해주세요ㅎㅎ
용량이커서 ppt파일 업로드가 안되네요.
PPT 파일은 댓글로 메일 주소 남겨주시면 보내드리겠습니다.

 

사용한 데이터와 코드는 아래의 github에서 보실 수 있습니다.

https://github.com/MLlounge/ML-Project/tree/master/Basic%20Project/CNN%20-%20Distinguish%20language%20according%20to%20characters