스케이트보더는 다른 스케이트보더가 수행하는 트릭을 쉽게 인식할 수 있습니다. 이 프로젝트의 목표는 컴퓨터가 스케이트보드 기술을 인식하도록 가르치는 것입니다. 스케이트보드 트릭 영상이 주어지면 컴퓨터가 높은 확률로 트릭을 분류할 수 있을까요? 우리는 가장 일반적인 스케이트보드 트릭 두 가지인 알리와 킥플립을 구별할 수 있는 데이터 세트와 기계 학습 모델을 개발했습니다.
우리는 킥플립과 알리에 대한 200개 이상의 짧은(1~2초) 동영상을 수집하는 것부터 시작했습니다. 우리는 Tensorflow를 사용한 컴퓨터 비전 실습에 설명된 접근 방식을 새로운 데이터 세트에 적용했습니다. 데이터는 비디오로 시작하여 CNN(Convolutional Neural Network), LSTM(Long Short Term Memory) 모델을 거쳐 마지막으로 비디오가 각 종류의 트릭을 묘사할 확률을 출력합니다.
예를 들어, Stephen은 킥플립을 수행합니다.
모델은 이것이 확률 0.9의 킥플립이라고 예측하므로 잘 작동합니다. 우리는 스케이트보더의 전신이 보이는 선명한 비디오가 스케이트보더의 다리만 담은 비디오보다 더 나은 결과를 얻었다는 것을 발견했습니다. 또한 모든 훈련 데이터가 평지에서의 트릭임에도 불구하고 모델이 계단 아래로 킥플립을 정확하게 예측할 수 있다는 사실도 발견했습니다. 이는 모델이 새롭고 다른 상황에 일반화될 수 있음을 보여줍니다.
이 작업을 더욱 발전시키기 위해 킥플립과 올리 외에도 더 많은 트릭을 추가할 수 있을 뿐만 아니라 백사이드 180 킥플립과 같은 트릭 조합도 추가할 수 있습니다. 더 많은 훈련 데이터와 더 많은 모델 조정을 통해 이 모델은 인간 스케이트보더와 경쟁할 수 있을 만큼 충분히 좋아질 수 있습니다.
이 프로젝트에 도움을 준 Justin Wang과 Vessela Ensberg에게 감사드립니다.
레이블이 지정된 비디오 데이터는 이 저장소의 Tricks
디렉터리에 있습니다. 알리를 수행하는 스케이트보더의 비디오 108개를 포함하는 Ollie와 Kickflip
을 수행하는 스케이트보더의 비디오 114개를 포함하는 Kickflip이라는 두 개의 Ollie
디렉토리가 있습니다. 이 디렉터리의 각 파일은 .mov
형식(QuickTime)의 약 2초 길이의 짧은 클립입니다. 지도 기계 학습에 이 데이터를 사용하려면 하위 디렉터리를 레이블로 사용하여 Tricks
디렉터리의 데이터에 대해 모델을 교육합니다.
이 작업을 인용하는 경우 학술 목적으로 이 데이터를 자유롭게 사용할 수 있습니다.
스케이트보드 트릭 분류
이 프로젝트는 가장 간단한 단어로 스케이트보드 트릭을 분류합니다. 우리는 기계 학습을 사용하여 각 스케이트보드 트릭을 분류하려고 노력하고 있습니다. 우리가 분류하기 위해 두 가지를 선택한 스케이트보드 트릭이 많이 있습니다. 우리는 Ollie와 Kickflip 중에서 선택했습니다.
따라서 해당 알고리즘은 위와 같은 입력을 받아 알리 또는 킥플립이 얼마나 확실한지에 대한 확률을 내보냅니다.
6월 16일 할 일:
6월 23일 할 일:
6월 30일 할 일:
7월 7일:
7월 15일:
7월 21일:
7월 28일:
8월 4일:
우리의 목표는 1~2초짜리 비디오 클립에 대한 합리적인 트릭 분류기를 찾는 것입니다. 우리는 이를 성공시키기 위해 가장 편리하고 유능한 접근 방식을 사용할 계획입니다.
데이터 전처리 계획은 비디오를 일정한 수의 프레임과 해상도로 샘플링하는 것입니다. 예를 들어, 각 비디오는 30개의 프레임으로 구성될 수 있으며 각 프레임은 480 x 360(360p) 이미지이므로 모든 비디오는 480 x 360 x 30 차원의 3D 배열(또는 텐서)이 됩니다. 모델. 트릭 분류에서는 색상이 중요하지 않으므로 흑백으로 변환할 수도 있습니다.
일반적인 아이디어는 이미지 분류 접근 방식을 대략적으로 따르는 CNN(Convolutional Neural Network)을 구축하는 것입니다.
이미지용 CNN은 컨볼루션 필터를 사용하여 근처 픽셀의 공간적 로컬 정보를 결합합니다. 시간적으로 서로 가까운 픽셀에 대해서도 동일한 작업을 수행해야 합니까? Google 튜토리얼에서는 2D 컨볼루션을 사용합니다. 3D 컨볼루션을 사용할 수 없는 이유가 있나요? 물론, tensorflow에는 하나가 있습니다. 그리고 정확히 이것을 수행하는 많은 인기 학술 논문이 있습니다. 우리가 이러한 아이디어를 바탕으로 발전할 수 있기를 바랍니다.