Building Activity Classification Models in Create ML

니냐뇨·2024년 5월 6일

Core ML

목록 보기
1/1
post-thumbnail

영상 링크: https://developer.apple.com/videos/play/wwdc2019/426/

보통 모션을 위해서는 이 두가지 센서가 사용된다.

데이터는 활동에 따라 다를 것이다.

Activity Classification은 무엇인가?
당신의 기기를 통해 pre-define된 physical action을 인지하는 것이다.

프리스비 인지 모델을 만들어서 Watch로 실행하는 데모.

CreateML로 만드는 방법

3가지 스텝이면 가능하다.
1. Collect data
2. Train model
3. 앱에 적용하기

Data

센서에 접근하는 가장 쉬운 방법은 Core Motion을 사용하는 것이다.

high level의 관점에서 본다면 앱은 단순히 센서의 목록에만 접근이 가능하다.
Core Motion Framework를 통해서는 기록을 위해 Start, Stop, Set update가 가능하다.
또한 훈련 데이터 수집뿐만 아니라 나중에 device inference에서도 정확히 동일한 메커니즘을 사용할 수 있다.

데이터는 이런식으로 표현되게 되는데, 이것은 CSV 형식의 forehand 레코딩 중 하나다.

한 column은 time stamp이고

다른 것들은 센서 feature를 나타낸다.

활동 패턴은 이렇게 보일 수 있다. 포핸드 레코딩은 같은 클래스에서 3번의 연속적인 움직임이 있다.

딥 러닝 모델은 training에서 슬라이딩 윈도우를 사용하여 이 시계열 데이터를 이동할 것이다. 그리고 이러한 방식으로 활동의 공간적 패턴과 시간적 패턴을 모두 추출할 수 있다.

파일이 준비되면, 각 폴더의 이름이 label 이름인 데이터 소스 계층의 데이터를 구성하면 된다. CSV, JSON 및 텍스트 형식을 지원하며, 둘 중 하나를 선택하거나 원하는 경우 혼합하여 일치시킬 수 있다.

Data가 준비되었다면, Training을 진행한다.

CreateML에서 Activity Classifier를 선택한다.

데이터를 드래그앤 드랍으로 넣어서 몇개가 있는지 확인할 수 있고

ML 생성에 사용해보고 싶은 센서 기능이 무엇인지 선택해야한다. 이 값들은 CSV header로부터 생성된다.

추가적으로 활동의 속도에 따라 이 Prediction Window Sized와 같은 매개 변수를 조정할 수도 있다. 프리스비 운동 데이터는 처음에는 50헤르츠 주파수에서 샘플링되었기 때문에 100개를 넣었다.

그리고 train을 한 뒤
정확도에 만족하는 경우 이 모델의 성능을 평가하기 위해 새로운 데이터를 사용해 볼 수 있다.

testing data를 추가해주고,

evaluation이 끝나면 precision와 recall 측면에서 클래스별 매트릭스 표를 볼 수 있다.

이 예시의 경우 Hammer와 Bowler에 대한 추가 데이터 수집 및 학습이 필요하다는 것을 알 수 있다.

완성된 Core ML 모델을 살펴보면
학습에 사용한 모든 센서들의 목록을 확인 할수도 있다.

이 모든 프로세스는 아래와 같이 Xcode Playground, Swift Script, CMD 모두를 통해 가능하다.

Considerations

runtime performance의 향상을 위해 no activity 같은 class의 데이터도 수집해라.

Core Motion은 raw 센서 데이터와 processed 디바이스 모션 데이터를 모두 제공한다.
디바이스 모션은 코어 모션 프레임워크의 센서 융합이며, 몇 가지 추가 정규화, 시간 정렬 또는 편향 제거를 제공한다. 그래서 때때로 데이터를 처리하는 데 정말 도움이 될 수 있다.

profile
열심히 살자.

0개의 댓글