수행기록퀘스트5

Quest5. 수행 내용 등록(SAEBA)
2022. 9. 25 (일) 17:54 최종수정 2022. 9. 25 (일) 17:59 saeba 조회 460 좋아요 0 스크랩 0 댓글 0

퀘스트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 다운로드

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