수행기록퀘스트5
퀘스트5. Quest4에서 저장했던 로그 학습후 펌웨어에 적용하기
원래 진행하던 환경(Python 3.7 + Cube.Ai v7.x) 에서 생성한 FW코드에 호환성 이슈가 있어서
새로운 환경(Python v3.6.13 + Keras v2.2.4 + Cube.Ai v5.0) 에서 작업을 진행하였습니다.
1.새로 환경 구축 후 FW 빌드하기
Anaconda에서 새로운 환경 버전들을 모두 설치 후 PyCharm에서 새로운 환경에 맞게 빌드하여 har_IGN.h5를 얻었고 FW코드를 다음과 같이 생성하였습니다.
à
생성된 FW에서 위 오른쪽 창에서 선택된 har_ign.h/c와 har_idg_data.h/c 파일 4개를 모두 Sensing1펌웨어 소스에 복사 후 펌웨어를 라이팅하여 테스트를 진행하였습니다..
2.Python코드 수정
Runmy.py 코드 수정후 테스트 했습니다
수정 내용:: Log 데이터 폴더를 매번 지정하지 않기 위해 아래 내용처럼 수정 후 테스트 진행했음.
3.RunMe.py 빌드 및 모델 사이즈 체크
빌드시 내용을 아래 복사했습니다.
C:\Users\anaconda3\envs\st_pyv36_kerasv224\python.exe E:/contest/stm32_quest_ai_Saeba_2022/HAR/RunMe.py
Using TensorFlow backend.
Running HAR on WISDM dataset, with following variables
merge = True
modelName = IGN,
segmentLength = 24
stepSize = 24
preprocessing = True
trainTestSplit = 0.6
trainValidationSplit = 0.7
nEpochs = 20
learningRate = 0.0005
decay =1e-06
batchSize = 64
verbosity = 1
dataDir = Log_data
nrSamplesPostValid = 2
Segmenting Train data
Segments built : 100%|??????????| 27456/27456 [00:17<00:00, 1613.49 segments/s]
Segmenting Test data
Segments built : 100%|??????????| 18304/18304 [00:08<00:00, 2124.77 segments/s]
Segmentation finished!
preparing data file from all the files in directory Log_data
parsing data from IoT01-MemsAnn_03_Oct_19_09h_58m_09s.csv
......
parsing data from STBox-MemsAnn_13_Sep_22_22h_58m_13s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_28m_28s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_29m_15s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_30m_17s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_30m_55s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_31m_34s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_32m_17s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_32m_38s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_32m_57s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_33m_18s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_33m_39s.csv
.......
parsing data from STBox-MemsAnn_17_Sep_22_20h_46m_09s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_46m_29s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_46m_46s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_47m_04s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_47m_26s.csv
Segmenting the AI logged Train data
Segments built : 100%|??????????| 301/301 [00:00<00:00, 4373.88 segments/s]
Segments built : 0%| | 0/201 [00:00
Segments built : 100%|??????????| 201/201 [00:00<00:00, 4460.73 segments/s]
Segmentation finished!
_________________________________________________________________
Layer (type) Output Shape Param #
===============================================================
conv2d_1 (Conv2D) (None, 9, 3, 24) 408
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 3, 3, 24) 0
_________________________________________________________________
flatten_1 (Flatten) (None, 216) 0
_________________________________________________________________
dense_1 (Dense) (None, 12) 2604
_________________________________________________________________
dropout_1 (Dropout) (None, 12) 0
_________________________________________________________________
dense_2 (Dense) (None, 4) 52
===========================================================
Total params: 3,064
Trainable params: 3,064
모델 분석 로그 내용으로 살펴본 코드 사이즈 결과
model_name : har_IGN
model_hash : 06ed806c1f78d42402495c1f684661b8
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
à모델의 코드사이즈: 11.97KB, 파라미터 ram사이즈: 1.98KB
4.동작 시험
학습할 때마다 동일한 데이터인데도 학습 결과가 약간씩 달랐습니다.
NN초기화 함수에서 Random Noiser값이 영향을 주는 것 같긴한데 매번 다르면 여러 번해서 그중 제일 좋은 결과로 골라야 될 듯한데 좀 더 확인이 필요할 듯합니다.
그리고 얼마의 데이터가 학습에 필요한지 아직 잘 모르겠지만 데이터가 얼마되지 않아도 학습이 잘 되는 것을 보면 Wisdom 데이터셋이 중요한 영향을 미치는 것 같다는 생각이 듭니다.
이에 대한 상관 관계 설명이 있는 문서가 있으면 좋겠다는 생각이 드네요.
아직 학습 횟수를 변경한 실험은 하지 못했습니다.
*20회 기본 epoch 학습에서의 최종 정밀도 결과치는 다음과 같았습니다.
Accuracy for each class is given below.
Jogging : 93.83 %
Stationary : 98.69 %
Stairs : 67.73 %
Walking : 88.9 %
5.데모 결과 동영상
링크 : https://youtu.be/TCwblOc8Cm4
youtube영상을 올리려 하였으나 다음과 같은 오류가 발생하여 위 링크만 복사합니다.
이상입니다.
- 첨부파일
- icon_saeba.png 다운로드
로그인 후
참가 상태를 확인할 수 있습니다.