A escassez de enfoque nos programas de treino de força na literatura conexa e a ausência de apoio dos rastreadores de atividade atuais para exercícios com pesos livres representam desafios enfrentados por muitos entusiastas e profissionais de fitness. Com o crescente interesse em tecnologias e aplicativos de monitoramento de atividades, emerge um vasto potencial para o desenvolvimento de soluções que mitiguem essa lacuna. Além disso, a identificação de atividade pode ser aplicada para abordar desafios sociais substanciais, abrangendo reabilitação, sustentabilidade, cuidados geriátricos e saúde. Este projeto propõe explorar as potencialidades de aplicativos adaptados ao contexto no domínio do treino de força, empregando dados obtidos a partir de sensores de pulso (smartwatches) para analisar exercícios com pesos livres. O intento é forjar modelos que, à semelhança de treinadores pessoais, acompanhem os exercícios, contabilizem repetições, identifiquem movimentos e desvelando formas inapropriadas de execução, almejando auxiliar os usuários a concretizarem seus objetivos de maneira mais eficaz e segura.
- Classificar os exercícios básicos com barra
- Contar o número de repetições
- Detectar forma inadequada do movimento
Criar, instalar e ativar o ambiente Anaconda: conda env create -f environment.yml
.
Ler todos os arquivos CSV brutos separados, processa-los e mesclá-los em um único conjunto de dados.
- Conjunto de dados em → data/raw
- Extrair recursos do nome do arquivo
- Ler todos os arquivos
- Trabalhar com datetimes
- Criar uma função personalizada
- Mesclar conjuntos de dados
- Resample dos dados (conversão de frequência)
- Exportar conjunto de dados processados
Códigos originais: make_dataset.py
Passo a passo explicado: 01_make_dataset.ipynb
Criar scripts para processar, visualizar e modelar os dados de acelerômetro e giroscópio.
- Plotar as séries temporais de todos os exercícios
- Plotar todos os eixos (x, y e z)
- Comparar participantes
- Criar um loop para plotar todas as combinações por sensor
- Combinar os gráficos em uma única figura
- Looping para todas as combinações e exportar para ambos os sensores
Códigos originais: visualize.py
Passo a passo explicado: 02_visualize.ipynb
Verificar se existem quaisquer valores atípicos (outliers) nos dados dados que desejamos remover.
- Diagramas de caixa e amplitude interquartil (IQR)
- Plotagem de valores atípicos ao longo do tempo
- Função para marcar valores atípicos aplicando diversos métodps (IQR, Chauvenet e Fator de Valor Atípico Local)
- Verificando outliers agrupados por rótulo
- Substituindo outliers
Códigos originais: remove_outliers.py
Passo a passo explicado: 03_remove_outliers.ipynb
Filtrar ruidos e identificar partes dos dados que explicam a maior parte da variância utilizando PCA. Em seguida, adicionar recursos numéricos, temporais, de frequência e de agrupamento para gerar novas features.
- Lidando com valores ausentes
- Filtro passa-baixa (Butterworth)
- Aplicando PCA
- Raiz quadrada da soma dos quadrados (vetor r)
- Abstração temporal
- Abstração da frequência
- Lidando com "overlapping data" (overfitting)
Códigos originais: build_features.py
Passo a passo explicado: 04_build_features.ipynb
Realizar experimentos para a seleção das features, escolha do modelo e ajuste dos hiperparâmetros em busca da combinação que resulta na maior precisão para a classificação dos exercícios.
- Criação do conjunto de treinamento e de teste
- Divisão das features em subconjuntos
- "Forward feature selection" utilizando árvore de decisão simples
- Aplicação de vários modelos e "Grid search" para a definição dos hiperparâmetros
- Comparação dos resultados
- Seleção do melhor modelo e avaliação dos resultados
- Teste de um modelo mais simples
Códigos originais: train_model.py
Passo a passo explicado: 05_train_model.ipynb
Criar um script em Python que pode contar repetições e mensurar a eficiência do código.
- Visualizar os dados para identificar padrões
- Configurar o Filtro Passa-Baixa (Butterworth)
- Criar uma função para contar repetições
- Criar um dataframe de referência (benchmark)
- Avaliar os resultados (MAE)
Códigos originais: count_repetitions.py
Passo a passo explicado: 06_count_repetitions.ipynb