-
Teachable Machine으로 집중도 분석하기카테고리 없음 2024. 5. 21. 16:46
[실시간 집중도 분석으로 순수 공부 시간 집계 서비스 : Learning Mate]를 주제로 집중도 분석 서비스를 만들고자 한다. 이전에는 OpenCV, DLIB, MidiaPipe의 Face Mesh등 라이브러리를 사용해서 돌아가는 python 코드를 작성했다면, 웹페이지와 영상을 주고 받는데 조금 어려움이 있고, 많은 사용자가 사용할 때의 서버 문제가 있었다. 보다 간단하게 집중도 분석을 하고 사용자에게 보여주기 위해 Google에서 제공하는 Teachable Machine을 사용하기로 했다.
Teachable Machine은 누구나 머신러닝 모델을 쉽고 빠르고 간단하게 만들 수 있도록 제작된 웹 기반 도구이다. 자바스크립트의 머신러닝 라이브러리인 TensorFlow.js를 사용해 우리가 웹브라우저에서 만든 모델을 학습시키고 실행한다. 가장 큰 장점은 코드를 한 글자도 작성하지 않아도 사진, 음성 파일 만으로 분류 모델을 만들 수 있다. 특히 이미지 모델 및 포즈 모델의 경우 사전 학습된 MobileNet 모델을 통해 학습이 진행되며, 사운드 모델은 발화 명령어 인식기를 기반으로 개발된다.
모델을 만들면 무료로 Google 서버에 게시해 URL을 통해 모델을 어디서든 누구든 모델을 사용해볼 수 있다. 제가 만든 모델은 이 URL을 통해 접속할 수 있습니다. 다른 프로젝트에서 모델을 가져다 사용할 수 있는데, 모델을 TensorFlow.js 모델로 내보낸 다음 Teachable Machine을 호스팅하여 웹사이트 또는 앱에서 호출할 수 있다. 또한 TensorFlow 및 TensorFlow Lite로 변환해 다운로드하고 로컬에서 사용할 수도 있다.
먼저 Teachable Machine 페이지에 들어가면 다음과 같은 화면이 나온다.
아래처럼 굉장히 간단한 과정으로 모델을 만들 수 있다.
바나나가 익었는지 판별하는 모델을 만드는 방법, Snap / Clap 소리를 감지하는 모델을 만드는 방법, 얼굴을 기울이는 방향을 인식하는 모델을 만드는 방법, 등 가이드도 자세하게 준비되어 있으니 감이 잡히지 않으면 한번 살펴봐도 좋을 것 같다.
정말 간단하게 만들 수 있지만 간단하게 튜토리얼을 만들어 보고자 한다.
먼저 메인 페이지에서 [시작하기] 버튼을 누르면 새 프로젝트를 만들 수 있는 창이 뜬다.
이미지 프로젝트를 선택하면 표준 이미지 모델 / 삽입된 이미지 모델 두가지 중 선택할 수 있는데, 웹캠을 활용해서 분류 모델을 만들고자 하거나 대부분의 상황에서는 표준 이미지 모델을 선택하면 된다.
이미지 모델을 선택하면 이미지 분류 모델을 학습시킬 수 있는 창이 열린다.
왼쪽 아래의 클래스 추가 버튼을 누르면 원하는 대로 분류할 클래스를 늘릴 수 있다.
모델을 학습시킬 데이터는 직접 업로드할 수도 있고 웹캠을 통해 바로 사진을 찍어 넣을 수 있다.
웹캠을 사용할 수 있는 상황이라면 사진 파일을 직접 업로드 하는 것 보다 웹캠을 통해 바로 넣는 것을 추천한다.
모델을 학습시킬 데이터가 많을 수록 성능이 좋아지는데, 사진을 직접 찍거나 받아서 업로드하는 것 보다 웹캠을 사용하는 것이 더 빠르게 많은 데이터를 넣을 수 있기 때문이다.
웹캠을 선택하고 카메라 권한을 허용하면 다음과 같이 [길게 눌러서 녹화하기] 버튼이 생성된다.
이 버튼을 누르면 버튼을 누르고 있는 동안 웹캠 영상이 일정 fps 마다 캡처되어 이미지 샘플에 추가된다.
조금 더 세심하게 영상을 받기 위해서 [길게 눌러서 녹화하기] 버튼 오른쪽에 있는 설정 버튼을 선택하면 된다.
웹캠이 캡처될 fps 주기를 설정할 수 있고, 길게 눌러서 녹화하기 대신에 버튼을 누르고 일정 시간동안 녹화를 할 수 있다.
길게 눌러서 녹화하기를 사용하면 버튼을 눌렀을 때 지연시간 후 녹화가 시작되고, 설정된 소요시간 동안 정해진 fps 주기에 맞춰서 이미지 샘플이 추가된다.
왼쪽 위 메뉴 버튼을 누르면 구글 drive에서 저장된 프로젝트를 열 수 있고, 관리할 수 있다.
이미 google 서버에 게시해도 모델을 가져와서 수정할 수 있다.
이미지를 추가해 모델을 모델 학습하기 버튼을 누르면 분류 모델이 학습된다.
바로 모델을 실행해 잘 학습되었는지 확인해볼 수 있다. 만족할 때 까지 클래스를 추가하거나 이미지 샘플을 추가할 수 있다.
고급 버튼을 누르면 에포크, 배치 크기, 학습률 등의 파라미터를 수정하면서 모델을 학습시킬 수 있다.
고급 설정을 클릭하면 다음과 같이 모델 학습 과정의 에포크별 정확도와 손실과 클래프별 정확도 등을 확인하고 파라미터 값을 조정할 수 있다.
최종적으로 모델 내보내기 버튼을 누르면 다음과 같은 화면이 뜬다.
본인이 원하는 모델로 받을 수 있고, 간단하게 모델 내보내기에서 업로드를 선택하고 [모델 업로드]를 클릭하면 아래에 공유 가능한 URL 링크가 나온다.
아래 링크는 데모로 만들어본 모델이라 오류가 조금 있지만, Teachable Machine의 모델을 업로드하면 어떻게 확인할 수 있는지 볼 수 있다.
https://teachablemachine.withgoogle.com/models/IiLG2OMFg/
Teachable Machine
Train a computer to recognize your own images, sounds, & poses. A fast, easy way to create machine learning models for your sites, apps, and more – no expertise or coding required.
teachablemachine.withgoogle.com
Teachable Machine에서 핸드폰 사용 여부, 사람 객체 인식, 집중, 졸음을 각각의 class로 Classification 분류 학습시켜 구글 서버에 올라간 분류 모델 URL에서 각 요소별 퍼센트 값을 가져와 Concentration 예측 값으로 그래프를 실시간으로 그려 보여준다.