Demonstração do PyTorch Keynote 2024
Visão geral
Este projeto é uma demonstração única das capacidades do PyTorch, criada para a PyTorch Conference 2024. Ele combina visão computacional e síntese de áudio para gerar sons melódicos com base em imagens de entrada. O aplicativo usa uma rede neural PyTorch para analisar imagens e extrair recursos, que são então usados para criar músicas variadas de estilo eletrônico. Este projeto de código aberto, nativo da nuvem, mostra o poder do aprendizado de máquina em aplicativos criativos.
Características
- Faça upload de qualquer imagem e receba uma composição musical única baseada nessa imagem
- Análise de imagem baseada em PyTorch usando um modelo CNN personalizado
- Geração dinâmica de música influenciada por recursos de imagem
- Interface baseada na Web para fácil interação
- Aplicativo Dockerizado para implantação e escalabilidade simples
- Configuração do Kubernetes para implantação nativa em nuvem
Pilha de tecnologia
- Frontend: React com Tailwind CSS para estilização
- Back-end: Flask com Flask-CORS para API
- Framework ML: PyTorch para análise de imagens
- Processamento de áudio: NumPy e SciPy para geração de som
- Processamento de imagens: travesseiro (PIL) para tratamento de imagens
- Conteinerização: Docker e Docker Compose
- Orquestração: Kubernetes
Pré-requisitos
- Docker e Docker Compose para desenvolvimento local
- Cluster Kubernetes para implantação em nuvem (Kind pode ser usado para desenvolvimento local de Kubernetes)
Começando
Desenvolvimento Local
Clone o repositório:
git clone https://github.com/onlydole/pytorch-keynote-2024.git
cd pytorch-keynote-2024
Crie e execute o contêiner Docker:
docker compose up --build
Abra seu navegador e navegue até http://localhost:8080
Implantação do Kubernetes
Se você não tiver um cluster Kubernetes, poderá usar Kind para criar um localmente:
kind create cluster --config cluster.yml
Aplique as configurações do Kubernetes:
kubectl apply -f kubernetes/
Acesse o aplicativo:
Abra seu navegador e navegue até http://localhost:8080
Como funciona
- O usuário carrega uma imagem por meio da interface web baseada em React.
- A imagem é enviada para o backend do Flask.
- A imagem é processada por um PyTorch CNN customizado, extraindo vários recursos.
- Esses recursos influenciam diferentes aspectos da geração musical.
- O backend gera um clipe de áudio exclusivo.
- O áudio gerado é enviado de volta ao navegador do usuário para reprodução.
Roteiros
-
startup.sh
: Script para iniciar a aplicação -
shutdown.sh
: Script para desligar o aplicativo
Contribuindo
Aceitamos contribuições! Sinta-se à vontade para enviar uma solicitação pull.
CI/CD
Este projeto usa GitHub Actions para construir e publicar a imagem do contêiner. Você pode visualizar o status da execução mais recente usando os emblemas na parte superior deste README.
Licença
Este projeto está licenciado sob a Licença Apache 2.0. Consulte o arquivo LICENSE para obter detalhes.
Agradecimentos
- Equipe PyTorch por sua poderosa estrutura de aprendizado profundo
- Equipe Flask para a estrutura web leve
- Equipe React para a biblioteca frontend
- A comunidade de código aberto para diversas ferramentas e bibliotecas usadas neste projeto