종료198명 참가중

STM32 퀘스트 챌린지 : STM32Cube.AI

프로젝트 제출하기
131제출 프로젝트
2022.10.10최종 마감일
STM32 퀘스트 챌린지 : STM32Cube.AI대표 이미지
참가 안내

콘테스트 참가 = 프로젝트 생성

이 콘테스트에 참가신청을 하시면 하나의 프로젝트가 생성됩니다. 콘테스트 프로젝트 완성단계 [3개의 Quest]를 완료하면서 점진적으로 프로젝트를 완성해 나갑니다. 완성된 프로젝트는 e4ds make platform 에서 여러분의 포트폴리오로 활용할 수 있습니다.

STEP 01
참가 신청

참가 신청을 하시고, 회원님의 콘테스트 프로젝트를 생성하세요.

STEP 02
단계별 완성

Quest를 순차적으로 완료하며 프로젝트를 완성시켜 나갑니다.

STEP 03
커리어 아카이빙

자신의 기술 자산 포트폴리오로 활용하세요.

소개

STM32 퀘스트 챌린지 : STM32Cube.AI

콘테스트 요약

  • 콘테스트 형식 : 퀘스트 형
  • 콘테스트 명 : STM32 퀘스트 챌린지 : STM32Cube.AI
  • 참가자 모집 기간 : 2022년 7월 19일 (화) ~ 7월 31일 (일)
  • 콘테스트 진행 기간 : 2022년 8월 1일 (월) ~ 9월 25일 (일)

※ Quest 1 기간에도 참가 신청이 가능합니다.

콘테스트 소개

본 챌린지에서는 STM32Cube.AI 와 관련된 6개의 퀘스트가 주어집니다. 참가자는 통과 조건에 맞게 퀘스트를 수행해야 하며, 직전의 퀘스트를 통과한 참가자만이 다음 퀘스트에 도전할 수 있습니다.

퀘스트는 STM32Cube.AI와 함께 특정 플랫폼 보드를 활용하여 진행할 수 있으며, 플랫폼 보드는 일부 참가자에게 무상으로 지급됩니다. (아래 '플랫폼 보드 안내' 참고)

이렇게 파이널 퀘스트(Quest 6)까지 수행하신 참가자 분들의 결과물을 심사 기준에 따라 채점하고, 기타 가산점 등을 합산하여 최종 수상자를 선정하게 됩니다.

마지막까지 참가자 분들의 건투를 빕니다.

퀘스트 수행 방법

콘테스트 홈 → 퀘스트 확인 → ‘퀘스트 수행하기’ → 작성 후 ‘제출하기’

가산점

1. 게시판 활동

: 질문과 답변, 자유게시판 활동에 따라 가산점 부여
(게시글 수, 댓글 수, 게시글 내용(기술 질문/답변), 추천 수 등)

 

2. 이벤트 참여

: 이벤트 게시판 내 운영 중인 이벤트 참여 여부
(이벤트 참여 기간 : ~ 2022년 9월 25일)

플랫폼 보드 안내

Quest 3 부터는 보드를 이용하는 퀘스트가 주어질 예정이며, 이때 필요한 보드는 B-L475E-IOT01A 입니다.

해당 보드는 Quest 1을 통과한 50명의 참가자에게 무상 지급되며,

만일 통과한 참가자가 50명 이상일 경우, 제출 순서 및 내용에 따라 선정하여 지급될 예정입니다.

만일 통과하였으나 보드를 받지 못하신 분들도 해당 보드를 활용한다면 계속 도전을 이어나가실 수 있습니다.

※ 보드는 Quest 2 기간에 발송될 예정입니다.

우승자 혜택

※경품 수령 시, 제세공과금 (경품 금액의 22%)이 청구됩니다.

 

일정

진행 일정

1
2022년 8월 1일 시작

참가 접수

프로젝트 생성

~ 2022년 8월 7일

Quest 1 제출

STM32Cube.AI 개발 환경 구축하기

~ 2022년 8월 28일

Quest 2 제출

Neural Network Model 생성 개발 환경 구축하기

~ 2022년 9월 11일

Quest 3 제출

B-L475E-IOT01A 보드에 바이너리 파일 라이팅하기

~ 2022년 9월 18일

Quest 4 제출

B-L475E-IOT01A 보드 가속도 센서 활용하여 AI 모델을 위한 Dataset 구성하기

~ 2022년 9월 25일

Quest 5 제출

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

~ 2022년 10월 10일

Quest 6 제출

STM32Cube.AI와 B-L475E-IOT01A 보드를 이용하여 본인만의 AI 프로젝트를 만들기

2022년 10월 17일

결과 발표

Quest는 프로젝트를 완성하는 단계별 여정입니다

각 Quest는 독립된 제출물이 아닌, 하나의 프로젝트를 발전시키는 과정입니다. Quest 1에서 시작한 프로젝트가 Quest 2, 3를 거치며 점점 완성되어 갑니다. 모든 Quest를 완료하면 플랫폼에 등록된 완성된 프로젝트 하나가 탄생합니다.

완료

Quest 1 · STM32Cube.AI 개발 환경 구축하기

퀘스트

첫 번째 퀘스트는 STM32Cube.AI 개발환경을 구축하는 단계입니다.

STM32CubeMX의 최신 버전, X-CUBE-AI software pack, FP-AI-SENSING1 function pack을 다운로드 및 설치하세요.

필수 통과 조건

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를 제출합니다.

수행 방법

1.
STM32CubeMX를 최신 버전으로 설치합니다.
https://www.st.com/en/development-tools/stm32cubemx.html
 
 
2.
FP-AI-SENSING1을 다운로드 받습니다.
https://www.st.com/en/embedded-software/fp-ai-sensing1.html
3.
STM32CubeMX에서 X-CUBE-AI software pack을 설치합니다.
4.
STM32CubeMX에서 STM32L475VGTx MCU를 선택하여 새 프로젝트를 생성하고 Software Packs에서 X-CUBE-AI를 선택합니다.
5.
FP-AI-SENSING1에서 예제용으로 제공하는 Keras Model을 불러옵니다.
..\STM32CubeFunctionPack_SENSING1_V4.0.3\Utilities\AI_Ressources\models

6.
Analyze 버튼을 눌러 출력된 결과를 Capture하여 제출합니다.
7.
Show graph를 눌러 출력된 결과를 Capture하여 제출합니다.
8.
Analyze 버튼을 다시 누르고 결과 화면 하단에 Creating txt report file 의 경로에서 network_analyze_report.txt 파일을 제출합니다.

참조 사이트

2022.08.01 ~ 2022.08.07
완료

Quest 2 · Neural Network Model 생성 개발 환경 구축하기

퀘스트

두 번째 Quest는 Neural Network Model을 만드는 개발 환경을 구축하는 단계입니다.

머신러닝 어플리케이션과 대규모 데이터 처리, 예측 분석 등을 위한 Python 패키지들의 관리 도구인 Anaconda와 이를 기반으로 TensorFlow와 Keras를 설치하고 FP-AI-SENSING1 에서 예제용으로 제공하는 Neural Network Model을 생성하기위한 Script 파일을 Build하세요.

필수 통과 조건

1.
FP-AI-SENSING1에 포함된 HAR의 Tensorflow script를 Build하고 3개의 항목을 Capture하여 제출합니다.
(수행 방법의 11, 12, 13번 참조)
2.
Build를 완료한 Model을 STM32Cube.AI를 이용하여 Neural Network Analyze를 실행하고 결과를 제출합니다.
(수행 방법의 14번 참조)

수행 방법

1.
Anaconda를 설치합니다.
https://www.anaconda.com
 
 
2.
PyCharm IDE를 설치합니다.
https://www.jetbrains.com/pycharm
3.
Anaconda의 Environments를 설정합니다.

 
Environments를 선택하고 Create를 눌러줍니다.
Package 에서 Python의 CheckBox를 선택하고 3.7 버전으로 선택합니다.
Name을 설정하고 마지막으로 Create 버튼을 눌러줍니다.

 
Update index 버튼을 눌러줍니다.
Not installed 상태로 변경합니다.
Search Packages Tab에서 “tensorflow” 와 “Keras”를 검색하여 Keras, tensorflow, tensorflow-base, tensorflow-datasets, keras-applications, keras-base를 설치합니다.
4.
Pycharm IDE를 실행합니다.

 
프로젝트의 이름은 STM32_Quest_AI_xxxxxx_2022 (xxxxxx 에는 'MAKE 닉네임' 사용)
Existing Interpreter를 선택합니다.
오른쪽의 “…” 클릭하여 Anaconda에서 설정한 envs 에서 STM32_Python_3_7의 python.exe를 선택합니다.

5.
FP-AI-SENSING1에서 아래 경로의 HAR 폴더를 위에서 생성한 Pycharm 프로젝트 안으로 복사합니다.
..\en.fp-ai-sensing1\STM32CubeFunctionPack_SENSING1_V4.0.3\Utilities\AI_Ressources\Training Scripts\HAR
6.
HAR 폴더의 복사가 완료되면 RunMe.py 파일을 실행합니다.

Build 중간에 “No module xxxx “ Error 메시지가 발생할 수 도 있습니다.
Error의 수정은 Web상에서 간단한 Search를 통해 해결이 가능합니다. (해당 부분도 Quest 평가의 항목입니다.)
7.
HAR 폴더안에 Log_data 폴더를 새로 생성합니다.
8.
..\HAR\datasets\ai_logged_data의 경로에서 아래 파일중에서 한 개를 골라 7번에서 생성한 Log_data폴더로 복사합니다.
9.
..\HAR\datasets\ 의 경로에서 ReplaceWithWISDMDataset.txt를 실행합니다.
해당 파일에 표기된 URL에서 Dataset을 다운로드 받습니다.
아래와 같이 WIDSM_ar_v1.1_raw.txt 파일이 ..\HAR\datasets\ 에 위치하도록 압축을 해제합니다.
10.
Pycharm 하단의 Terminal Console을 클릭하고, cd 명령어를 사용하여 HAR 폴더 안으로 이동합니다.
>> python RunMe.py –dataDir=Log_data 를 입력하고 엔터를 누르면, 아래와 같이 Model 생성이 진행됩니다.
11.
Accuracy 그래프를 Capture하여 제출합니다.
(아래와 같이 왼쪽에 Pycharm의 프로젝트명이 보이도록 Capture를 진행합니다.)

12.
Model Loss Function 그래프를 Capture하여 제출합니다.
(아래와 같이 왼쪽에 Pycharm의 프로젝트명이 보이도록 Capture를 진행합니다.)
13.
Confusion matrix 그래프를 Capture하여 제출합니다.
(아래와 같이 왼쪽에 Pycharm의 프로젝트명이 보이도록 Capture를 진행합니다.)
14.
..\HAR\results\ 경로에서 아래와 같이 생성된 Model 파일을 STM32CubeMX에 STM32L475VGTx로 새프로젝트를 생성하여 STM32Cube.AI로 Network을 추가하여 Analyze 결과를 제출합니다.

 
Analyze 결과 화면에서 표기된 Creating txt report file 경로에서 network_analyze_report.txt 파일을 제출합니다.
 
 
2022.08.08 ~ 2022.08.28
완료

Quest 3 · B-L475E-IOT01A 보드에 바이너리 파일 라이팅하기

퀘스트

세 번째 Quest부터는 B-L475E-IOT01A 보드를 사용하게 됩니다.

B-L475E-IOT01A 보드에 FP-AI-SENSING1 프로젝트를 STM32CubeIDE 개발 환경에서 빌드하고 바이너리 파일을 B-L475E-IOT01A에 라이팅하세요.

필수 통과 조건

1.
B-L475E-IOT01A1 보드에 연결된 BLE 모듈인 BlueNRG의 Device Name을 변경하고 “STBLESensor” Mobile App에서 Device 검색화면을 Capture 후 제출합니다.
(수행 방법 4번 참고)
2.
“STBLESensor” Mobile App과 Board를 BLE로 연결하고 Activity Recognition을 선택하여 보드를 손으로 흔들어 보면서 Activity Recognition의 결과가 달라지는 것을 동영상으로 간단하게 촬영하여 제출합니다.
(수행 방법 5번 참고)

수행 방법

1.
아래 경로에서 CleanSENSING1.bat 파일을 실행합니다.
en.fp-ai-sensing1_v4.0.3\STM32CubeFunctionPack_SENSING1_V4.0.3\Projects\B-L475E-IOT01A\Applications\SENSING1\STM32CubeIDE


 
 
2.
STM32CubeIDE에서 FP-AI-SENSING1프로젝트를 Import 하고, Build를 완료합니다.

 
3.
STM32CubeProgrammer를 실행하고 B-L475E-IOT01A1 보드를 연결하고 \STM32CubeFunctionPack_SENSING1_V4.0.3\Projects\B-L475E-IOT01A\Applications\SENSING1\Binary 의 경로에 부트로더 바이너리 “SENSING1_BL.bin” 파일을 라이팅합니다.

 
4.
B-L475E-IOT01A1 보드에 연결된 BLE 모듈인 BlueNRG의 Device Name을 Code에서 최대 7개의 글자 내에서 설정합니다. 설정 후 STBLESensor App에서 본인이 설정한 Device Name이 보이도록 아래와 같이 보드와 호스트 디바이스가 보이도록 촬영후에 제출합니다.

 
5.
스마트폰의 Mobile App Store에서 STBLESensor Application을 다운로드 받습니다. STBLESensor App에서 Activity Recognition을 클릭합니다. 아래와 같이 B-L475-IOT01A1 보드를 손으로 흔들어 보면서 Activity Recognition의 결과가 달라지는 과정을 담은 동영상을 촬영하여 제출합니다. ( 보드를 흔들면서 Activity Recognition 결과가 달라지는 과정이 포함된 10초 이내의 동영상으로 촬영하시면 됩니다.)

 

참조 사이트

2022.08.29 ~ 2022.09.11
완료

Quest 4 · B-L475E-IOT01A 보드 가속도 센서 활용하여 AI 모델을 위한 Dataset 구성하기

퀘스트

네 번째 Quest에서는 B-L475E-IOT01A 보드의 가속도 센서를 활용하여 Human Activity Recognition에 필요한 데이터를 로깅하여 AI 모델을 만들기 위한 Daraset으로 구성하세요.

필수 통과 조건

1.
B-L475E-IOT01A1 보드와 STBLESensor Mobile App을 사용하여 Jogging, Stationary, Stairs, Walking을 라벨링하여 로깅한 파일을 제출합니다.
(수행 방법 4번 참고)

수행 방법

1.
B-L475E-IOT01A1 보드에서 Quest 3에서 빌드한 FP-AI-SENSING1 프로젝트의 바이너리 파일을 라이팅하고 STBLESensor Mobile App을 실행합니다.
Mobile App과 B-L475E-IOT01A1 보드를 BLE로 연결합니다.
하단의 "More" 탭을 선택합니다.
리스트 최상단의 "AI Data Log" 를 선택합니다.
"Accelerometer"를 눌러서 활성화 시켜줍니다.
"Change Inertial Frequency"를 눌러서 Inertial sensors sampling frequency를 26Hz로 변경합니다.


 
 
 
2.
Data Collection에 필요한 Label들을 추가 합니다.
Inertial sensor sampling frequency를 26Hz로 변경하고 하단의 "Continue" 버튼을 누릅니다.
상단의 "+" 버튼을 눌러서 4개의 Label을 추가합니다.
(Jogging, Stationary, Stairs, Walking)
하단의 "Start Log" 버튼을 눌러주고 로깅할 데이터의 Label을 활성화 시켜줍니다.
로깅을 중단 하려면 해당 Label을 비활성화 하고 "Stop Log" 버튼을 눌러 줍니다.


 
3.
B-L475E-IOT01A1의 내부 Flash에 저장된 새로운 로깅데이터를 불러오는 과정을 진행합니다.
USB 케이블을 보드와 분리합니다.


보드 하단의 JP4의 연결핀을 아래와 같이 이동하여 연결해 줍니다.

ST-LINK 커넥터가 아닌 USB OTG 커넥터에 USB 케이블을 연결합니다.

아래와 같이 USER 버튼을 누른 상태에서 RESET 버튼을 눌러줍니다.
Reset 버튼을 먼저 릴리즈하고 그 다음 USER 버튼을 릴리즈 합니다.
 
4.
PC에 이동식 디스크 형태로 연결 후에 로깅한 데이터를 저장 후 제출합니다.
Jogging, Stationary, Stairs, Walking에 대해서 10번 정도 로깅하여 10개의 csv 파일을 압축하여 제출합니다.

 

참조 사이트

2022.09.12 ~ 2022.09.18
완료

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

퀘스트

Quest의 다섯번째 단계는 B-L475-IOT01A1 보드로 로깅한 HAR Dataset을 FP-AI-SENSING1에서 제공하는 Tensorflow Script에 적용하여 새로운 Neural Network Model을 생성합니다.

새롭게 만들어진 Model에 대한 Weight 값들을 기존 프로젝트의 Weight 값과 대체하여 Build를 진행해서 FP-AI-SENSING1에서 Default로 제공하는 Model과의 차이점을 확인해 보는 단계입니다.

※ '수행 방법' 하단에 있는 'FP-AI-SENSING Build 문제'에 대한 사항을 꼭 참고해 주시기 바랍니다.

필수 통과 조건

1.
Mobile App과 B-L475-IOT01A1 보드를 이용하여 Human Activity Recognition 을 진행하는 짧은 영상을 레코딩하여 업로드합니다.
(**Mobile App에서는 다양한 Activity에 대한 수정이나 추가가 어려운 부분이 있기 때문에, 가령 보드를 좌우로 흔드는 데이터를 로깅하여 모델링하고 App에서는 Run으로 인식하게 하는 환경을 설정하는 것과 같이 설명과 함께 영상을 보내주시면 평가에 가산점이 부여됩니다.)
 

수행 방법

1.
Quest4 에서 로깅한 데이터들을 이용하여 Quest2 를 다시 참고하셔서 “har_ign” 이라는 이름으로 Keras를 기반으로 새로운 모델을 생성합니다.

 
 
 
2.
STM32CubeMX로 B-L465E-IOT01A1 새로운 프로젝트를 생성합니다.
STM32Cube.AI를 활성화하셔서 아래 그림과 같이 har_ign Model을 Import합니다.
STM32CubeMX를 기반으로 Generate Code를 수행합니다.


 
3.
빈 프로젝트와 har_ign 모델을 적용하여 만든 Code에서 다음과 같이 4개의 파일을 FP-AI-SENSING1 프로젝트에 포함되어 있는 같은 이름의 파일과 대체하여 적용합니다.

 
4.
다시 FP-AI-SENSING1 프로젝트 파일을 빌드하여 Mobile App 과의 연동을 진행합니다.
 

FP-AI-SENSING Build 문제

 
X-CUBE-AI v7.0.0 이후 버전에서 사용하는 Software structure를 FP-AI-SENSING1에 새로 적용한 공실 릴리즈 버전을 아직 배포하지 않았습니다.
(v7.0.0에서 변환한 har_ign.c/.h 파일의 구조가 FP-AI-SENSING1에 적용된 내용과 다를 수 있습니다.)

직접 Migration을 진행하셔도 되고, Keras 버전을 변경한 Anaconda 환경과 X-CUBE-AI v5.0.0을 설치하고, v5.0.0을 STM32CubeMX에서 적용하여 Model을 C code로 변환하면 FP-AI-SENSING1에 바로 적용할 수 있는 har_ign.c/.h 파일을 생성할 수 있습니다.

Quest2를 참고하셔서 Anaconda 환경에서 Python 3.6 버전과 Keras 2.2.4버전을 설치한 새로운 Anaconda환경을 빌드합니다.
(keras 설치 시 마우스 오른쪽 버튼을 클릭하시면 버전을 선택하실 수 있습니다.)

새로운 Anaconda 환경으로 Model을 생성합니다.

STM32CubeMX에서 X-CUBE-AI v5.0.0을 적용하시고 새로 만들어진 Model 파일을 Code Generate를 수행합니다.

만들어진 파일들을 FP-AI-SENSING1에 적용하시면 됩니다.


참조 사이트

2022.09.19 ~ 2022.09.25
완료

Quest 6 · STM32Cube.AI와 B-L475E-IOT01A 보드를 이용하여 본인만의 AI 프로젝트를 만들기

퀘스트

Final Quest는 B-L475E-IOT01A 보드와 STM32Cube.AI를 적용한 자유로운 프로젝트를 만들어 보세요.

예를 들면 B-L475E-IOT01A 보드에 그동안 Quest에서 사용했던 가속도 센서 이외에도 아래와 같이 다양한 RF 모듈과 센서를 포함하고 있습니다.

가속도 센서를 응용하시거나 다양한 센서의 데이터 로깅을 통해 STM32Cube.AI에서 지원가능한 상용 머신러닝툴을 사용하여 Neural Network Model을 만들고 STM32Cube.AI로 변환한 C code Model를 적용한 어플리케이션을 자유롭게 만들어 보시면 됩니다.

   •   64Mbit Quad-SPI NOR Flash memory
   •   Bluetooth, Sub-GHz, Wi-Fi, NFC
   •   ST-MEMS microphones (MP34DT01
   •   Capacitive digital sensor for relative humidity and temperature (HTS221)
   •   3-Axis magnetometer (LIS3MDL)
   •   3D Accelerometer and 3D Gyroscope (LSM6DSL)
   •   260-1260 hPa absolute digital output barometer (LPS22HB)
   •   Time-of-Flight and gesture detection sensor (VL53L0x)

제출 방법 (필수 통과 조건)

1.
개발하신 어플리케이션이B-L475E-IOT01A 보드에서 구동하는 동영상을 업로드 해주세요.
2.
상용 머신러닝 툴에서 사용한 Source Code를 업로드 해주세요.
3.
B-L475E-IOT01A에 적용된 Application Source Code와 해당 Application에 대한 소개 및 설명을 포함하는 PDF 문서를 업로드 해주세요.
(PDF 문서에는 2번의 머신러닝 툴에서의 Model에 대한 설명도 포함 합니다. 예를 들어 Model의 구성 설명이나 Accuracy 등과 같은 내용을 설명해 주시면 됩니다.)

평가 기준

최종 우승자 9명은 ST Korea가 선정하며, 다음의 기준으로 우승자가 선정됩니다.
(Gold Winner 1명, Silver Winner 1명, Bronze Winners 7명)

또한 게시판을 통해 다른 사람을 돕고 지식을 공유한 경우 '가산점'이 주어집니다.
귀하의 게시글이 다른 사람에게 유용한지, 도움이 되는 글을 많이 작성하였는지
퀘스트와 직접적인 관련이 없더라도 간접적으로 도움이 되는 글도 심사에 포함합니다.

 

결과물 심사 (최대 100점) 완성도, 구성, 창의력, 디자인
가산점 (최대 20점) 다른 사람들에게 직·간접적으로 도움을 준 게시글 및 댓글

참조 사이트

2022.09.26 ~ 2022.10.10