수행기록퀘스트5

Quest5: 새로 생성한 학습된 Model을 STM32Cube.AI를 사용하여 프로젝트에 적용하기
2022. 9. 21 (수) 02:18 최종수정 2022. 9. 24 (토) 11:24 칩헤드 조회 891 좋아요 1 스크랩 0 댓글 0

> B-L475-IOT01A1 보드로 로깅한 HAR Dataset을 FP-AI-SENSING1에서 제공하는 Tensorflow Script에 적용하여
> 새로운 Neural Network Model을 생성합니다. 새롭게 만들어진 Model에 대한 Weight 값들을 기존 프로젝트의
> Weight 값과 대체하여 Build를 진행해서 FP-AI-SENSING1에서 Default로 제공하는 Model과의 차이점을
> 확인해 보는 단계입니다. Mobile App과 B-L475-IOT01A1 보드를 이용하여 Human Activity Recognition 을
> 진행하는 짧은 영상을 레코딩하여 업로드합니다.

 

Quest5: 새로 생성한 학습된 Model을 STM32Cube.AI를 사용하여 프로젝트에 적용하기

 

- 목 차 - 

1. 새로 생성한 모델 정보
1.1 그래프 (=모델 구조 ) 내역
1.2 가중치 (=weight) 정보
2. 모델로부터 그래프 및 가중치 구성하는 새 소스코드 생성
3. 소스코드로 펌웨어 이미지 생성 및 플래싱  
4. 데모 동영상
5. 실험 및 분석

 


 

1. 새로 생성한 모델 정보 

IOT보드를 이용하여 수집한 센서 데이타를 .csv 포맷으로 저장후, 이  파일들을 이용하여 .h5 파일 형식의 Keras모델을 생성하였습니다. 

STm32.CUBE MX 를 이용하여 생성한 Keras 모델로부터 그래프 (=모델구조)와 가중치(Weight) 정보를 추출하였습니다. 

새로 생성한 Keras 네트웍 모델의 요약  정보는 다음과 같습니다. 

  • model_name       : har_IGN 
  • model_hash        : b029ccbbd6cc13fe99af649e9cf07652 
  • input                : input_0 [72 items, 288 B, ai_float, FLOAT32, (24, 3, 1)] 
  • input (total)        : 288 B 
  • output              : dense_2_nl [4 items, 16 B, ai_float, FLOAT32, (4,)] 
  • output (total)      : 16 B 
  • params #           : 3,064 items (11.97 KiB) 
  • macc                : 14,388 
  • weights (ro)       : 12,256 (11.97 KiB)  
  • activations (rw)   : 1,728 (1.69 KiB)  
  • ram (total)        : 2,032 (1.98 KiB) = 1,728 + 288 + 16 

 

1.1 그래프 (=모델 구조 ) 내역

그리고, 제가 사용한 그래프의 모델구조는 다음과 같습니다. 모델의 총 파라메타수 즉, 모델 사이즈는 3,064 입니다.
동작시의 메모리 용량은 대부분 3차원 텐서들의 컨볼류션 연산처리에 1,632, 그리고, dense 즉 모든 노드들을
연결하는 Fully Connected layer 작업에 1차원 텐서들이 출력 피쳐맵으로 구성되었습니다.  기대하는대로 이 작업에
가장 큰 10,416 공간의 ROM 공간을 이용하는 것을 볼수 있었습니다. 

 

1.2 가중치 (=weight) 정보

이번 Custom Keras Model에 적용한 가중치 정보는 다음과 같습니다. 

 

 


 

2. 모델로부터 그래프 및 가중치 구성하는 새 소스코드 생성

 STM32 CUBE MX  툴을 이용하여 추출 정보을 기반으로 har_ign.c 및 har_ign_data.c 의 소스코드를

generate하였습니다. 이후 이 코드를 기반으로 펌웨어 이미지를 만들고, 만든 펌웨어 이미지를 IoT

개발보드에 플래싱하였습니다. 최종적으로 새롭게 생성한 데이타셋으로 학습한 모델을 이용하여

동영상을 레코딩하였습니다. 

 

 


 

3. 소스코드로 펌웨어 이미지 생성 및 플래싱  

다음은 Custom Keras 모델로부터 그래프 및 가중치정보를 추출하여 소스파일을 (예제: har_ign.c/h , har_ign_data.c/h )생성한
스크린샷입니다. 저의 경우 Custom Keras 모델로 부터 생성된 소스코드들이 정상적으로 컴파일 되도록  하기 위하여, 
소프트웨어 버젼들을 CondaPython 3.7  + Kerase 2.3.1 + Tensorflow 1.14 + STM32 Cube AI 5.0으로 구성하였습니다. 

 


 

4. 데모 동영상

IoT 개발보드에 최종적으로  펌웨어 이미지를 플래싱후에 HAR (Human Acitivy Recognition)의 Accuracy를 측정한 동영상입니다. 

https://youtu.be/BsDBla5TOGU

 

 


 

5. 실험 및 분석 

 실험에서 사용된 모델의 Matrix  Accuracy  수치는 다음과 같습니다.  Stairs 모델의 경우에 실제 계단에서의  일정한
속도로 오르락 내리락하여 유의미하게 수집한 수치로 학습을 하고, Overfitting이 되지 안는 범위에서 기존보다
epoch 횟수를 조금더 올려서 accuracy를 높이는 노력을 해야 하겠다는 생각을 하였습니다. 

  • * Jogging     : 97.3 %
  • * Stationary  : 98.59 %
  • * Stairs        : 68.53 %
  • * Walking     : 85.8 %

 

이상입니다. 

 

 

로그인 후
참가 상태를 확인할 수 있습니다.