Os skatistas podem reconhecer facilmente manobras executadas por outros skatistas. Nosso objetivo neste projeto é ensinar o computador a reconhecer manobras de skate. Dado um vídeo de uma manobra de skate, o computador pode classificar a manobra com alta probabilidade? Desenvolvemos um conjunto de dados e um modelo de aprendizado de máquina que pode distinguir entre duas das manobras mais comuns do skate, ollies e kickflips.
Começamos reunindo mais de 200 vídeos curtos (1 a 2 segundos) de kickflips e ollies. Adaptamos a abordagem descrita em Hands on Computer Vision with Tensorflow ao nosso novo conjunto de dados. Os dados começam como um vídeo, depois passam por uma rede neural convolucional (CNN), depois por um modelo de memória de longo e curto prazo (LSTM) e, finalmente, para uma saída de probabilidades de que o vídeo retrate cada classe de truques.
Por exemplo, aqui Stephen executa um kickflip:
O modelo prevê que este é um kickflip com probabilidade de 0,9, então funciona bem. Descobrimos que vídeos nítidos em que o corpo inteiro do skatista está visível tiveram melhor desempenho do que vídeos apenas das pernas do skatista. Também descobrimos que o modelo foi capaz de prever corretamente um kickflip descendo uma escada, embora todos os dados de treinamento fossem de manobras em terreno plano. Isso mostra que o modelo foi capaz de generalizar para uma situação nova e diferente.
Para levar este trabalho adiante, podemos adicionar mais truques além de kickflips e ollies, bem como combinações de truques, por exemplo, um backside 180 kickflip. Com mais dados de treinamento e mais ajustes no modelo, este modelo poderia ficar bom o suficiente para rivalizar com um skatista humano.
Obrigado a Justin Wang e Vessela Ensberg pela ajuda neste projeto.
Os dados de vídeo rotulados estão no diretório Tricks
deste repositório. Existem dois subdiretórios, Ollie
, que contém 108 vídeos de skatistas realizando um ollie, e Kickflip
, que contém 114 vídeos de skatistas realizando um kickflip. Cada um dos arquivos nesses diretórios é um clipe curto, de cerca de 2 segundos, no formato .mov
(QuickTime). Para usar esses dados para aprendizado de máquina supervisionado, treine o modelo nos dados do diretório Tricks
, usando os subdiretórios como rótulos.
Você é livre para usar esses dados para fins acadêmicos, desde que cite este trabalho.
Classificando manobras de skate
Este projeto classifica as manobras do skate nas palavras mais simples. Estamos tentando usar o aprendizado de máquina para classificar cada manobra do skate. Existem muitos truques de skate que escolhemos dois para classificar entre eles. Escolhemos entre Ollie e Kickflip.
Portanto, esse algoritmo pegaria uma entrada como a acima e geraria uma probabilidade de quão certo é que se trata de um ollie ou kickflip.
16 de junho TODO:
23 DE JUNHO PARA FAZER:
30 DE JUNHO TODO:
7 de julho:
15 de julho:
21 de julho:
28 de julho:
4 de agosto:
Nosso objetivo é criar um classificador razoável de truques para videoclipes de 1 a 2 segundos. Planejamos usar as abordagens mais convenientes e capazes para tornar isso bem-sucedido.
Nosso plano para pré-processar os dados é amostrar os vídeos até um número consistente de quadros e resolução. Por exemplo, cada vídeo pode consistir em 30 quadros, cada um dos quais é uma imagem de 480 x 360 (360p), de modo que cada vídeo se torna uma matriz 3D (ou tensor) com dimensão 480 x 360 x 30. Estas são as entradas para o modelo. A cor não é importante para a classificação dos truques, então também podemos transformar para preto e branco.
A ideia geral é construir uma rede neural convolucional (CNN), seguindo aproximadamente a abordagem de classificação de imagens.
Uma CNN para imagens combina informações espacialmente locais de pixels próximos usando filtros de convolução. Deveríamos fazer o mesmo com pixels próximos no tempo? O tutorial do Google usa uma convolução 2D. Existe alguma razão pela qual não podemos usar uma convolução 3D? Claro, o tensorflow tem um. E há muitos artigos acadêmicos populares que fazem exatamente isso. Esperamos que possamos desenvolver essas ideias.