O modelo HWGAT, uma arquitetura recente para reconhecimento de língua de sinais, é explorado neste guia técnico. O objetivo é fornecer uma visão prática da estrutura do código e dos procedimentos necessários para sua execução.
Repositório de Código Fonte
O código-fonte está disponível no GitHub, e o artigo original pode ser consultado para detalhes teóricos.
Configuração do Ambiente
O projeto inclui um arquivo requirements.txt com as dependências. Recomenda-se o uso do gerenciador de pacotes Conda com Python na versão 3.9 ou 3.10.
Instalação via Conda
Uma abordagem recomendada envolve a criação de um ambiente isolado e a instalação sequencial das bibliotecas principais para evitar conflitos.
conda create -n hwgat_env python=3.9
conda activate hwgat_env
pip install torch==2.4.0 numpy==1.23.3 tqdm==4.64.1 opencv-python==4.6.0.66 mediapipe==0.10.18 decord==0.6.0 timm==1.0.3 -i https://pypi.tuna.tsinghua.edu.cn/simple
Estrutura do Projeto
O repositório contém several diretórios e scripts chave:
- losses: Contém uma implementação de uma função de perda baseada em entropia cruzada aprimorada.
- meta_generators: Scripts para gerar metadados que descrevem o conjunto de dados.
- models: Implementações de modelos, incluindo o HWGAT e variantes usadas em experimentos de ablação.
- pose_modules: Módulos para detecção de keypoints. O projeto utiliza a biblioteca MediaPipe para esta tarefa.
- Scripts principais:
pose_feature_extract.py(extração de keypoints),data_preprocess.py(pré-processamento) emain.py(treinamento e teste).
Procedimento de Execução
1. Preparação do Conjunto de Dados
Organize os dados dentro do diretório do projeto. Crie uma estrutura de pastas como: data/datasets/SEU_DATASET/videos/ e um arquivo de rótulos correspondente.
2. Geração de Metadados
Execute o script adequado para gerar os metadados do seu conjunto de dados. Isso produzirá arquivso como classes.txt e metadata.csv.
python meta_generators/nome_do_seu_dataset_meta_gen.py
Modifique as variáveis no script, como o caminho raiz dos dados, o diretório de vídeos e o arquivo de classes.
3. Extração de Keypoints
Este passo processa os vídeos para extrair pontos de pose usando o MediaPipe. Os resultados são salvos como arquivos .pkl.
python pose_feature_extract.py --root './data/datasets/SEU_DATASET' --meta './data/datasets/SEU_DATASET/metadata.csv' -m mediapipe --out_path 'media_pipe_output/'
Atenção: Este processo pode ser intensivo em memória. Verifique os caminhos fornecidos para evitar erros de leitura.
4. Pré-processamento dos Dados
Transforme os dados brutos em formatos adequados para o modelo, criando diretórios de entrada e saída estruturados.
python data_preprocess.py --root ./data/datasets/SEU_DATASET --ds NOME_DO_DATASET --meta ./data/datasets/SEU_DATASET/metadata.csv --dr media_pipe_output/ -kpm mediapipe -ft keypoints
5. Treinamento do Modelo
Inicie o treinamento especificando o modelo e o conjunto de dados. Os logs e checkpoints são salvos no diretório output.
python main.py -m train -d NOME_DO_DATASET --model HWGAT
6. Avaliação do Modelo
Para testar um modelo treinado, especifique o timestapm do checkpoint e o tipo de arquivo de pesos.
python main.py -m test -d NOME_DO_DATASET --model HWGAT -t TIMESTAMP -px best_loss