수행기록퀘스트5
Quest5. new log데이터로 학습후 Cube.Ai를 사용하여 FW적용 후 실험하기
초기 Cube.Ai7.1.0으로 진행하던데로 작업을 수행해 보았습니다.
학습후 Ai데이타 테스트용 코드 생성까지 진행후 B-L475-IOT01A1 펌웨어인 ai-sensing1 펌웨어에 적용하려고 했습니다만 constant값에 함수를 적용한 코드에서 에러가 나서 초기화 코드에서 Weight값과 Activation테이블을 복사하도록 코드를 변경해 보았지만 그외에도 다른 수많은 에러가 나서 맨붕 상태였는데 다행히 Quest5 공지 페이지가 새로 업데이트되어 참고하여 Python3.6+Keras 2.2.4+Cube.Ai v5.0.0 환경을 새로 생성해서 작업을 진행하였습니다.
<새 환경 셋업 과정>
Anaconda에서 다음과 같이 새로운 환경을 정의하고 패키지를 설치하였습니다.
그런데 버전 변경이 필요합니다. 변경이 필요한 패키지를 클릭후 ENTER를 누르면 pull down 메뉴가 나옵니다. 그럼 원하는 버전으로 변경합니다.
Keras-base패키지도 동일한 2.2.4로 변경합니다.
모두 설치하고나면 다음과 같이 버전이 변경되어 있습니다.
이제 keras 2.2.4 버전과 tensorflow까지 설치완료한 후에 PyCharm에서 New Project로 프로젝트를 생성하면서 Add Interpreter를 누르고 위에서 만든 Anaconda환경을 선택후 클릭하여 추가해 줍니다. 추가된 interpreter로 선택하고서 빌드합니다.
New Proejct 디렉토리에 HAR 폴더를 복사하고 모든 부가 데이터(wisdom데이터셋과 log 데이터)들을 복사해서 셋팅합니다. PyCharm에서 실행시키면 다음과 같은 에러가 나옵니다(패키지가 없다는 내용입니다)
일단 Pandas가 없다고 했으므로 위처럼 pandas 글자로 cursor를 가져가면 위처럼 pop message가 뜨고 install을 누르면 설치합니다.
이와 같이 sklearn도 설치를 진행합니다.
모두 설치하고나면 wisdom데이터를 로딩하고서 분류를 합니다.
그 다음에는 LogData를 분류합니다.
(LogData 수집할때 주의사항: 구분글자의 첫글자는 대문자여야 파싱됩니다. 즉 Stairs, Jogging 처럼 첫 글자가 대문자여야되는데 stairs, jogging 과 같이 소문자로 로깅이 저장되도록 핸드폰앱에서 처음부터 실수하면 RunMe에서 구분자 인식에 실패하여 제대로 학습이 안됩니다.)
학습 결과는 위와 같이 출력됩니다.
<신경망 출력 정보: har_ign_analyze_report.txt>
Neural Network Tools for STM32 v1.2.0 (AI tools v5.0.0)
모델의 코드사이즈가 11.97KB, 파라미터 sram사이즈는 1.98KB입니다.
위 layer정보는 python model코드에 코딩된 대로 입출력 개수를 출력해주고 있는 것을 알 수 있습니다.
<학습 실험 및 결과>
각 활동별로 log 데이터를 추가해가면서 학습을 진행해 보았더니 서로 간의 영향을 주면서 정확도가 오르락 내리락하는 것을 자주 볼 수 있었습니다. 동일한 NN모델링으로 여러가지 데이타를 학습시키면서 가중치를 조정했으니 서로 간에 영향을 주는 것이 당연한 결과지만 그래도 엄선된 많은 데이타를 줬다고 생각했는데도 결과는 좀 아쉬웠습니다.
다음에는 학습 회수(epoch)를 늘려서 결과를 살펴보면 어떨까 생각하면서 마무리합니다.
<최종 실험 결과 >
<동작 테스트 동영상>
로그인 후
참가 상태를 확인할 수 있습니다.