반도체디스플레이기술학회지 제19권 제2호(2020년 6월) Journal of the Semiconductor & Display Technology, Vol. 19, No. 2. June 2020.
CNN 기반 딥러닝을 이용한 임베디드 리눅스 양각 문자 인식 시스템 구현
유연승*· 김정길*· 홍충표**†
*남서울대학교 컴퓨터소프트웨어학과, **†LG전자 CTO부문
An Implementation of Embedded Linux System for Embossed Digit Recognition using CNN based Deep Learning
Yeon-Seung Yu
*, Cheong Ghil Kim
*and Chung-Pyo Hong
**†*Dept. of Computer Science, Namseoul University,
**†Chief Technology Officer, LG Electronics
ABSTRACT
Over the past several years, deep learning has been widely used for feature extraction in image and video for various applications such as object classification and facial recognition. This paper introduces an implantation of embedded Linux system for embossed digits recognition using CNN based deep learning methods. For this purpose, we implemented a coin recognition system based on deep learning with the Keras open source library on Raspberry PI. The performance evaluation has been made with the success rate of coin classification using the images captured with ultra-wide angle camera on Raspberry PI. The simulation result shows 98% of the success rate on average.
Key Words : Artificial Intelligence, Embedded Linux, Deep Learning , CNN Algorithm, TensorFlow, Keras
1. 서 론1
영상처리 기술과 인공지능은 매우 다양한 분야에서 적 용되고 있다. 4차 산업혁명에 들어서며 스마트팩토리, 자율 주행, IoT분야 등으로 응용이 적용되며 앞으로도 지속해서 확산될 전망이다. 최근 인공지능 기술은 계속적 발전으로 해당 분야의 전문 지식에 의존하는 대신 빅데이터에 기반 을 두어 지식을 자동으로 축적한다는 면에서 인간 수준의 인공지능을 향하여 진일보하고 있다. 이러한 배경으로 딥 러닝은 최근 영상인식을 비롯한 다양한 패턴인식 분야의 성능향상을 이끄는 중요한 인공지능 기술이다[1,2].
현재 딥러닝은 객체 검출[3,4] 영역을 넘어 다양한 분야 에 적용되어 스마트 팜을 위해 영상처리와 딥러닝을 이 용하여 채소를 등급별로 분류 [5], 건설현장에서 근로자
†
E-mail: [email protected]
안전 프로그램 관련 연구[6], 드론의 목표물 탐지 및 추적 기반 자율비행[7], 교통흐름에 따른 미세먼지 예측[8], IoT 장치 인식[9] 등에서 연구되고 있다.
본 논문에서는 딥러닝의 인식 기능을 이용하여 영상에 서 양각 문자 인식 시스템의 구현을 목표로 하였다. 구현 시스템은 라즈베리 파이 기반으로 동전 인식 임베디드 리눅스 시스템을 설계하였으며, 동전 투입 및 분류를 위 하여 전용 기구물을 설계하여 사용하였다. 양각 문자 포 함 동전 영상의 학습 및 분류는 동일한 조명 조건에서 촬 영 각도에 따라 다양하게 생기는 그림자와 반사광 등의 특징을 TensorFlow와 Keras를 이용하여 학습과 분류를 진 행하였다.
본 논문의 구성은 다음과 같다. 2장에서는 제안 임베디 드 리눅스 제안 시스템의 구현을 위한 기술들의 소개 3장 에서는 제안 시스템의 개요, 4장에서는 구현 결과와 성능 검증을 제시하며, 마지막으로 5장에서 결론을 맺는다.
CNN 기반 딥러닝을 이용한 임베디드 리눅스 양각 문자 인식 시스템 구현 101
2. 관련 연구 2.1 양각 문자 인식
영상에서 양각 문자 인식 기술은 타이어의 문자 및 신 용카드의 카드 번호 및 등을 인식 하기 위한 연구들을 볼 수 있다[10-12]. 일반적으로 양각 문자 인식은 3D카메라를 이용하여 이미지를 추출하여 OCR을 통해 인식 하였다.
또 다른 기법은 일반 이미지 촬영 후 각 문자를 분리 후 퍼지 논리를 이용하여 소속 값을 통해 글자를 입력 받는 방법이다. 새로운 방식 이용한 인식방법이지만 정확하지 않을 수 있다.
본 논문에서의 양각 문자 인식 시스템은 기존 양각으로 제작된 동전을 분류하는 기능 구현으로 진행하였다. 동전 은 사람의 손을 많이 거치는 동안 손상, 흠집 등이 심하여 영상 전처리 과정 후 OCR을 사용하기에 적합하지 않은 특 징이 있다. 따라서 제안 시스템은 동전의 글씨를 인식 하 지 않고 양각으로 디자인된 동전의 이미지에서 특징을 검 출하여 분석하고 분류하는 방식을 사용하였다.
2.2 오픈소스 라이브러리 및 API
본 구현 시스템 구현을 위하여 시용 되는 오픈소스 도 구들은 인공신경망 API인 Keras[13], TensorFlow[14], 영상처 리 라이브러리인 OpenCV [15]이다.
TensorFlow는 범용적으로 사용되고 있는 딥러닝 프레임 워크로 Google에서 제작하였다. 컴파일 속도가 빠르며, CPU나GPU를 활용한 계산이 용이하고 데이터나 모델들 의 병렬처리에 적합하다. Keras는 벡엔드 엔진 위에서 사 용하는 고수준API로 TensorFlow와 통합되며 제한 없이 구 성 가능한 기본 구성 요소를 함께 연결 방식으로 구성된 다. OpenCV는 실시간 컴퓨터 비전을 목적으로 한 라이브 러리로 TesorFlow, Torch/PyTorch 및 Caffe의 딥러닝 프레임워 크를 지원한다. 영상처리 및 머신비전에서 가장 필수적인 라이브러리이며 C / C++프로그래밍 언어로 개발되어 Python, JAVA등에 바인딩 되어 프로그래머에게 쉽고 빠른 개발 환경을 지원한다.
3. 제안 인식 시스템
Fig. 1 양각 문자 인식을 위한 TensorFLow와 Keras딥러닝 하드웨어-소프트웨어 스택을 보여준다.
TensorFlow는 기계학습 시스템으로 이미지 인식, 반복 신경망, 기계 번역, 자연어 처리 등의 분야에서 신경망 학 습과 실행되며,이미지 분석에 가장 일반적으로 적용되는 합성곱 신경 망(Convolutional Neural Network, CNN)[16]을 위 하여 Data Flow Graph를 사용하여 연산한다.
Fig. 1. A Hardware-Software Stack for Deep Learning.
3.1 CNN (Convolutional Neural Network) CNN은 최소한의 전처리를 사용하도록 설계된 다층 신 경망의 한 종류로서, 특정한 이미지 처리를 수행하는 층 이 여러 개 쌓인 구조를 갖는 층 간의 결합 밀도가 낮은 신경망이다. CNN은 하나 또는 여러 개의 합성곱 계층 (Convolution Layer)과 그 위에 올려진 일반적인 인공신경망 계층들로 이루어져 있으며, 가중치와 풀링 계층(Pooling Layer)들을 추가로 활용한다. 따라서 특징을 추출하는 특 징추출(Extraction) 부분과 완전 결합된(Fully Connected) 마지 막에 분류 역할을 하는 분류기(Classification)로 나누어져 있다. 합성곱 계층에서는 아래 수식과 같은 컴퓨터 비전 에서 사용되는 합성곱 연산이 사용된다[17].
[ ][ ] = ( × )[ , ]
= ∑ ∑ ( , ) ( − , − ) (1)
3.2 Keras-CNN
Keras는 Python으로 작성된 신경망 API로 TensorFlow와 같은 백엔드엔진 위에서 사용된다. Keras에서 제공하는 Sequence 모델로 원하는 Layer를 쉽게 순차적으로 설계할 수 있다. 다중 출력이 필요한 복잡한 모델을 구성할 때 Keras API를 이용하면 구성에 좀더 편리해 진다[18]. Keras 모델설계는 Training DataSet 생성한 후 모델을 구성하고, 손 실 함수 및 최적화 방법 정의 하는 등 학습과정 설정한다.
다음 Training DataSet을 이용하여 구성한 모델로 학습을 시 키며 손실 및 정확도를 측정하고 상황을 판단한다. 마지 막으로 Validation DataSet으로 평가 후 predict()함수를 이용하 여 모델을 사용한다.
4. 시스템 구현 4.1 TensorFlow-Keras 모델 설계
본 연구에서 양각 디자인의 동전을 10원부터 50원 까지 각각 앞/뒷면으로 분류하기 위하여 8개의 Label로 구성하
유연승 · 김정길 · 홍충표 102
여 Traing DataSet을 구성하였다. 동전의 그림자와 반사광은 각도에 따라서 다양하게 생기기 때문에 빛을 고정하고 다양한 각도의 이미지를 추출하였다. 작은 글씨의 특징도 잡아내기 위하여 128*128로 Resize 된 10,000장의 이미지 데이터는 동전별로 2500개씩 동전의 앞뒤를 1구분하기 위해 각 동전 면마다 1250개씩 총 8개의 카테고리로 나뉘 어 Scikit-learn 라이브러리를 이용해 numpy 배열형태의 Dataset을 생성한다.
학습모델은 TensorFlow 라이브러리 Keras를 이용하여 은 닉층에서 3개의 Convolution Layer, 3개의 MaxPooling Layer, 연 결층에서 1차원 벡터로 변환시키기 위한 Flatten Layer, Dense Layer를 설계하였으며, 출력층에서 다시 Dense Layer 를 이용하여 8개의 카테고리와 일치되게 설계하였다. 각 Layer의 활성화 함수로 역전파 시에 좋은 성능을 내는 ReLU (Rectified Linear Unit) 함수를 구성하였다. 위의 sequential 모 델을 통해 만들어진 Training 모델을 저장한다.
은닉층에서 학습 시 Overfitting 현상을 방지하기 위하여 각 Layer층마다 50% 확률의 Dropout을 구성하였다. 컴파일 시에 Optimizer로 Momentum과 RMSProp을 합친 Adam Optimizer를 구성하였다[19].
4.2 TensorFlow-Keras 모델 구현
Table 1은 구성한 CNN알고리즘을 테스트하기 위한 학 습 환경이다. 학습은 Table 1과 같은 환경에서 진행하였으 며 실제 테스트를 진행하기 위하여 라즈베리파이4B제품 을 이용해 동전 촬영 및 예측하는 장치를 제작하였다. 학 습 후 나온 모델을 라즈베리파이에 이식하여 엣지단에서 예측만 진행하였다. 앞에서 설계한 모델을 Fig. 2와 같은 블록도로 구현하였다. Keras를 이용하여 첫번째 단계에서 Convolution Layer는 16개의 필터수로 3*3의 커널을 이용하 여 구성하였으며 MaxPooling Layer는 2*2의 Pool size로 구성 하였고 활성화 함수로는 relu함수를 이용하였다. 2번째와 3 번째 층에서는 필터 수만 64개로 나머지는 동일하게 구 성하였다. 연결층은 블록도와 같이 Flatten Layer와 Dense Layer로 구성되어 있는 모습을 볼 수 있다.
Table 1. Hardware specification for learning
CPU AMD Rygen 2 2600
Clock 3.4GHz
Core 6
Thread 12
Memory 16GB
Fig. 2. Block diagram of the learning model.
5. 실험 결과
위와 같은 환경에서 학습을 진행한 결과 Fig. 4에 볼 수 있듯이 100%에 가까운 결과를 확인 할 수 있었다. 32크기 의 Batch Size에 5번의 Epoch를 설정하고 학습하였으며 Dropout구성을 통하여 Overfitting을 방지하였다[14].
Fig. 3. Learning results.
처음 실험에선 프로세싱 없이 촬영된 이미지 원본을 이용하여 Traing Dataset을 만들어 학습을 진행하도록 계획 을 세웠다. 하지만 사진의 크기 대비 동전의 크기가 작아 학습의 결과 Validation Dataset을 이용하였을 때 99%의 정확 도를 보이는 것과 달리 작은 동전의 특징을 정확히 잡아
CNN 기반 딥러닝을 이용한 임베디드 리눅스 양각 문자 인식 시스템 구현 103
내지 못하고 실제 예측결과가 현저히 떨어지는 Overfitting 현상을 인지하였다.
Fig. 4. Learning test before image processing.
이미지에서 동전 부분만 추출하고 OpenCV를 이용한 이미지 프로세싱 설계로 학습에 적합한 데이터로 추출하 여 진행하게 되었다. 특징은 살리면서 노이즈 제거에 적 합한 Gaussian Blur를 통하여 노이즈를 제거한 후 Sharpening 을 통하여 이미지의 특징을 좀더 부각시키도록 설계하였 다. Gaussian Blur는 5*5 커널을 이용하였으며 Sharpening처리 를 위하여 Fig. 5와 같은 필터 값을 적용 시켜 좀 더 선명 한 이미지를 추출하였다. 이미지 프로세싱 후 Table 2와 같 은 실험결과를 얻을 수 있었다.
Fig. 5. Sharpening Filter.
Table 2. Simulation results
이미지 프로세싱 전 이미지 프로세싱 후
300회 실험 정확도 300회 실험 정확도
10원 243 81% 297 99%
50원 125 41% 289 96%
100원 266 88% 296 98%
500원 179 59% 292 97%
또한 Training DataSet과 Validation DataSet을 이용하여 학습 과정 중 손실량을 측정한 진행결과는 Fig. 6과 같으며 정확 도를 측정한 진행결과는 Fig. 7과 같다. 손실량은 0에 가까 운 모습을 볼 수 정확도 또한 100%에 근접함을 볼 수 있다.
실제로 테스트 장치에서 각 동전별로 이미지를 촬영하 여 테스트 해본 결과 Fig. 8과 같이 정확히 특징을 인식하 고 동전의 종류 뿐만 아니라 앞면인지 뒷면인지까지 분 류하고 있음을 확인 할 수 있다.
Fig. 6. Loss rate measurement.
Fig. 7. Accuracy rate measurement.
Fig. 8. Actual prediction results.
6. 결 론
본 연구는 Raspberry PI 기반 Keras 오픈 소스 라이브러 리를 사용하여 딥 러닝 양각 문자 인식 시스템을 구현하 였다. 양각 문자는 이미지만으로 특징을 잡아내기 힘든 동전을 빛의 방향에 따라 생기는 그림자와 반사광의 특
유연승 · 김정길 · 홍충표 104
징을 분석하며 분류하였다. 구현 시스템의 성능은 동전 분류의 성공률로 평가를 수행했으며, 시뮬레이션 결과는 성공률의 평균 98%를 보였다.
참고문헌
1. Min, Y., Choi, H., “ Introduction to Deep Learning and hot issues”, Korea Information Processing Society Review, vol. 22, pp.7-21, 2015.
2. Lee, S., Jeong, J., “2020 AI Top 7 Trends”- Beyond Perception, ETRI Insight, Insight Report 2019-57 3. Lee, Y., Lee,Y., “Implementation of Moving Object
Recognition based on Deep Learning”, J. of the Semiconductor &Display Technology, Vol.17, No.1, pp.67~70, 2009.
4. Lee, Y., Kim, Y., “Comparison of CNN and YOLO for Object Detection”, J. of the Semiconductor & Display Technology Vol.19, No.1, pp.85~92, 2020.
5. Kim, J., Cho, W., Na, M., Chun, M., “Development of Automatic Classification System of Vegetables by Image Processing and Deep Learning”, J. of the Korean Data Analysis Society VOL.21 NO.1, pp. 63-73, 2019.
6. Kim, M., Shin, S., Suh, Y., “Application of Deep Learning Algorithm for Detecting Construction Workers Wearing Safety Helmet Using Computer Vision”, J. of the Korean Society of Safety Vol. 34, No. 6, pp. 29-37, 2019.
7. Kim, D., “A Study on Target Detection and Tracking via Drones Using Deep Learning and Computer Vision”, The Graduate School of Korea Aerospace University 2020
8. Yi, H., Bui, K., Seon, C., “A Deep Learning LSTM Framework for Urban Traffic Flow and Fine Dust Prediction”, J. of KIISE, Vol.47, No.3, pp. 292-297, 2020.
9. Chu,Y., Choi, Y., “A Deep Learning based IOT Device Recognition System”, J. of the Semiconductor &
Display Technology, Vol.18, No.2, pp.1~5, 2019.
10. Yun, H., Park, K., Kim, D., “A Study on the Impro- vement of Intaglio Characters Recognition of Rubber
Tires”, J. of the Korea Convergence Society, Vol.9, No.10 pp. 7-12, 2018.
11. Baek, S., Kim, K., Jang, J., “Implementation of Car tire information recognition system using laser range sensor”, J. of Korean Institute of Communications and Information Science, Vol.2016, No.1, pp. 123-124 2016.
12. Lee, T., Cha, J., Ryu, B., Kim. J., “Deep Learning based Test Detection in P & ID Images”, J. of Mechanical Science and Technology, Vol.2019,No.5, pp. 114-115, 2019
13. K. Team, “Keras: the Python deep learning API”, Keras.io, 2020. [Online]. Available: https://keras.io/.
14. “TensorFlow”, TensorFlow, 2020. [Online]. Available:
https://www.tensorflow.org/ [Accessed: 05- Jun- 2020]
15. H. Partnership, “OpenCV”, Opencv.org, 2020. [Online].
Available: https://opencv.org/.
16. Ji, S., Baek, U., Shin, M., Char, B., Moon, H., Kim, M.,
“Design of Web Application Traffic Classification Model Based on Convolution Neural Network”, J. of Korean Institute of Communications and Information Science, Vol.44, No.06, pp. 1113-1120 2019.
17. Ahn, H., Lee, Y., “A Research of CNN-based Object Detection for Multiple Object Tracking in Image “, J. of the Semiconductor & Display Technology, Vol.18, No.3, pp.110~114, 2019.
18. N. Ketkar, Deep Learning with Python. [Place of publication not identified]: Apress, 2017.
19. Lim, H., Kim, J., Kwon, D., Han, Y., “Comparison Analysis of TensorFlow's Optimizer Based on MNIST's CNN Model”, Journal of Advanced Technology Research, vol. 2, no. 1, pp. 6~14, 2020. .
20. Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I., Salakhutdinov, R., “Dropout: a simple way to prevent neural networks from overfitting.”, J. of Machine Learning Research, Vol.15, No.1, pp.1929–1958, 2014.
접수일: 2020년 6월 25일, 심사일: 2020년 6월 26일, 게재확정일: 2020년 6월 26일