Treine uma rede para detectar eventos sonoros
Em alguns casos, você deseja treinar uma rede para localizar eventos de som em uma gravação, mas só tem acesso a dados "fracamente legendados", em que as legendas só indicam se um determinado evento estava presente em uma gravação, mas não onde. Apesar da limitação dos dados, é possível obter bons resultados na localização de eventos sonoros através de treinamento em dados fracamente legendados.
Extraia o conjunto de dados Audio Cats and Dogs do Wolfram Data Repository.
O conjunto de dados é composto por gravações anotadas de gatos e cães.
A duração das gravações varia entre um e 18 segundos.
Você pode manipular o conjunto de dados em um formato adequado para treinar uma rede neural e dividi-la em um subconjunto de treinamento e teste.
Inspecione a duração acumulada dos dados de treinamento.
E os dados de teste.
O codificador "AudioMelSpectrogram" é usado para alimentar o sinal de áudio na rede. Como a quantidade de dados é relativamente pequena, você pode realizar acréscimos de dados para tornar o treinamento mais eficaz.
A própria rede é baseada em um agrupamento de camadas recorrentes (GatedRecurrentLayer) e uma AggregationLayer para agrupar o resultado na dimensão de tempo. Isso permite que a rede produza um único resultado de classificação em vez de uma sequência.
Comece o treino.
Extraia a rede treinada e substitua o codificador por um sem acréscimos.
Produza um relatório do desempenho no conjunto de testes.
Ao remover a AggregationLayer e reconectar a SoftmaxLayer à rede fragmentada, você obtém uma rede que retorna uma sequência de probabilidades de classe em vez de um único resultado de classificação.
Defina uma função que receba a saída da rede e retorne uma associação de TimeSeries com as probabilidades das legendas possíveis.
Agora você pode testar essa rede resolvida no tempo. Construa um sinal juntando amostras de gatos e cães do conjunto de dados de teste.
Faça um gráfico das séries temporais das probabilidades calculadas pela rede.
Visualize os resultados da rede sobre o sinal de teste.
Defina uma função para calcular os intervalos de tempo em que a probabilidade de uma classe é maior que um limite e outra para calcular os retângulos correspondentes a esses intervalos.
Calcule os intervalos.
Visualize os intervalos sobre a forma de onda da gravação.