Projeto onde é possível visualizar a segmentação de cenas de vídeos por clusters de descritores de alta dimensionalidade.
Você deve possuir no mínimo a versão 3.7 de python.
Utilize o gerenciador de dependências pip para instalar os pacotes necessários para rodar este programa.
Na raíz do projeto faça os seguintes passos:
cd src/
pip install -r requirements.txt
Para iniciar o programa, na raiz do projeto faça os seguintes passos:
cd src/
streamlit run run.py
O projeto vem com uma pasta em sua raíz chamada /data
, ali existe um vídeo no qual você já pode testar a ferramenta.
Ao abrir a página da ferramenta você verá o seguinte:
O que acontece é que ao abrir a ferramenta ela já entende que há um vídeo dentro da pasta /data
e começou a extrair suas features com o extrator SlowFast, como indicado no menu à esquerda.
Neste menu é possível ver em ordem:
- A opção de alterar a pasta na qual a ferramenta procura os vídeos
- O vídeo atualmente selecionado e que está sendo visualizado
- O extrator de features selecionado, ou seja, os clusters visualizados foram formados com as features extraídas com este extrator
- As opções de clusterização que formaram os clusters visualizados
Além disso, conseguimos ver o vídeo selecionado, a linha do tempo segmentada pelos clusters formados e um gráfico de dispersão de cada segmento clusterizado.
Importante mencionar que cada ponto nesse gráfico de dispersão representa um segmento de 32 frames do vídeo selecionado.
Para alterar a pasta de vídeos que a ferramenta interage basta selecionar a opção Change Directory e colocar o caminho absoluto da sua pasta de interesse.
Para alterar o extrator de features e também de qual extrator você está visualizando as features, basta selecionar no dropdown. Atualmente só existem duas opções SlowFast e I3D.
Lembrando que após a primeira vez que alguma combinação de vídeo e extrator é feita, o processo fica mais rápido já que as features agora estão salvas na pasta dos seus vídeos e a ferramentas as acessa por lá.
Por último, mas não menos importante são as opções de clusterização. Nela podemos:
- Selecionar qual algoritmo de clustering queremos utilizar(KMeans ou Agglomerative)
- Selecionar se queremos aplicar positional encoding nas features antes de clusterizá-las
- Selecionar se queremos utilizar um algoritmo baseado na métrica de silhueta para escolher o número ótimo de clusters
- Selecionar o número de clusters que queremos