reconhecimento de dois-stream-ação
Utilizamos uma CNN espacial e de fluxo de movimento com resnet101 para modelar informações de vídeo no conjunto de dados UCF101.
Papel de referência
- [1] Redes convolucionais de dois dream para reconhecimento de ação em vídeos
- [2] Redes de segmento temporal: Rumo às boas práticas para reconhecimento de ação profunda
- [3] TS-LSTM e Cepção temporal: explorando a dinâmica espaço-temporal para reconhecimento de atividade
1. Dados
1.1 Dados de entrada espacial -> quadros RGB
- Extraímos quadros RGB de cada vídeo no conjunto de dados UCF101 com taxa de amostragem: 10 e salvar como .jpg imagem em disco que custa cerca de 5,9g.
1.2 Dados de entrada de movimento -> Imagens de fluxo óptico empilhadas
No fluxo de movimento, usamos dois métodos para obter dados de fluxo óptico.
- Faça o download do conjunto de dados de fluxo óptico TVL1 pré -processado diretamente de https://github.com/feichtenhofer/twostreamfusion.
- Usando o método FLOWNET2.0 para gerar imagem de fluxo óptico de 2 canais e salvar seu canal x, y como .jpg em disco, respectivamente, que custa cerca de 56g.
1.3 (Alternativa) Download dos dados pré -processados diretamente de Feichtenhofer/twostreamfusion)
wget http://ftp.tugraz.at/pub/feichtenhofer/tsfusion/data/ucf101_jpegs_256.zip.001
wget http://ftp.tugraz.at/pub/feichtenhofer/tsfusion/data/ucf101_jpegs_256.zip.002
wget http://ftp.tugraz.at/pub/feichtenhofer/tsfusion/data/ucf101_jpegs_256.zip.003
cat ucf101_jpegs_256.zip* > ucf101_jpegs_256.zip
unzip ucf101_jpegs_256.zip
wget http://ftp.tugraz.at/pub/feichtenhofer/tsfusion/data/ucf101_tvl1_flow.zip.001
wget http://ftp.tugraz.at/pub/feichtenhofer/tsfusion/data/ucf101_tvl1_flow.zip.002
wget http://ftp.tugraz.at/pub/feichtenhofer/tsfusion/data/ucf101_tvl1_flow.zip.003
cat ucf101_tvl1_flow.zip* > ucf101_tvl1_flow.zip
unzip ucf101_tvl1_flow.zip
2. Modelo
2.1 CNN espacial
- Como mencionado anteriormente, usamos o resnet101 primeiro pré-treinado com o ImageNet e depois o ajuste fino em nosso conjunto de dados de imagem RGB espacial do UCF101.
2.2 Motion cnn
- Os dados de entrada do movimento CNN são uma pilha de imagens de fluxo óptico que continham 10 imagens de canal X e 10 de canal Y, portanto, sua forma de entrada é (20, 224, 224), que podem ser consideradas uma imagem de 20 canais.
- Para utilizar o peso pré-treinado ImageNet em nosso modelo, precisamos modificar os pesos da primeira camada de convolução pré-treinada com o ImageNet de (64, 3, 7, 7) a (64, 20, 7, 7, 7).
- Em [2] Wang fornece um método chamado ** modalidade cruzada pré-
** Para fazer esses pesos, a transformação da forma. Ele primeiro em média o valor do peso nos canais RGB e replica essa média pelo número do canal de entrada de fluxo de movimento (que é 20 é esse caso)
3. Estratégias de treinamento
3.1 CNN espacial
- Aqui, utilizamos as técnicas na rede de segmentos temporais. Para todos os vídeos em um mini-lote, selecionamos aleatoriamente 3 quadros de cada vídeo. Em seguida, um consenso entre os quadros será derivado como a previsão em nível de vídeo para calcular a perda.
3.2 Motion cnn
- Em todos os mini-lojas, selecionamos aleatoriamente 64 (tamanho em lote) de vídeos de 9537 vídeos de treinamento e selecionamos aleatoriamente 1 fluxo óptico empilhado em cada vídeo.
3.3 Aumento de dados
- Ambos os fluxos aplicam a mesma técnica de aumento de dados, como corte aleatório.
4. Método de teste
- Para cada 3783 testes de vídeos, amostrarmos uniformemente 19 quadros em cada vídeo e a previsão do nível de vídeo é o resultado da votação de todas as 19 previsões de nível de quadro.
- A razão pela qual escolhemos o número 19 é que o número mínimo de quadros de vídeo no UCF101 é 28 e precisamos garantir que haja quadros suficientes para testar em 10 pilhas de fluxo de movimento.
5. Performance
| rede | top1 |
|---|
| CNN espacial | 82,1% |
| Movimento cnn | 79,4% |
| Fusão média | 88,5% |
6. Modelo pré-treinado
- Resnet101 espacial
- Motion resnet101
7. Teste no seu dispositivo
Fluxo espacial
- Modifique esse caminho e essa função para ajustar o conjunto de dados UCF101 no seu dispositivo.
- Treinamento e teste
python spatial_cnn.py --resume PATH_TO_PRETRAINED_MODEL
python spatial_cnn.py --resume PATH_TO_PRETRAINED_MODEL --evaluate
Fluxo de movimento
- Modifique esse caminho e essa função para ajustar o conjunto de dados UCF101 no seu dispositivo.
- Treinamento e teste
python motion_cnn.py --resume PATH_TO_PRETRAINED_MODEL
python motion_cnn.py --resume PATH_TO_PRETRAINED_MODEL --evaluate