DOI QR코드

DOI QR Code

Design and Implementation of Facial Mask Wearing Monitoring System based on Open Source

오픈소스 기반 안면마스크 착용 모니터링 시스템 설계 및 구현

  • Received : 2021.04.29
  • Accepted : 2021.08.06
  • Published : 2021.08.31

Abstract

The number of confirmed cases of coronavirus-19 is soaring around the world and has caused numerous deaths. Wearing a mask is very important to prevent infection. Incidents and accidents have occurred due to the recommendation to wear a mask in public places such as buses and subways, and it has emerged as a serious social problem. To solve this problem, this paper proposes an open source-based face mask wearing monitoring system. We used open source software, web-based artificial intelligence tool teachable machine and open source hardware Arduino. It judges whether the mask is worn, and performs commands such as guidance messages and alarms. The learning parameters of the teachable machine were learned with the optimal values of 50 learning times, 32 batch sizes, and 0.001 learning rate, resulting in an accuracy of 1 and a learning error of 0.003. We designed and implemented a mask wearing monitoring system that can perform commands such as guidance messages and alarms by determining whether to wear a mask using a web-based artificial intelligence tool teachable machine and Arduino to prove its validity.

코로나바이러스-19는 전 세계에서 확진자가 폭증하고 있으며 수많은 사망자를 발생시켰다. 마스크 착용은 감염예방에 매우 중요하다. 버스, 지하철 등 공공장소에서 마스크 착용 권유로 인한 사건·사고가 발생하고 있으며 심각한 사회문제로 대두되고 있다. 이런 문제점을 해결하기 위해서 본 논문에서는 오픈소스 기반 안면 마스크 착용 모니터링 시스템을 제안한다. 오픈소스 소프트웨어인 웹기반 인공지능 툴 티처블머신과 오픈소스 하드웨어 아두이노를 사용하였다. 마스크 착용여부를 판단하여 안내 메시지 및 알람 등 명령을 수행한다. 티처블머신의 학습파라미터 학습횟수 50, 배치크기 32, 학습률 0.001의 최적의 값으로 학습을 하여 정확성 1, 학습오차는 0.03의 결과 값을 얻었다. 웹기반 인공지능 툴 티처블머신과 아두이노를 이용하여 마스크 착용여부를 판단하여 안내 메시지 및 알람 등 명령을 수행할 수 있는 마스크착용 모니터링 시스템을 설계 및 구현하여 타당성을 입증하였다.

Keywords

Ⅰ. 서론

2019년에 중국에서 처음 발발한 코로나바이러스-19(COVID-19)는 전 세계에서 확진자가 폭증하고 있으며 수많은 사망자를 발생시켰다. 코로나바이러스의 전파경로는 비말과 콧물, 가래 등의 호흡기 분비물로 알려져 있어 마스크 착용이 감염 예방에 매우 중요하다. 하지만 국가 차원의 마스크 착용 권고에도 불구하고 여전히 일부 사람들이 마스크를 착용하지 않은 채 건물에 출입하는 일이 발생하고 있어 많은 감염 위험이 우려되고 있다.[1] 현재는 코로나바이러스의 영향으로 마스크 착용이 의무화되었다. 공공장소, 대중교통, 학교, 회사 등 사람들이 밀집할 수 있는 곳에서는 반드시 마스크를 착용해야 한다. 대다수 사람들이 규칙을 잘 지키고 있다. 하지만 버스, 지하철 등 공공장소에서 마스크를 착용하지 않은 사람에게 착용할 것을 권유하자 폭행, 폭언 등 불미스러운 일들이 발생하고 있어 심각한 사회적인 문제로 대두되고 있다.

최근에는 기업들에서 인공지능을 이용한 마스크 착용 유무를 검출하는 서비스들을 개발하고 있다. LG CNS는 최근 서울 마곡 본사 출입 게이트에 얼굴인식 출입통제 서비스를 이용하여 마스크를 착용하지 않으면 게이트 통과를 못하는 시스템을 도입하였다.[2] 이러한 서비스는 해외에서도 마찬가지 이다. 최근 프랑스 정부도 파리와 칸 등의 도시에서 대중교통을 이용할 때 마스크의 착용 여부를 감시하기 위해 폐쇄회로카메라(CCTV)에 서비스를 도입하고 있다.[3]

본 논문에서는 오픈소스 소프트웨어인 웹기반 인공지능 툴인 티처블 머신과 오픈소스 하드웨어인 아두이노를 이용하여 마스크 착용여부를 판단하여 안내 메시지 및 알람 등 명령을 수행할 수 있는 마스크착용 모니터링 시스템을 제안한다. 마스크 착용 여부의 학습모델은 웹기반 인공지능 툴인 티처블 머신의 학습 파라미터인 학습 횟수, 배치 크기, 학습률을 변화시켜 최적의 값을 구하였다. 개인 PC, 노트북, 태블릿 등에서 티처블 머신을 사용 가능하며 오픈소스 하드웨어인 아두이노와 연동하여 마스크 착용 여부를 판단하여 안내 메시지 및 알람 등 명령을 수행할 수 있다. 오픈소스 하드웨어 및 소프트웨어를 사용함으로써 기존의 마스크착용 모니터링 시스템 및 출입통제 시스템에 비해서 저비용으로 누구나 쉽게 구현할 수 있다.

논문 구성은 다음과 같다. 2장에서는 오픈소스 하드웨어 및 아두이노, 오픈소스 소프트웨어 및 웹기반 인공지능 툴인 티처블 머신에 대하여 설명한다. 3장에서는 마스크 착용 모니터링 시스템의 전체 구성도, 동작 알고리즘, 소스코드에 대하여 설명하고 4장에서는 티처블 머신의 학습 파라미터인 학습 횟수, 배치크기, 학습률 변화에 대한 최적의 실험 결과 및 전체 시스템 실험결과에 대하여 설명한다. 5장에서는 제안한 마스크 착용 모니터링시스템의 타당성 및 결론을 맺는다.

Ⅱ. 오픈소스

1. 오픈소스 하드웨어

오픈소스 하드웨어는 각종 하드웨어 제작에 필요한 회로도 및 관련 설명서, 인쇄회로 기판 도면 등을 공개함으로써 누구나 이와 동일하거나 혹은 이를 활용한 제품을 개발할 수 있도록 지원하는 하드웨어를 의미한다. 하드웨어의 디자인을 공개함으로써 누구든지 이를 바탕으로 하드웨어 제작 방법을 익힐 수 있도록 하는 동시에 수정, 배포 혹은 제조할 수 있도록 허용한다. 오픈소스 하드웨어의 가장 큰 특징은 기술에 대한 특허 라이선스가 없고 제품 개발에 필요한 리소스가 공개되어 있다는 점이다. 부품을 직접 구매해 조립하기 때문에 완성형 또는 표준형 제품에 비해 가격도 저렴하고 형태 변경을 통해 전혀 새로운 형태의 커넥티드 기기를 탄생시킬 수도 있다. 제어나 조작에 필요한 소프트웨어 역시 주로 오픈소스 형태로 공개되어 용도에 맞춰 직접 프로그래밍도 가능하다.[4] 오픈소스 하드웨어는 아두이노, 라즈베리 파이, 비글 보드, 갈릴레오 등이 있다. 이 중에서 아두이노는 저렴한 비용, 쉬운 접근성, 무한 확장성 등의 장점으로 가장 널리 사용된다. 그림 1은 오픈소스 아두이노 하드웨어 플랫폼 예시를 나타내고 있다.

OTNBBE_2021_v21n4_89_f0001.png 이미지

그림 1. 오픈소스 아두이노 하드웨어 플랫폼

Fig. 1. Open Source Arduino Hardware Platform

오픈소스 아두이노의 특징을 요악하면 다음과 같다.[5]

∙ Inexpensive : 아두이노 보드는 다른 마이크로컨트롤러 플랫폼에 비해 상대적으로 저렴하다.

∙ Cross-platform : 아두이노 소프트웨어(IDE)는 windows, Macintosh OSX, Linux 운영 체제에서 실행할 수 있다.

∙ Simple, clear programming environment : 아두이노 소프트웨어(IDE)는 초보자가 사용하기 쉬우며 고급 사용자도 활용 가능하다.

∙ Open source and extensible software : 아두이노 소프트웨어는 오픈 소스 도구로 게시되며, 숙련된 프로그래머가 C++ 라이브러리를 통해 확장할 수 있다.

∙ Open source and extensible hardware : 아두이노 보드의 설계는 creative commons license 로 발행되기 때문에 숙련된 회로 설계자는 모듈의 자체 버전을 만들어 확장 및 개선할 수 있다.

2. 오픈소스 소프트웨어

오픈소스 소프트웨어는 공공적으로 소스코드와 실행 파일을 제공하고 또한 소스코드를 어느 누구나 자유롭게 수정 및 수정된 소프트웨어의 파일을 배포할 수 있게 허가된 무료 소프트웨어이다. 오픈소스 소프트웨어는 소스 코드를 누구나 읽을 수 있고 사용자 능력에 따라서 각종 버그 및 기능 개선과 그것을 변경하여 기능을 추가할 수 있으며, 어느 누구나 그 소프트웨어를 개발 및 학습, 개선, 수정할 수 있다. 이에 따라 오픈소스 소프트웨어는 프로그램의 복사 또는 복제하여 재배포할 수 있는 권한, 소프트웨어의 소스코드에 접근할 수 있는 권한, 프로그램 개선 및 변경할 수 있는 권한을 누구에게나 보장한다.[4]

최근 AI 오픈소스 프로젝트가 빠르게 증가하고 있으며, 글로벌 IT 업체 주도로 개발된 딥러닝 분야의 오픈소스가 시장에서 널리 활용 중에 있다. 구글의 TensorFlow, 마이크로소프트의 CNTK, 아마존웹서비스의 MXNet 등이 있다. 구글에서 개발한 파이선 환경에서 딥러닝과 같은 인공지능 기법을 쉽게 구현할 수 있도록 도와주는 오픈소스 라이브러리인 텐서플로우의 등장은 인공지능에 관심이 있는 많은 사람들에게 도움이 되었다. 현재 텐서플로우는 전 세계 개발자들 사이에서 가장 인기 딥러닝 도구로 부상하였다. 텐서플로우가 짧은 기간 내에 급성장 할 수 있었던 이유는 타 딥러닝 라이브러리들보다 쉬운 사용법, 지속적인 라이브러리 업데이트, 구글 서비스의 대부분이 텐서플로우를 적용했다는 점 등이다.[6]

인공지능 플랫폼 중 티처블머신은 구글에서 만든 대표적인 GUI 기반의 인공지능 플랫폼이다.[7] 티처블 머신은 2017년에 구글이 제시한 웹 기반 인공지능 툴로써 누구나 쉽게 인공지능 학습모델을 만들 수 있게 해준다. 티처블 머신은 단순한 학습 도구의 역할 뿐만 아니라 생성한 모델을 다양한 방법과 용도로 활용할 수 있도록 하였으며, 2.0 버전에서는 영상 프로젝트와 함께 소리와 자세 프로젝트 서비스를 제공하고 있다. 그림 2는 티처블 머신의 사용자 인터페이스를 나타내고 있다.[8]

OTNBBE_2021_v21n4_89_f0002.png 이미지

그림 2. 티처블 머신의 사용자 인터페이스

Fig. 2. The User interface of Teachable Machine

티처블 머신은 데이터 수집(Class), 학습(Training), 프리뷰(Preview) 과정으로 이루어져 있으며, 데이터 수집과 프리뷰 과정에서는 파일 업로드와 웹캠 두 가지 방법으로 입력이 가능하다. 데이터 수집은 최소 2진 분류로 설정할 수 있으며, 더 많은 분류를 원할 경우 클래스를 추가할 수 있다. 학습모델은 웹에 저장이 가능하며, 이후 테스트 시 학습 분류에 업로드 했던 영상들을 다시업로드하지 않아도 되기 때문에 유용한 기능이다. 티처블 머신 영상프로젝트의 advanced 모드에서는 학습 파라미터인 학습 횟수(epoch), 배치 크기(batch size), 학습률(learning rate) 세 가지를 조정하여 학습할 수 있다. 이렇게 완성된 학습모델은 프리뷰에서 다른 영상 혹은 웹캠을 이용하여 인공지능 학습결과를 확인할 수 있다. 학습된 모델은 웹에 저장하거나 내보내기 모델 (Export Model) 메뉴를 이용해 Tensorflow, Tensorflow.js, Tensorflow Life로 내보낼 수 있다.[7][8]

Ⅲ. 모니터링 시스템

그림 3은 본 논문에서 사용한 안면마스크 착용 모니터링 시스템의 전체 구성도를 나타내고 있다. PC에서는 웹캠을 통해 입력된 영상으로 마스크 착용 유·무를 판단하는 학습 모델을 생성한다. p5 시리얼 프로그램은 아두이노 보드와의 PC와의 통신포트를 오픈시켜놓는다. 이후 아두이노 보드에서 PIR 센서를 통해 사람이 인식이 되면 p5 프로그램에 티처블 머신에서 미리 만들어둔 학습모델을 사용하여 웹캠을 통해 들어오는 실시간 영상을 확인하여 마스크 착용유무를 아두이노 보드로 전송후 그에 따른 메시지 전송 및 알람 등의 명령을 수행한다.

OTNBBE_2021_v21n4_89_f0003.png 이미지

그림 3. 안면마스크 착용 모니터링 시스템 전체 구성도

Fig. 3. Overall Configuration Diagram of the Face Mask Wear Monitoring System

그림 4는 본 논문에서 사용한 안면마스크 착용 모니터링 시스템의 알고리즘을 나타내고 있다. 알고리즘에서 보여주듯이 먼저 PIR 센서를 사용하여 사람이 인식되면 웹캠을 통해 영상을 입력받는다. 입력받은 영상을 미리 생성된 학습모델에 적용하여 마스크 착용여부를 확인한다. 마스크 착용 확인시는 ‘Have a nice day’ 라는 메시지를 화면 창에 띄우고 서보모터를 움직여 출입문을 동작시킨다. 그리고 시각적인 효과를 위해 Blue LED를 켜주고 LCD 모듈에도 ‘Have a nice day’라는 메시지를 출력하며 부저를 울려준다. 마스크 미착용 시에는 ‘Mask error’ 라는 메시지를 화면 창에 띄우고 서보모터를 이용해 출입문을 닫히게 한다. 그리고 시각적인 효과를 위해 Red LED를 켜주고 LCD 모듈에도 ‘‘Mask error’ 라는 메시지를 출력하며 부저를 울려준다. 마스크 착용 여부가 확인이 안 될 경우에는 ‘Look at the front!’ 라는 메시지를 화면 창에 띄우고 서보모터를 이용해 출입문을 닫히게 한다. 그리고 시각적인 효과를 위해 Yellow LED 를 켜주고 LCD 모듈에도 ‘Look at the front!’ 라는 메시지를 출력하며 부저를 울려준다.

OTNBBE_2021_v21n4_89_f0004.png 이미지

그림 4. 안면마스크 착용 모니터링 시스템 알고리즘

Fig. 4. Algorithm of the Face Mask Wear Monitoring System

그림 5는 안면마스크 착용 모니터링 시스템의 소스 코드를 나타내고 있다.

OTNBBE_2021_v21n4_89_f0006.png 이미지

그림 5. 안면마스크 착용 모니터링 시스템 소스코드

Fig. 5. Source code of the Face Mask Wear Monitoring System

Ⅳ. 실험 및 결과

본 논문에서는 질병관리청 “올바른 마스크 착용법”[9] 을 기준으로 캐글 사이트[10]에 게시된 마스크 착용 이미지를 수집하였으며 이미지 사이즈는 다양하다. 정상적으로 착용한 이미지 690장, 마스크를 잘못 착용한 이미지 686장, 마스크를 미착용한 이미지 703장을 사용하여티처블 머신으로 학습시켰다. 학습 테스트 데이터로는 마스크를 착용한 이미지 104장, 마스크를 잘못 착용한 이미지 106장, 마스크를 미착용한 이미지 103장이었으며, 정확도는 각각 0.99, 0.97, 0.98이었다. 그림 6(a)는마스크가 정상적으로 착용된 이미지 예시와 그림 6(b)는마스크가 잘못 착용된 이미지 예시를 각각 보여주고 있다.

OTNBBE_2021_v21n4_89_f0007.png 이미지

그림 6. 마스크 착용 이미지 예시

Fig. 6. Example image of wearing of masks

그림 7(a)와 그림 7(b)는 티처블 머신의 데이터 수집과 프리뷰 과정에서 파일 업로드와 웹캠 두 가지 방법을 이용한 사용자 인터페이스 실험 환경을 각각 보여주고 있다. 티처블 머신의 영상, 소리, 자세 프로젝트 중에서 영상 프로젝트를 이용하였다. Class 1에는 정상적으로 마스크를 착용한 이미지, Class 2에는 마스크를 착용하지 않은 이미지, Class 3에는 마스크를 잘못 착용한 이미지를 사용하였다. 학습이 완료된 후에는 preview를 통해 임의로 선정한 마스크를 정상적으로 착용한 이미지, 마스크를 미착용한 이미지, 마스크를 잘못 착용한 이미지를 업로드 및 웹캠을 이용하여 정확도를 확인하였다.

OTNBBE_2021_v21n4_89_f0009.png 이미지

그림 7. 티처블 머신의 사용자 인터페이스 실험 환경

Fig. 7. Experimental environment of the user interface of the teachable machine

학습 파라미터인 학습 횟수, 배치크기, 학습률을 설정하여 학습결과의 정확도 및 손실을 확인할 수 있었다. 티처블 머신의 Advanced mode에서 학습횟수(Epochs), 배치 크기(Batch Size), 학습률(Learning Rate)을 각각 변화하여 학습시켰다. 표 1은 학습횟수(Epochs) 변화에 따른 학습시간, 정확성(Accuracy), 학습오차(Loss)을 나타내고 있다. 학습 횟수란 학습 데이터의 모든 데이터를 학습한 횟수를 뜻한다. 학습 횟수가 많을수록 학습 시간은 증가하며 학습모델의 정확도는 높은 것을 확인할 수 있었다. 하지만 손실 또한 증가하는 것을 알 수 있다. 학습 횟수를 10부터 200까지 변화하면서 학습을 수행하여 최적의 학습 횟수를 구하였다.

표 1. 학습회수 변화에 따른 학습시간, 정확성, 학습오차

Table 1. Learning time, accuracy, and loss due to changes I the number of learning

OTNBBE_2021_v21n4_89_t0001.png 이미지

표 2는 배치 크기 변화에 따른 학습시간, 정확성, 학습오차을 나타내고 있다. 배치 크기는 학습을 한번 반복하는데 나누어진 데이터 크기를 말한다. 티처블 머신의 기본 설정인 배치 크기 16, 32, 64, 128, 256, 512로 학습을 수행하였다.

표 2. 배치 크기 변화에 따른 학습시간, 정확성, 학습오차

Table 2. Learning time, accuracy, and loss due to changes I the number of learning

OTNBBE_2021_v21n4_89_t0002.png 이미지

표 3는 학습률 변화에 따른 학습시간, 정확성, 손실을 나타내고 있다. 학습률은 경사 하강법으로 학습을 진행할 때 학습변동률을 의미한다. 학습률은 0.0001, 기본설정값 0.001, 0.01, 0.05, 0.1의 값을 설정하여 학습을 진행하였다.

표 3. 학습률 변화에 따른 학습시간, 정확성, 학습오차

Table 3. Learning time, accuracy, and loss due to changes I the number of learning

OTNBBE_2021_v21n4_89_t0003.png 이미지

학습 파라미터인 학습횟수, 배치크기, 학습률 변화에 따른 학습시간, 정확성, 학습오차 티처블머신 학습을 통하여 최적의 값을 각각 구하였다. 학습회수 50, 배치크기 32, 학습률 0.001의 최적 값을 적용 후 학습을 수행하여 정확성 1, 손실 0.03의 결과 값을 얻었다. 그림 8는학습파라미터인 학습횟수, 배치크기, 학습률 변화에 대한 학습 결과를 나타내고 있다. 학습오차와 정확성을 티처블머신에서 그래프로 확인할 수 있다. 학습이 진행됨에 따라 정확성과 학습오차를 그래프 값과 경향을 자세히 볼 수 있으므로, 매개변수를 조정하여 튜닝하거나 학습 결과를 확인하는데 사용할 수 있다.[9]

OTNBBE_2021_v21n4_89_f0010.png 이미지

그림 8. 티처블 머신의 학습 결과

Fig. 8. Learning result of teachable machine

그림 9의 sketch.js 소스는 티처블머신으로 만든 학습모델을 사용하여 웹캠에서 수집되는 실시간 영상을 판단하여 마스크의 착용유무를 아두이노 보드에 전송 할 수 있도록 프로그램 하였다. 프로그램에서 음영처리된 부분은 사용한 기존의 p5 프로그램에서 제작한 학습모델을 사용하여 통신을 하기 위해 사용자의 컴퓨터 환경에 맞게 변경한 부분들을 나타내고 있다.

OTNBBE_2021_v21n4_89_f0011.png 이미지

그림 9. sketch.js 소스코드 다운로드

Fig. 9. Download the source code as sketch.js

그림 10는 안면마스크 모니터링 시스템의 전체 실험환경을 보여주고 있다.[11] 실험환경 구성은 크게 PC 구동부, 아두이노 제어부 및 센서부로 나뉘어진다.

OTNBBE_2021_v21n4_89_f0012.png 이미지

그림 10. 안면마스크 모니터링 시스템의 실험 환경

Fig. 10. EXperimental environment of the facial mask monitoring system

Ⅴ. 결론

본 논문에서는 오픈소스 웹기반 인공지능 툴인 티처블머신과 아두이노를 이용하여 마스크 착용여부를 판단하여 안내 메시지 및 알람 등 명령을 수행할 수 있는 마스크 착용 모니터링 시스템을 제안하였다.

데이터 수집 방법 및 티처블 머신의 학습 파라미터인 학습 횟수, 학습률, 배치 크기의 설정에 따른 학습 결과의 정확도와 학습오차의 상관관계, 티처블머신과 아두이노의 통신, 아두이노와 센서 연결 등의 설계 및 구현을 통하여 타당성을 입증하였다. 최적의 학습모델을 도출하기 위하여 학습 파라미터인 학습 횟수, 학습률, 배치 크기의 변화에 따른 학습을 수행하여 최적의 값을 구하였다. 학습 파라미터인 학습회수 50, 배치크기 32, 학습률 0.001의 최적 값으로 학습을 수행하여 정확성은 1, 손실은 0.03의 결과 값을 얻었다. 또한 오픈소스 하드웨어 및 소프트웨어를 사용함으로서 기존의 마스크착용 모니터링 시스템 및 출입통제 시스템에 비해서 저비용으로 누구든 쉽게 구현할 수가 있다.

향후 학습모델 생성시 영상 크기, 학습 데이터양, 영상의 해상도가 티처블 머신의 학습 정확도와 손실에 미치는 영향에 대한 연구과제가 남아있다.

References

  1. Seung Ho Lee, "Deep learning based face mask recognition for access control", Journal of the Korea Academia-Industrial cooperation Society, Vol. 21, No. 8, pp. 395-400, 2020. DOI: https://dx.doi.org/10.5762/KAS.2020.21.8.395
  2. http://www.aitimes.kr/news/articleView.html?idxno=15769
  3. https://blog.deeplearning.ai/blog/the-batch-covid-mask-detection-brain-to-text-translation-ai-chooses-tax-brackets-neural-network-security
  4. Yong-Kwang Kwon, Sun-Young Kim, 'Trend Analysis of IOT Technology Using Open Source', The Journal of The Institute of Internet, Broadcasting and Communication(JIIBC), Vol. 20, No. 3, pp.65-72, Jun, 30, 2020. DOI: https://dx.doi.org/10.7236/JIIBS.2020.20.3.65
  5. https://www.arduino.cc
  6. Eunsil Jang, Jaehyoun Kim, 'Development of Artificial Intelligent Education Contents based on TensorFlow for Reinforcement of SW Convergence Gifted Teacher Competency', Jornal of Internet Computing and Services, Vol. 20, Issue 6, pp.167-177, 2019
  7. UCI(KEPA) : 410-ECN-0101-2021-004-001463176
  8. https://teachablemachine.withgoogle.com
  9. http://www.cdc.go.kr/index.es?sid=a2
  10. https://www.kaggle.com/
  11. Boo-Hyung Lee, 'Arduino Based Sleeping Prevention System Using a Smart Phone Camera', Journal of KIIT, Vol. 13, No. 2, pp. 93-99, Feb. 28, 2015.