*정회원, 상지대학교 컴퓨터정보공학부
**정회원, 한라대학교
접수일자 2021년 4월 29일, 수정완료 2021년 7월 6일 게재확정일자 2021년 8월 6일
Received: 29 April, 2021 / Revised: 6 July, 2021 / Accepted: 6 August, 2021
*Corresponding Author: [email protected]
Dept. of Computer Engineering, Sangji University, Korea https://doi.org/10.7236/JIIBC.2021.21.4.89
JIIBC 2021-4-13
오픈소스 기반 안면마스크 착용 모니터링 시스템 설계 및 구현
Design and Implementation of Facial Mask Wearing Monitoring System based on Open Source
구동진*, 장준영**
Dong-Jin Ku*, Joon-Young Jang**
요 약 코로나바이러스-19는 전 세계에서 확진자가 폭증하고 있으며 수많은 사망자를 발생시켰다. 마스크 착용은 감염 예방에 매우 중요하다. 버스, 지하철 등 공공장소에서 마스크 착용 권유로 인한 사건ㆍ사고가 발생하고 있으며 심각한 사회문제로 대두되고 있다. 이런 문제점을 해결하기 위해서 본 논문에서는 오픈소스 기반 안면 마스크 착용 모니터링 시스템을 제안한다. 오픈소스 소프트웨어인 웹기반 인공지능 툴 티처블머신과 오픈소스 하드웨어 아두이노를 사용하였 다. 마스크 착용여부를 판단하여 안내 메시지 및 알람 등 명령을 수행한다. 티처블머신의 학습파라미터 학습횟수 50, 배치크기 32, 학습률 0.001의 최적의 값으로 학습을 하여 정확성 1, 학습오차는 0.03의 결과 값을 얻었다. 웹기반 인공 지능 툴 티처블머신과 아두이노를 이용하여 마스크 착용여부를 판단하여 안내 메시지 및 알람 등 명령을 수행할 수 있는 마스크착용 모니터링 시스템을 설계 및 구현하여 타당성을 입증하였다.
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.
Key Words : Arduino, COVID-19, Face Mask Recognition, Open Source, Teachable Machine
Ⅰ. 서 론
2019년에 중국에서 처음 발발한 코로나바이러스 -19(COVID-19)는 전 세계에서 확진자가 폭증하고 있 으며 수많은 사망자를 발생시켰다. 코로나바이러스의 전 파경로는 비말과 콧물, 가래 등의 호흡기 분비물로 알려 져 있어 마스크 착용이 감염 예방에 매우 중요하다. 하지 만 국가 차원의 마스크 착용 권고에도 불구하고 여전히 일부 사람들이 마스크를 착용하지 않은 채 건물에 출입 하는 일이 발생하고 있어 많은 감염 위험이 우려되고 있 다.[1] 현재는 코로나바이러스의 영향으로 마스크 착용이 의무화되었다. 공공장소, 대중교통, 학교, 회사 등 사람 들이 밀집할 수 있는 곳에서는 반드시 마스크를 착용해 야 한다. 대다수 사람들이 규칙을 잘 지키고 있다. 하지 만 버스, 지하철 등 공공장소에서 마스크를 착용하지 않 은 사람에게 착용할 것을 권유하자 폭행, 폭언 등 불미스 러운 일들이 발생하고 있어 심각한 사회적인 문제로 대 두되고 있다.
최근에는 기업들에서 인공지능을 이용한 마스크 착용 유무를 검출하는 서비스들을 개발하고 있다. LG CNS는 최근 서울 마곡 본사 출입 게이트에 얼굴인식 출입통제 서비스를 이용하여 마스크를 착용하지 않으면 게이트 통 과를 못하는 시스템을 도입하였다.[2] 이러한 서비스는 해 외에서도 마찬가지 이다. 최근 프랑스 정부도 파리와 칸 등의 도시에서 대중교통을 이용할 때 마스크의 착용여부 를 감시하기 위해 폐쇄회로카메라(CCTV)에 서비스를 도 입하고 있다.[3]
본 논문에서는 오픈소스 소프트웨어인 웹기반 인공지 능 툴인 티처블 머신과 오픈소스 하드웨어인 아두이노를 이용하여 마스크 착용여부를 판단하여 안내 메시지 및 알 람 등 명령을 수행할 수 있는 마스크착용 모니터링 시스템 을 제안한다. 마스크 착용 여부의 학습모델은 웹기반 인공 지능 툴인 티처블 머신의 학습 파라미터인 학습 횟수, 배 치 크기, 학습률을 변화시켜 최적의 값을 구하였다. 개인 PC, 노트북, 태블릿 등에서 티처블 머신을 사용 가능하며 오픈소스 하드웨어인 아두이노와 연동하여 마스크 착용여 부를 판단하여 안내 메시지 및 알람 등 명령을 수행할 수 있다. 오픈소스 하드웨어 및 소프트웨어를 사용함으로써 기존의 마스크착용 모니터링 시스템 및 출입통제 시스템 에 비해서 저비용으로 누구나 쉽게 구현할 수 있다.
논문 구성은 다음과 같다. 2장에서는 오픈소스 하드웨 어 및 아두이노, 오픈소스 소프트웨어 및 웹기반 인공지 능 툴인 티처블 머신에 대하여 설명한다. 3장에서는 마
스크 착용 모니터링 시스템의 전체 구성도, 동작 알고리 즘, 소스코드에 대하여 설명하고 4장에서는 티처블 머신 의 학습 파라미터인 학습 횟수, 배치크기, 학습률 변화에 대한 최적의 실험 결과 및 전체 시스템 실험결과에 대하 여 설명한다. 5장에서는 제안한 마스크 착용 모니터링 시스템의 타당성 및 결론을 맺는다.
Ⅱ. 오픈소스
1. 오픈소스 하드웨어오픈소스 하드웨어는 각종 하드웨어 제작에 필요한 회 로도 및 관련 설명서, 인쇄회로 기판 도면 등을 공개함으 로써 누구나 이와 동일하거나 혹은 이를 활용한 제품을 개발할 수 있도록 지원하는 하드웨어를 의미한다. 하드 웨어의 디자인을 공개함으로써 누구든지 이를 바탕으로 하드웨어 제작 방법을 익힐 수 있도록 하는 동시에 수정, 배포 혹은 제조할 수 있도록 허용한다. 오픈소스 하드웨 어의 가장 큰 특징은 기술에 대한 특허 라이선스가 없고 제품 개발에 필요한 리소스가 공개되어 있다는 점이다.
부품을 직접 구매해 조립하기 때문에 완성형 또는 표준 형 제품에 비해 가격도 저렴하고 형태 변경을 통해 전혀 새로운 형태의 커넥티드 기기를 탄생시킬 수도 있다. 제 어나 조작에 필요한 소프트웨어 역시 주로 오픈소스 형 태로 공개되어 용도에 맞춰 직접 프로그래밍도 가능하 다.[4] 오픈소스 하드웨어는 아두이노, 라즈베리 파이, 비 글보드, 갈릴레오 등이 있다. 이중에서 아두이노는 저렴 한 비용, 쉬운 접근성, 무한 확장성 등의 장점으로 가장 널리 사용된다. 그림 1은 오픈소스 아두이노 하드웨어 플랫폼 예시를 나타내고 있다.
그림 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]
그림 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]
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
unsigned int time;
LiquidCrystal_I2C lcd(0x27,16,2);
Servo myServo;
char pirdata=0,data,old_data=0;
int pir = 12;
int piezo = 7;
int led1 = 2, led2 = 3, led3 = 4;
void setup() { Serial.begin(9600);
pinMode(pir, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(piezo, OUTPUT);
lcd.init(); lcd.backlight();
myServo.attach(9);
myServo.write(0);
}void loop() { noTone(piezo);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
pirdata = digitalRead(pir);
if(pirdata == HIGH) { if(Serial.available())
Ⅲ. 모니터링 시스템
그림 3은 본 논문에서 사용한 안면마스크 착용 모니터 링 시스템의 전체 구성도를 나타내고 있다. PC에서는 웹 캠을 통해 입력된 영상으로 마스크 착용 유·무를 판단하 는 학습 모델을 생성한다. p5 시리얼 프로그램은 아두이 노 보드와의 PC와의 통신포트를 오픈시켜놓는다. 이후 아두이노 보드에서 PIR 센서를 통해 사람이 인식이 되면 p5 프로그램에 티처블 머신에서 미리 만들어둔 학습모델 을 사용하여 웹캠을 통해 들어오는 실시간 영상을 확인 하여 마스크 착용유무를 아두이노 보드로 전송후 그에 따른 메시지 전송 및 알람 등의 명령을 수행한다.
그림 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!’ 라는 메 시지를 출력하며 부저를 울려준다.
그림 4. 안면마스크 착용 모니터링 시스템 알고리즘
Fig. 4. Algorithm of the Face Mask Wear Monitoring System
그림 5는 안면마스크 착용 모니터링 시스템의 소스코 드를 나타내고 있다.
{ data = Serial.read();
if(old_data != data) { if(data == '1') //mask
{ lcd.clear(); lcd.setCursor(0,1);
lcd.print("Have a nice day!");
myServo.write(179);
digitalWrite(led1, LOW);
tone(piezo,523); delay(200);
tone(piezo,587); delay(200);
tone(piezo,659); delay(200);
digitalWrite(led1, HIGH);
myServo.write(0);}
else if(data == '2') //nomask { lcd.clear(); lcd.setCursor(0,1);
lcd.print("Mask error!");
digitalWrite(led2, LOW);
tone(piezo,988); delay(400);
digitalWrite(led2, HIGH); } else if(data == '3')
{ lcd.clear(); lcd.setCursor(0,1);
lcd.print("Look at the front");
digitalWrite(led3, LOW);
tone(piezo,788); delay(400);
digitalWrite(led3, HIGH);}
old_data = data; }}}}
그림 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)는 마스크가 잘못 착용된 이미지 예시를 각각 보여주고 있 다.
그림 7(a)와 그림 7(b)는 티처블 머신의 데이터 수집 과 프리뷰 과정에서 파일 업로드와 웹캠 두 가지 방법을 이용한 사용자 인터페이스 실험 환경을 각각 보여주고 있다. 티처블 머신의 영상, 소리, 자세 프로젝트 중에서 영상 프로젝트를 이용하였다. Class 1에는 정상적으로 마스크를 착용한 이미지, Class 2에는 마스크를 착용하 지 않은 이미지, Class 3에는 마스크를 잘못 착용한 이미 지를 사용하였다. 학습이 완료된 후에는 preview를 통 해 임의로 선정한 마스크를 정상적으로 착용한 이미지,
마스크를 미착용한 이미지, 마스크를 잘못 착용한 이미 지를 업로드 및 웹캠을 이용하여 정확도를 확인하였다.
(a) normal wearing
(b) Incorrect wearing 그림 6. 마스크 착용 이미지 예시
Fig. 6. Example image of wearing of masks
(a) File upload
(b) Webcam
그림 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까지 변화하면서 학습을 수행하여 최적의 학습 횟수를 구하였다.
Epochs Learning
Time(sec) Accuracy Loss
10 12 0.98 0.055
20 26 0.99 0.055
50 64 0.99 0.038
100 130 0.99 0.050
150 190 0.99 0.052
200 258 0.98 0.072
※ Experiment Condition ;Epochs : 2,10,20,50,100,150,200 / ㅤ Batch Size : 16 / Learning Rate : 0.001
표 1. 학습회수 변화에 따른 학습시간, 정확성, 학습오차 Table 1. Learning time, accuracy, and loss due to
changes I the number of learning
표 2는 배치 크기 변화에 따른 학습시간, 정확성, 학습 오차을 나타내고 있다. 배치 크기는 학습을 한번 반복하
는데 나누어진 데이터 크기를 말한다. 티처블 머신의 기 본 설정인 배치 크기 16, 32, 64, 128, 256, 512로 학습 을 수행하였다.
Batch
Size Learning
Time(sec) Accuracy Loss
16 66 0.99 0.035
32 48 1 0.005
64 43 1 0.025
128 42 0.99 0.040
256 43 0.99 0.045
512 47 0.99 0.045
※ Experiment Condition ;Epochs : 50 /
ㅤ Batch Size : 16,32,64,128,256,512 / Learning Rate : 0.001 표 2. 배치 크기 변화에 따른 학습시간, 정확성, 학습오차 Table 2. Learning time, accuracy, and loss due to
changes I the number of learning
표 3는 학습률 변화에 따른 학습시간, 정확성, 손실을 나타내고 있다. 학습률은 경사 하강법으로 학습을 진행 할 때 학습변동률을 의미한다. 학습률은 0.0001, 기본설 정값 0.001, 0.01, 0.05, 0.1의 값을 설정하여 학습을 진행하였다.
Learning
Rate Learning
Time(sec) Accuracy Loss
0.0001 49 0.98 0.06
0.001 50 0.99 0.03
0.01 49 0.99 0.07
0.05 50 0.35 6.2
0.1 49 0.32 6.2
※ Experiment Condition ;Epochs : 50 / Batch Size : 32 / Learning Rate : 0.0001,0.001,0.01,0.05,0.01
표 3. 학습률 변화에 따른 학습시간, 정확성, 학습오차 Table 3. Learning time, accuracy, and loss due to
changes I the number of learning
학습 파라미터인 학습횟수, 배치크기, 학습률 변화에 따른 학습시간, 정확성, 학습오차 티처블머신 학습을 통 하여 최적의 값을 각각 구하였다. 학습회수 50, 배치크기 32, 학습률 0.001의 최적 값을 적용 후 학습을 수행하 여 정확성 1, 손실 0.03의 결과 값을 얻었다. 그림 8는 학습파라미터인 학습횟수, 배치크기, 학습률 변화에 대 한 학습 결과를 나타내고 있다. 학습오차와 정확성을 티 처블머신에서 그래프로 확인할 수 있다. 학습이 진행됨 에 따라 정확성과 학습오차를 그래프 값과 경향을 자세
let portName = 'COM3';
let imageModelURL =
'https://teachablemachine.withgoogle.com/models/5mybKjG 1t/';
let serial;
let classifier;
let video;
let flippedVideo;
let label = "";
function preload() {
classifier = ml5.imageClassifier(imageModelURL + 'model.json');
}
function setup() {
serial = new p5.SerialPort();
serial.list();
serial.open(portName);
serial.on('list', gotList);
createCanvas(640, 520);
video = createCapture(VIDEO);
video.size(640, 520);
video.hide();
flippedVideo = ml5.flipImage(video) classifyVideo();
}
function draw() { background(0);
image(flippedVideo, 0, 0);
fill(255);
textSize(16);
textAlign(CENTER);
if (label == '1') {
text("have a nice day", width / 2, height - 4);
} else if (label == '2') {
text("Mask error!", width / 2, height - 4);
} else if (label == '3') {
text("Look at the front", width / 2, height - 4); } }
function classifyVideo() {
flippedVideo = ml5.flipImage(video) classifier.classify(flippedVideo, gotResult);
}
function gotResult(error, results) { if (error) {
console.error(error);
return;
}
label = results[0].label;
print("Result:", String(results[0].label)) serial.write(String(results[0].label));
classifyVideo();
}
function gotList(thelist) {
console.log("List of Serial Ports:");
for (let i = 0; i < thelist.length; i++) { console.log(i + " " + thelist[i]);
} }
히 볼 수 있으므로, 매개변수를 조정하여 튜닝하거나 학 습 결과를 확인하는데 사용할 수 있다.[9]
(a) accuracy per epochs (b) Loss per epochs 그림 8. 티처블 머신의 학습 결과
Fig. 8. Learning result of teachable machine
그림 9의 sketch.js 소스는 티처블머신으로 만든 학습 모델을 사용하여 웹캠에서 수집되는 실시간 영상을 판단 하여 마스크의 착용유무를 아두이노 보드에 전송 할수 있도록 프로그램 하였다. 프로그램에서 음영처리된 부분 은 사용한 기존의 p5 프로그램에서 제작한 학습모델을 사용하여 통신을 하기 위해 사용자의 컴퓨터 환경에 맞 게 변경한 부분들을 나타내고 있다.
그림 9. sketch.js 소스코드 다운로드
Fig. 9. Download the source code as sketch.js 그림 10는 안면마스크 모니터링 시스템의 전체 실험 환경을 보여주고 있다.[11] 실험환경 구성은 크게 PC구 동부, 아두이노 제어부 및 센서부로 나뉘어진다.
그림 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=1
5769
[3] https://blog.deeplearning.ai/blog/the-batch-covid-ma sk-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.
저 자 소 개 구 동 진(정회원)
∙ 1994년 : 상지대학교 전산학 학사
∙ 2011년 ~ 2013년 : 상지대학교 컴퓨 터정보공학 공학석사
∙ 2015년 ~ 2017년 : 상지대학교 컴퓨 터정보공학 박사수료
∙ 2018년 ~ 현재 강원문화관광발전연구 소 소장
∙ 관심분야 : Smart City, AI, Open Source Platform
장 준 영(정회원)
∙ 2003년 : 한라대학교 전기전자제어공 학부 학사
∙ 2010년 : 한라대학교 대학원 공학석사
∙ 2014년 ~ 2017년 : 세명대학교 박사 수료
∙ 2018년 ~ 현재 한라대학교 겸임교수
∙ 관심분야 : AGV, AI, Open Source Platform, Control theory