Eye-Remocon Tech Blog Home Edge Project

-

Modify Storage.go file

[DataStorage]Replace getDeviceID functions in storage.go file with helper.go

1️⃣ Modify build.sh and tools/create_fs.sh

K-011

  • Description : We have to replace getDeviceID in storage.go file with GetDevice function. So, I called GetDevice() in the helper.go file and changed it.
  • Type of change : Code cleanup/refactoring
  • PR
  • Related Issue : #321


2️⃣ 컨트리뷰션을 위한 과정

  1. fmt workflow 오류 발생
    • 링크
    • 해결책 : go fmt 사용
      • $ go fmt ./internal/…
    • fmt 사용하면 자동으로 위치, 띄어쓰기 포맷을 변경해줌 - $ git diff
    • 수정이 필요한 곳을 확인 가능
  2. 내부 함수 getDeviceID()와 외부 함수 GetDeviceID()의 반환값이 같지 않음
    • 해결책 : logmgr로 로그를 찍어 같은 반환값인지 확인
    • logmgr 사용하기 위해서 링크 EdgeX Foundry 활용위해 컨테이너 빌드
      • 다른 이슈 : logmgr로 로그 확인시 반환값이 빈칸으로 아무런 값이 나타나지 않음 image
      • 해결책 : deviceID가 DB에 저장되기 전에 init()이 호출되어 값이 없음. 따라서 StartStorage()에서 먼저 GetDeviceID()에서 호출하는 위치 조정 필요

Docker Container

인식모델 컨테이너화

1️⃣ Docker

  1. Docker Image Build
    $ docker build --tag eye-remocon/pose_detection:node .
    
  2. Docker Image Run
    $ docker run -d -p 3500:3333 eye-remocon/pose_detection:node
    
  3. 실행 결과 (실행된 로그 보는 명령) 1) 실행중인 컨테이너 ID 확인
    $ docker ps -all
    

2) 로그 확인

$ docker logs --follow [컨테이너 ID]

3) 결과
image

HW-control Server

AWS Rekognition 서비스와 결합

1️⃣ Flask 활용 라즈베리파이 LED 중개 서버

  • arduino/led.ino
    • 기존의 3컬러에서 프로젝트 내용에 맞춰서 7가지 감정에 도움을 주는 색에 맞춰 RGB색 변경할 수 있도록 하였습니다.
  • led/led.py
    • def color_change(emotion, power): 조명의 전원(power=True)가 on인 상태에서만 해당 감정에 맞춰 색 변경에 대한 시리얼 통신을 하도록 구현하였습니다.
    • def off(): LED 전원을 off 하도록 구현하였습니다.
    • def on(): LED 전원을 on 하도록 구현하였습니다.
  • main.py
    • def emotion_change(): 감정인식 후 LED 색 변화 요청이 올 때 서버에서 동작하는 것을 구현하였습니다.
      LED가 on(power=True)인 상태에서만 LED 색이 변경됩니다.
    • def pose_change(): 행동인식 후 HW 컨트롤 요청이 올 때 서버에서 동작하는 것을 구현하였습니다.
      박수동작을 통해 LED 전원을 ON/OFF 합니다(POWER 값도 변경)
    • def emergency(): 응급상황 인식 후 led가 깜박일 수 있는 기능을 구현하였습니다.
  • 처음 LED 연결시 LED 전원(Power = True) 즉, 켜져 있는 상태입니다.
  • 박수동작 인식했을 때 LED전원(power=True) on인 상태라면 power=False로 변경하고 off()함수를 통해 LED 전원을 끄도록 하였습니다.


2️⃣ 감정인식의 7가지 감정에 도움줄 수 있는 색

K-006
K-007

Emotion Detection Model-4

Pose Detection 성능 향상

1️⃣ Pose Detection 응답 시간 단축

  1. init() 함수를 통해서
    • 미리 학습된 모델을 불러온 후 사진 요청이 들어오면 pose detection 값을 반환하도록 구현
    • 학습된 모델을 불러오는데 대략 3초정도 시간이 소요됐고, 3초를 단축
  2. init() 함수 내에 canvas 설정 및 불러오는 부분을 미리 동작하도록 구현
    • 0.5초의 시간도 단축할 수 있었습니다. image
  3. 실제 img.onload 부분에서 해당 이미지가 pose detection에 적용될 수 없어서 pose predict value가 항상 동일한 값이 나오는 오류 발생
    • GitHub 주소
    • 공식 teachablemachine-community GitHub에서 해당 이슈에 대해서 찾아보고 문제를 해결하여 정확한 pose detection 값을 반환 받도록 구현

2️⃣ 가만히 있는 Default pose 추가해 모델 재학습

  • 모든 이미지를 기존에 세 가지 행동(쓰러짐, 식사, 박수)로 인식하려는 경향이 있어 아무것도 안 하는 자세(stand)를 추가하여 다시 학습

테스트 결과

  1. stand
    image
  2. emergency
    image
  3. eat
    image
  4. clap
    image