콘테스트 프로젝트 진행 상황
각 Quest를 단계적으로 완성하는 프로젝트입니다.
Quest 1: Quest1 STM32Cube.AI 개발 환경 구축하기
2022.08.04
1.FP-AI-SENSING1 function pack에서 제공하는 예제용 Neural Network Model중에서 한 개를 선택하여 STM32Cube.AI 툴의 Analyze 기능을 통해 출력된 화면을 Capture하여 제출합니다.

2.FP-AI-SENSING1 function pack에서 제공하는 예제용 Neural Network Model 중에서 한 개를 선택하여 STM32Cube.AI 툴의 Show graph 기능을 통해 출력된 화면을 Capture하여 제출합니다.

3.Analyze의 결과인 network_analyze_report.txt를 제출합니다.
- 첨부파일로 첨부
이상입니다.
Quest 2: Quest2 - Neural Network Model 생성 개발 환경 구축하기
2022.08.09
1. Accuracy 그래프를 Capture하여 제출합니다.

2. Model Loss Function 그래프를 Capture하여 제출합니다.
.jpg)
3. Confusion matrix 그래프를 Capture하여 제출합니다.

4. ..\HAR\results\ 경로에서 아래와 같이 생성된 Model 파일을 STM32CubeMX에 STM32L475VGTx로 새프로젝트를 생성하여 STM32Cube.AI로 Network을 추가하여 Analyze 결과를 제출합니다.

5. Analyze 결과 화면에서 표기된 Creating txt report file 경로에서 network_analyze_report.txt 파일을 제출합니다.
Quest 3: Quest 3 보드에 바이너리 파일 라이팅하기
2022.09.07
안타깝게도 플랫폼 보드지급 명단에 포함되지 않았는데요
퀘스트 첼린지에 계속 참여해야 남는것이 있을것 같아 "B-L475E-IOT01A"보드를 구입하여 진행하였습니다.
1. B-L475E-IOT01A1 보드에 연결된 BLE 모듈인 BlueNRG의 Device Name을 변경하고 “STBLESensor” Mobile App에서 Device 검색화면을 Capture 후 제출합니다.

2. “STBLESensor” Mobile App과 Board를 BLE로 연결하고 Activity Recognition을 선택하여 보드를 손으로 흔들어 보면서 Activity Recognition의 결과가 달라지는 것을 동영상으로 간단하게 촬영하여 제출합니다.
URL : https://youtu.be/nMbjGyCgFhM
이상입니다.
Quest 4: Quest4 - 가속도 센서 활용하여 AI 모델을 위한 Dataset 구성하기
2022.09.13
안녕하세요
Quest4 수행결과입니다.
안드로이드 모바일 어플의 구성이 약간 달라서 진행과정을 같이 올립니다.
1. 모바일과 Device를 BLE로 연결한 뒤
"Data Log"의 "AI Data Log"를 선택합니다.

2. AI Data Log에 진입하면 "Accelerometer"를 선택하고 아래로 Swipe하여 "Inertial sensors are sampled with a frequency of"를 26Hz로 선택하고 "CONTINUE"를 누릅니다.

3. Log Setting (우측 상단 "..." 선택"에서 "Log storage"를 "CSV File"인지 확인합니다(Default 인것 같네요)

4. 좌측 하단의 "ADD LABEL"을 눌러 라벨을 추가시켜줍니다.

5. 라벨을 모두 추가시킨 후 Start Logging을 눌러 로깅을 시작합니다.

저는 각 라벨별로 10회정도 측정하였습니다.
이상입니다.
Quest 5: Quest5 새로 학습된 모델을 프로젝트에 적용하기
2022.09.22
안녕하세요
Quest4에서 획득한 센서데이터를 이용하여 모델을 생성한 후 개발보드(B0L475E-IOT01A)에 적용하였습니다.
진행중 안내해 주신내용과 같이 Python 3.6버전 Keras 2.2.4버전을 적용하여 수행했습니다.
1. Python3.6 및 Keras 2.2.4 설치
Keras의 버전은 체크표시 부근에서 마우스 우클릭을하면 팝업메뉴가 나타나 버전을 선택할 수 있습니다.

2. Quest4에서 수집한 센서데이터를 이용하여 파이참에서 새로운 모델을 생성합니다.
Python과 Keras버전이 변경되었으므로 파이참의 환경설정을 버전에 맞게 다시 해주어야 합니다.

3. CubeMX를 열어 B-L475E-IOT01A보드를 선택하고 소프트웨어 패키지에서 X-CUBE-AI를 추가합니다.
버전은 5.0.0을 선택합니다.

그 후 2번에서 생성한 새로운 모델을 X-CUBE-AI에 추가하여 Analyze를 수행하여 정상적으로 수행되는지 확인합니다.


정상적으로 모델분석이 완료되었는데 인식률이 의미하는것은 좀더 공부해봐야 할것같네요.
4. 이제 CubeMX에서 generate Code를 수행하여 코드를 생성합니다.
사용할 소스파일(har_ign등)은 프로젝트 폴더\X-CUBE-AI\App에 생성되었습니다.

이제 har_ign.c/h har_ign_data.c/h 파일을 FP-AI-SENSING1 프로젝트 폴더로 복사합니다.
.h 파일은 Inc폴더에, .c 파일은 Src폴더에 복사해 넣습니다. (예전 파일이 있는 위치)

5. 이제 CubeIDE를 실행한뒤 빌드를 수행합니다.
빌드된 바이너리를 CubeProgrammer를 이용하여 타겟보드에 다운로드합니다.
그뒤 모바일과 연결하여 동작이 수행되는지 확인합니다.
서있는 것, 걷기 동작, 뛰기동작을 수행하였을때 모바일 앱에서 인식하는것을 확인 할 수 있습니다.
이상입니다.
Quest 6: Quest6 - 숫자 인식
2022.10.10
Quest 6 – 가속도 센서를 이용한 숫자 인식
안녕하세요 제이비입니다.
먼저 유익한 퀘스트 첼린지를 준비해주신 분들께 감사드립니다.
퀘스트6을 수행하면서 처음에는 오디오 입력을 통한 화자인식, 가속도 센서를 이용한 영문인식을 수행해 보려했으나 머신러닝에 대한 지식과 파이썬에 대해 무지하다 보니 너무 큰 목표를 세운것을 깨달았습니다.
마감일이 다가옴에 따라서 점점 할 수 있는 것이 많이 않다는 것을 느껴 기존 퀘스트를 진행하면서 사용한 HAR을 이용하여 숫자를 인식하는 방법을 택했습니다.
* 구성도

* 데이터 로깅
Quest5와 동일하게 학습을 수행했습니다.
Jogging은 숫자 3, Walking은 숫자 4, Standing은 9, Downstairs는 0으로 정하고 학습을 하였습니다.
WISDM_ar_v1.1_raw.txt파일 내에는 Sitting, Standing, Upstairs Downstairs 등이 더 있었지만 “PrepareDataset.py”에서 Stationary와 Stairs로 매칭시켜버려 더 많은 숫자를 인식해보려했지만 4개가 한계인것으로 판단했습니다.
STM32의 소스를 분석중 인식된 결과값을 알려주는 인자가 HAR에서 정한 인자와 약간 차이가 나나는 것 발견하였습니다.
“har_Processing.h”에 HAR_output_t는 다음과 같이 정의되어있습니다.
typedef enum
{
HAR_NOACTIVITY = 0x00,
HAR_STATIONARY = 0x01,
HAR_WALKING = 0x02,
HAR_FASTWALKING = 0x03,
HAR_JOGGING = 0x04,
HAR_BIKING = 0x05,
HAR_DRIVING = 0x06,
HAR_STAIRS = 0x07
} HAR_output_t;
위 정의된 값과 AI에서 정의된 데이터셋의 연관성이 어떻게 되는것인지는 계속 분석해 봐야할것봐야할 것같습니다.
- PrepareDataset.py
if self.dataset == 'WISDM':
if self.merge:
self.classes = classes = [ 'Jogging', 'Stationary', 'Stairs', 'Walking' ]
이제 AI에서 생성된 모델을 STM32Cube.AI에 임포트하여 타겟보드에 다운로드한뒤
그 결과를 시험해보았습니다.
역시나 HAR로 숫자를 인식하기에는 역부족이었으며 “WISDM_ar_v1.1_raw.txt”의 데이터는 숫자를 인식하는 데이터가 아니라 당연한 결과인것으로 보입니다. (실제 WISDM_ar_v1.1_raw.txt의 데이터를 숫자 모션을 취합한 데이터로 교체해보았는데 데이터량이 부족해서인지 학습이 제대로 되지 않는것처럼 보였습니다)
* 시현 영상
<iframe width="606" height="1078" src="https://www.youtube.com/embed/js5P2aD1JeA" title="E4DS STM32Cube.AI Quest 6" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
손등에 타겟보드를 장착하고 숫자를 써보았지만... 역시나 AI부분이 맞지않아 잘 표시하지 못하네요.
AI지식이 너무 부족하여 간신히 퀘스트를 따라가기에 바빴는데 머신러닝의 전체적인 방법을 익힐 수 있는 유익한 첼린지였다고 생각합니다.
AI모델 및 파이썬은 추후 더 공부하여 STM32에서 다양한 머신러닝을 구동시킬수 있도록 해봐야겠습니다.
준비해주신 관계자분, 퀘스트를 수행사신 분들 모두 고생하셨습니다.
프로젝트 갤러리
프로젝트 제작 과정과 최종 결과물을 담은 이미지 갤러리입니다.





.jpg)













프로젝트 자료실
프로젝트를 재현하거나 학습하는데 필요한 모든 자료를 제공합니다.
등록된 자료가 없습니다.
프로젝트 소개
아직 등록된 프로젝트 소개가 없습니다.
코드 & 회로도
등록된 코드/회로 자료가 없습니다.

.jpg)
마이너리 리포트 영화를 순간 회상하였습니다. ST보드의 데이타 학습시간 즉 epoch 횟수를 overfitting이 되지 않는 범위까지 늘려보면 어떻할까? 합니다. :)