Оглавление:
- Шаг 1: Lista De Materiais
- Шаг 2: Adaptação Mecânica
- Шаг 3: Acionamento Dos Motores
- Шаг 4: Obtenção Do Áudio
- Шаг 5: Настройка Arduino DUE (язык C)
- Шаг 6: Interfaceamento Das Tecnologias
- Шаг 7: Настройка DRAGONBOARD 410c (Python)
- Шаг 8: ИНТЕРПРЕТАЦИЯ DOS ARQUIVOS DE AUDIO
- Шаг 9: Анализ визуального представления до синала
- Шаг 10: Algoritmo Em R Para Extração Das Features Dos Dados
- Шаг 11: обновите Neural
Видео: Sistema Autônomo Localizador De Vazamentos: 11 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
Este projeto consiste em um robô, que através da leitura realizada por um dispositivo, equipado com um sensor piezoelétrico, captura os espectros das vibrações no solo, pode identity e localizar, com o processamento dos dados por uma rede neural, Возможности создания uma tubulação.
Этот процесс реализован для алгоритмов, установленных на DRAGONBOARD 410c. Os dados também são enviados para um serviço na nuvem, responseável por auxiliar no processo de Integência Artificial do projeto.
Этот проект для desenvolvido no Hackaton Qualcomm, durante a TecnoFACENS da Faculdade de Engenharia de Sorocaba (FACENS), участвует в проекте по выпуску инженерной мекатроники Энео Хулиано Бовино, Фелипе Ксавье, Лукас Априльян де Суса. Гомеш Поло и Роналду П. Гомеш Поло. Там же участвует в проекте Даниэля де Кастро Пачеко, выпускника инженерной механики Университета Ньютона Пайва де Белу-Оризонти. O projeto contou com o apoio dos gradandos de engenharia mecatrônica da FACENS, Лукас Нуньес Монтейро и Фелипе Криспим да Силва Сальваньини.
Шаг 1: Lista De Materiais
Для реализации проекта, после чего используются материалы:
1 Arduino Due
1 Dragonboard 410c
2 Драйверы для мотор-де-корренте континуа контендо када:
4 Transistores BC548
4 Диода 1n4007
4 резистора 4 кОм Вт
1 драйвер для серводвигателя:
1 Transistores BC548
1 Диодос 1N4007
1 резистор 4 кОм Вт
1 мышь USB
1 разъем Teclado USB
1 монитор
1 разъем HDMI
1 Робо де Эстейрас - Платформа Зумо
1 Mini dispositivo de cremalheira e engrenagem
1 серводвигатель 9g
Шаг 2: Adaptação Mecânica
Para a aquisição dos dados pelo sensor piezoelétrico, faz se needário, o desenvolvimento de um dispositivo com pinhão e cremalheira, conorme desenhos anexados, neste caso as peças foram fabricadas por uma impressionora 3D, devido ao curto de eo trara Tempo de Execução, fixou-se o dispositivo na plataforma zumo, utilizando fita dupla face, conforme vídeo.
Шаг 3: Acionamento Dos Motores
Чтобы выполнить движение двигателей, сделать роботов ZUMO и сделать устройство captura, необходимо установить драйверы для двигателей, работающих в непрерывном режиме, и драйвер для сервомотора, в соответствии с фигурами acima, отправить примерную фигуру или драйвер гм мотор корренте континуа и второй водитель пара серводвигателя.
Шаг 4: Obtenção Do Áudio
Para obtenção do espectro de áudio das vibrações do solo, foi utilizado um dispositivo desenvolvido como parte do TCC de Engenharia Mecatrônica dos gradandos Lucas Nunes Monteiro e Felipe C. da Silva Salvagnini, maiores detalhes sobre o TCC dodemore sobre de solváníní электронная почта [email protected].
Это устройство использует пьезоэлементный датчик и его схему, которая реализует фильтрующий элемент и усиление сигнала.
Как частота интереса для проекта, установленного на 100 Гц и 800 Гц. Para isso o dispositivo de sensoriamento foi configurado com uma frequência de amostragem de 3 kHz para que sejam respeitada as condições do teorema de amostragem de Nyquist, onde a frequência de aquisição deve estar pelo menos duas vezes acima das frequudasnias.
Активация и отказоустойчивость при прерывании работы Arduino DUE.
Шаг 5: Настройка Arduino DUE (язык C)
Devido a grande quantidade de dados, cerca de 3000 pontos por segundo, do typeo inteiro de 32 bit, gerados pelo dispositivo de sensoriamento e needários para processamento dos algoritmos na DRAGONBOARD 410c, foi utilizado o Arduino DUE para fazerdao an ugma Entra После процесса, это необходимо для защиты интерфейса Grove Seeed Sensor Mezzanine, установленного на DRAGONBOARD 410c, с возможностью микроконтроллера ATmega 328, без возможности обработки для работы.
Arduino DUE для конфигурации для приемника или команд enviados da plataforma QUALCOMM DRAGONBOARD 410c через последовательный порт.
Как указано в конфигурации для Arduino:
Realizar a aquisição dos dados;
Transmitir os dados obtidos for DRAGONBOARD 410c;
Перейти к программе:
# include # define Numb_Sample 3000 #define DAC_Input A0
#define SERVO 7
#define PosServoMin 4 #define PosServoMax 6 #define Period 60 unsigned int Scont = 0, SNow = PosServoMin; беззнаковый длинный int DAC [Numb_Sample], ind = Numb_Sample; недействительным TC3_Handler () {TC_GetStatus (TC1, 0); если (ind <Numb_Sample) DAC [ind ++] = analogRead (DAC_Input); если (Scont
1); // 50% рабочий цикл
TC_SetRC (tc, канал, rc); TC_Start (tc, канал); tc-> TC_CHANNEL [канал]. TC_IER = TC_IER_CPCS | TC_IER_CPAS; // возможность регистрации tc-> TC_CHANNEL [канал]. TC_IDR = ~ (TC_IER_CPCS | TC_IER_CPAS); // отключение регистраторов NVIC_EnableIRQ (irq); // habilita interrupção}
установка void ()
{Serial.begin (115200); pinMode (DAC_Input, INPUT); TimerStart (TC1, 0, TC3_IRQn, 1500); // Запуск таймера // TC_Stop (TC1, 0); pinMode (СЕРВО, ВЫХОД); }
пустой цикл ()
{/ * // while (! Serial.available ()); char rc; // = Serial.read (); int index = 0; если (rc == 0) {в то время как (! Serial.available ()); rc = Serial.read (); switch (rc) {case 1: index = 0; пока (! Serial.available ()); в то время как ((rc = Serial.read ())! = 0xFF) {индекс << = 8; индекс + = rc; в то время как (! Serial.available ()); } Serial.print (0); Серийный принт (2); SendNumber (DAC [индекс]); Serial.print (0xFF); перерыв; случай 3: while (! Serial.available ()); если ((Serial.read ()) == 0xFF) {SNow = PosServoMax; задержка (500); ind = 0; // TC_Start (TC1, 0); в то время как (ind <Numb_Sample); // TC_Stop (TC1, 0); SNow = PosServoMin; задержка (500); Serial.print (0); Серийный принт (4); Serial.print (0xFF); } перерыв; }} else if (rc == '2') {Serial.print ("Проверить серводвигатель / n"); в то время как (! Serial.available ()); rc = Serial.read (); if (rc == '1') {Serial.print ("Режим 1 / n"); SNow = PosServoMax; } if (rc == '2') {Serial.print ("Режим 2 / n"); SNow = PosServoMin; }} * / SNow = PosServoMax; задержка (100); SNow = PosServoMin; задержка (100); }
Шаг 6: Interfaceamento Das Tecnologias
Для соединения с Arduino DUE ea DRAGONBOARD 410c, начальное использование интерфейса для текущего изображения, без какого-либо возможного исполняемого файла, для опционального использования интерфейса USB CDC на Arduino DUE с очередью DRAGONBOARD 410c, DRAGONBOARD Необходимо перекомпилировать KERNEL da DRAGONBOARD 410c, чтобы не было никаких изменений в текущем темпе.
Шаг 7: Настройка DRAGONBOARD 410c (Python)
Конфигурация для среды Arduino DUE для команд для реализации управления данными и передачей данных. Segue código abaixo.
Observação: abordagem utilizada no código, não funcionou devido aos níveis de tensão utilizados pelo Arduíno DUE e o Mezzanine serem несовместим. Если вы хотите использовать интерфейс USB, необходимо перекомпилировать KERNEL на DRAGONBOARD 410c, чтобы установить порт для связи.
Импорт timeimport последовательный импорт pandas как pd import numpy as np
# Configuração da conexão serial
ser = serial. Serial (порт = '/ dev / ttyAMC0', # tty96B0 ', baudrate = 250000, parity = serial. PARITY_NONE, stopbits = serial. STOPBITS_ONE, bytesize = serial. EIGHTBITS)
ser.isOpen ()
print ('Введите свои команды ниже. / r / nВставьте "exit", чтобы выйти из приложения.')
input = 1
while 1: input = input (">>") if input == 'exit': ser.close () exit () elif input == 'read': ser.write (0) # Envia o comando para o Arduino DUE Реализуйте колету дос дадос ser.write (1) # Envia o comando para o Arduino DUE transferir os dados coletados
lista =
для i в диапазоне (3000):
ser.write (i / 256) ser.write ((i <0: out = ser.read (2) if (out == 0x0002): atual = 0 c = ser.read (1) while (c! = 0xFF)): atual << 8 atual + = cc = ser.read (1) lista.append (atual)
Шаг 8: ИНТЕРПРЕТАЦИЯ DOS ARQUIVOS DE AUDIO
Para poder realizar uma primeira análise dos dados obtidos através do sensor, se fez needária a converão dos arquivos no formato WAV, fornecidos pelos alunos autores do TCC e colaboradores do projeto, para valores numéricos, que sãogor utilizados anados nos als. Для реализации используется алгоритм PYTHON 3, который хранится в WAV и записывает данные в формате CSV. О алгоритме, использующем переход к следующему элементу и им anexo для загрузки.
Этот алгоритм не требует наличия функции для системы, в которой используется Arduino DUE já enviará esses dados em um array de valores numéricos.
# coding: utf-8
# Слушайте и слушайте аудио для CSV
# MÓDULOS UTILIZADOS
import wave import numpy as np import pandas as pd import matplotlib.pyplot as plt
# FUNÇÃO PARA CONVERTER WAV EM DADOS DO ESPECTRO E SALVAR CSV
def audio_to_csv (имя_файла): wave_file = wave.open (file_name + '. wav', 'rb') data_size = wave_file.getnframes () sample_rate = wave_file.getframerate () time_step = 1 / sample_rate waveData = wave_file.readframes (data_file.readframes (data_file.readframes)) signal = np.fromstring (waveData, dtype = 'int32') Time = np.linspace (start = 0, stop = data_size / sample_rate, num = data_size, endpoint = True) df = pd.concat ([pd. DataFrame (signal), pd. DataFrame (Time)], axis = 1) df.to_csv (file_name + '.csv', index = False) return df
# CARREGANDO DATA FRAME COM OS DADOS DO AUDIO
file_name = 'Solo_com_Vazamento' df_vazamento = audio_to_csv (имя_файла) df_vazamento.columns = ['amp', 'time'] file_name = 'Solo_sem_Vazamento' df_sem_vazamento = audio_to_csv (имя_файла) [имя_файла) dfazament_oment_
# GRÁFICO DO ESPECTRO DE AUDIO
рисунок, (ax1, ax2) = plt.subplots (nrows = 2, ncols = 1, figsize = (20, 10)) ax1.plot (df_vazamento ['time'], df_vazamento ['amp']) ax1.set_title ('Solo com Vazamento', fontdict = {'fontsize': 20, 'fontweight': 'bold'}) ax1.set_xlabel ('Tempo [s]', fontdict = {'fontsize': 16}) ax1.set_ylim ([-4e8, 4e8]) ax2.plot (df_sem_vazamento ['time'], df_sem_vazamento ['amp']) ax2.set_title ('Solo sem Vazamento', fontdict = {'fontsize': 20, 'fontweight': 'жирный' }) ax2.set_xlabel ('Tempo [s]', fontdict = {'fontsize': 16}) ax2.set_ylim ([- 4e8, 4e8]) figure.tight_layout (h_pad = 5) plt.show ()
Шаг 9: Анализ визуального представления до синала
Com o PYTHON 3 реализован как преобразование Фурье, это искусственное математическое преобразование, которое делает преобразование в доминирующее положение в темпе, пара о доминиу да частоты, когда оно может быть проанализировано как varias frequências, e suasemample, que compinal. Pela análise visual do gráfico da transformada de Fourier um profissional com conhecimentos específicos poderá идентифицирует существование algum vazamento na tubulação. Estes gráficos servirão para validação das análises realizadas pelo algoritmo de Detecção automática.
Limitando или eixo das frequências entre 100Hz e 800Hz, хорошо слышно, что существует в зависимости от того, что происходит при наблюдении за диапазоном частот.
# coding: utf-8 # Модули, использующие процесс преобразования Фурье
import pandas as pd import numpy as np import wave from matplotlib import pyplot as plt # Функция преобразования Фурье и графика графического анализа для анализа определения Фурье (df_list): Fs = 44100; # Taxa de amostragem em Hz Ts = 1.0 / Fs; # Intervalo de amostragem y = pd.concat (df_list) t = y ['time'] # Vetor de tempos y = y ['amp'] # Vetor de ammostragem n = len (y) # Comprimento do sinal k = np. arange (n) T = n / Fs frq = k / T frq = frq [диапазон (n // 2)] Y = np.fft.fft (y) / n Y = Y [диапазон (n // 2)] tmp = pd. DataFrame () tmp ['amp'] = abs (Y) tmp ['freq'] = frq max_lim = max (tmp ['amp'] [(tmp ['freq']> = 100) & (tmp ['freq'] <= 800)]) fig, ax = plt.subplots (2, 1, figsize = (20, 10)) ax [0].plot (t, y) ax [0].set_xlabel ('Time') ax [0].set_ylabel ('Amplitude') ax [1].plot (frq, abs (Y), 'r') ax [1].set_xlim ([100, 800]) ax [1].set_ylim ([0, max_lim]) ax [1].set_xlabel ('Freq (Hz)') ax [1].set_ylabel ('| Y (freq) |') plt.show () return frq, abs (Y).) # Функция создания файла для файлов CSV и функции Фурье def read_csv (имя_файла, init, final): df = pd.read_csv (file_name + '.csv') df.columns = ['amp', ' time '] delta = final-init, если init * 44100> len (df) или final * 44100> len (df): init = (len (df) / 44100) -delta, если init = 100) & (df [' freq '] <= 800)] mx = sorted (df [' amp ']) print ("Média das ampitude:", np.round (np.mean (mx))) print ("Percentuais em relação a média das амплитуды.") print ("100 основных амплитуд", np.mean (mx [-100:]) // df ['amp']. mean () * 100, "%", sep = "") print ("50 основных амплитуд:", np.mean (mx [-50:]) // df ['amp']. mean () * 100, "%", sep = "") print ("10 основных амплитуд:", np.mean (mx [-10:]) // df ['amp']. mean () * 100, "%", sep = "") print ("Основная амплитуда:", np.mean (mx [-1:]) // df ['amp']. mean () * 100, " % ", sep =" ") read_csv ('Solo_com_Vazamento', 2, 10) # Образец графического изображения для vazamentoread_csv ('Solo_sem_Vazamento', 2, 10) # Образец графического изображения для семантического
Шаг 10: Algoritmo Em R Para Extração Das Features Dos Dados
Использование алгоритма R для реализации процесса и дополнительных функций (características) dos dados obtidos.
Этот пример алгоритма реализации дополнительной идентификации, ондее необходимого сабля, что и arquivo де áudio trata-se de uma amostra vazamento detectado ou não, isso por que os dados resultantes desse processo servirão para o treinamento da rede neural utilizada.
Para quando o sistema estiver em modo de operação um algoritmo um pouco Diferente será executado, onde não este fará a extração não identity, gerando somente as características sem uma identifyação.
Estas включает в себя наши характеристики, которые используются в акустических компостах, по разным сведениям, которые относятся к аудио, а также по определению звуковых характеристик (на английском языке).
Этот алгоритм является частью проекта, который предоставляет GitHub и предоставляет доступ к ссылкам или сообщениям, изменяемым для конкретных проектов.
Программное обеспечение, используемое для основного или бесплатного алгоритма, загрузите для интерпретатора R e do R Studio.
Экстраидные характеристики:
- meanfreq: средняя частота (в кГц)
- sd: стандартное отклонение частоты
- median: средняя частота (в кГц)
- Q25: первый квантиль (в кГц)
- Q75: третий квантиль (в кГц)
- IQR: межквантильный диапазон (в кГц)
- skew: асимметрия (см. примечание в описании specprop)
- курт: эксцесс (см. примечание в описании specprop)
- sp.ent: спектральная энтропия
- SFM: спектральная плоскостность
- режим: частота режима
- centroid: частотный центроид (см. specprop)
- peakf: пиковая частота (частота с наибольшей энергией)
- meanfun: среднее значение основной частоты, измеренное по акустическому сигналу
- minfun: минимальная основная частота, измеренная через акустический сигнал
- maxfun: максимальная основная частота, измеренная через акустический сигнал
- meandom: среднее значение доминирующей частоты, измеренное по акустическому сигналу
- mindom: минимум доминирующей частоты, измеренной в акустическом сигнале
- maxdom: максимум доминирующей частоты, измеренной в акустическом сигнале
- dfrange: диапазон доминирующей частоты, измеренной в акустическом сигнале.
- modindx: индекс модуляции. Рассчитывается как накопленная абсолютная разница между соседними измерениями основных частот, деленная на частотный диапазон.
- метка: утечка или без_ утечки
Алгоритмо использования:
пакеты <- c ('tuneR', 'seewave', 'fftw', 'caTools', 'randomForest', 'warbleR', 'mice', 'e1071', 'rpart', 'xgboost', 'e1071'), если (length (setdiff (packages, rownames (installed.packages ())))> 0) {install.packages (setdiff (packages, rownames (installed.packages ())))}
библиотека (tuneR)
библиотека (seewave) библиотека (caTools) библиотека (rpart) библиотека (rpart.plot) библиотека (randomForest) библиотека (warbleR) библиотека (мыши) библиотека (xgboost) библиотека (e1071)
specan3 <- function (X, bp = c (0, 22), wl = 2048, threshold = 5, parallel = 1) {# Чтобы использовать параллельную обработку: library (devtools), install_github ('nathanvan / parallelsugar') if (class (X) == "data.frame") {if (all (c ("sound.files", "selec", "start", "end")% in% colnames (X))) {start <- as.numeric (unlist (X $ start)) end <- as.numeric (unlist (X $ end)) sound.files <- as.character (unlist (X $ sound.files)) selec <- as.character (unlist (X $ selec))} else stop (paste (paste (c ("sound.files", "selec", "start", "end") [! (c ("sound.files", "selec", "start", "end")% in% colnames (X))], collapse = ","), "столбцы не найдены во фрейме данных"))} else stop ("X не является фреймом данных") # если в начальной или конечной остановке есть НП if (any (is.na (c (end, start)))) stop ("НП найдены в начале и / или конце") # если конец или начало не являются числовым значением остановки if (all (class (end)! = "numeric" & class (start)! = "numeric")) stop ("'end' и 'selec' должны быть числовыми") # если любое начало выше конечной остановки if (any (end - start <0)) stop (paste ("Начало выше, чем en d in ", длина (which (end - start20)) stop (paste (length (which (end - start> 20))," выбор (ы) длиннее 20 секунд ")) options (show.error.messages = TRUE) # if bp не является вектором или длиной! = 2 stop if (! is.vector (bp)) stop ("'bp' должен быть числовым вектором длины 2") else {if (! length (bp) == 2) stop ("'bp' должен быть числовым вектором длины 2")} # предупреждение возврата, если не все звуковые файлы были найдены fs <- list.files (path = getwd (), pattern = ".wav $", ignore.case = TRUE) if (length (unique (sound.files [(sound.files% in% fs)]))! = length (unique (sound.files))) cat (paste (length (unique (sound. files)) - length (unique (sound.files [(sound.files% in% fs)])), «.wav файл (ы) не найден»)) # подсчитать количество звуковых файлов в рабочем каталоге и если 0 остановить d <- which (sound.files% in% fs) if (length (d) == 0) {stop ("Файлы.wav не находятся в рабочем каталоге")} else {start <- start [d] end <- end [d] selec <- selec [d] sound.files <- sound.files [d]} # Если parallel не является числовым if (! is.numeric (parallel)) stop ("'parallel' must числовой вектор длины 1 ") if (any (! (parallel %% 1 == 0), parallel 1) {options (warn = -1) if (all (Sys.info () [1] ==" Windows ", requireNamespace (" parallelsugar ", quietly = TRUE) == TRUE)) lapp <- function (X, FUN) parallelsugar:: mclapply (X, FUN, mc.cores = parallel) else if (Sys.info () [1] == "Windows") {cat ("Пользователям Windows необходимо установить пакет 'parallelsugar' для параллельных вычислений (сейчас вы этого не делаете!)") Lapp <- pbapply:: pblapply} else lapp <- function (X, FUN) parallel:: mclapply (X, FUN, mc.cores = parallel)} else lapp <- pbapply:: pblapply options (warn = 0) if (parallel == 1) cat ("Измерение акустических параметров:") x <- as.data.frame (lapp (1: длина (начало), функция (i) {r <- tuneR:: readWave (file.path (getwd (), sound.files ), from = начало , до = конец , units = "секунды") b потолок ([email protected]/2000) - 1) b [2] <- потолок ([email protected]/2000) - 1 # анализ частотного спектра songpec <- seewave:: spec (r, f = [email protected], plot = FALSE) analysis <- seewave:: specprop (songpec, f = [email protected], flim = c (0, 280/1000), plot = FALSE) #save parameters meanfreq <- analysis $ mean / 1000 sd <- analysis $ sd / 1000 median <- analysis $ median / 1000 Q25 < - анализ $ QQ75 <- анализ $ QIQR <- анализ $ IQR / 1000 перекос <- анализ $ асимметрия курт <- анализ $ kurtosis sp.ent <- анализ $ sh sfm <- анализ $ sfm mode <- анализ $ mode / 1000 centroid <- analysis $ cent / 1000 # Частота с пиками амплитуды peakf <- 0 # seewave:: fpeaks (songpec, f = [email protected], wl = wl, nmax = 3, plot = FALSE) [1, 1] # Основные параметры частоты ff <- seewave:: fund (r, f = [email protected], ovlp = 50, threshold = threshold, fmax = 280, ylim = c (0, 280/1000), plot = FALSE, wl = wl) [, 2] meanfun <-mean (ff, na.rm = T) minfun <-min (ff, na.rm = T) maxfun <-max (ff, na.rm = T) # Основные параметры частоты y <- seewave:: dfreq (r, f = [email protected], wl = wl, ylim = c (0, 280/1000), ovlp = 0, plot = F, threshold = threshold, bandpass = b * 1000, fftw = TRUE) [, 2] meandom <- mean (y, na.rm = TRUE) mindom <- min (y, na.rm = TRUE) maxdom <- max (y, na.rm = TRUE) dfrange <- (maxdom - mindom) duration <- (end - start ) # изменение индекса модуляции <- vector () for (j in which (! is. na (y))) {change <- abs (y [j] - y [j + 1]) changes <- append (changes, change)} if (mindom == maxdom) modindx <-0 else modindx <- mean (changes, na.rm = T) / dfrange #save results return (c (duration, meanfreq, sd, median, Q25, Q75, IQR, skew, kurt, sp.ent, sfm, mode, centroid, peakf, meanfun, minfun, maxfun, meandom, mindom, maxdom, dfrange, modindx))})) # изменить имена результатов rownames (x) <- c ("duration", "meanfreq", "sd", "median", "Q25", Q75, IQR, skew, kurt, sp.ent, sfm, mode, centroid, peakf, meanfun, minfun, maxfun, "meandom", "mindom", "maxdom", "dfrange", "modindx") x <- data.frame (sound.files, selec, as.data.frame (t (x))) colnames (x) [1: 2] <- c ("sound.files", "selec") rownames (x) <- c (1: nrow (x)) return (x)}
processFolder <- function (folderName) {# Начать с пустого data.frame. data <- data.frame () # Получить список файлов в папке. list <- list.files (folderName, '\. wav') # Добавить список файлов в data.frame для обработки. for (fileName in list) {row <- data.frame (fileName, 0, 0, 20) data <- rbind (data, row)} # Установить имена столбцов. names (data) <- c ('sound.files', 'selec', 'start', 'end') # Переместить в папку для обработки. setwd (имя_папки) # Обрабатывать файлы. acoustics <- specan3 (data, parallel = 1) # Вернуться в родительскую папку. setwd ('..') акустика}
гендер <- function (filePath) {if (! exists ('genderBoosted')) {load ('model.bin')} # Настроить пути. currentPath <- getwd () fileName <- basename (filePath) path <- dirname (filePath) # Установить каталог для чтения файла. setwd (path) # Начать с пустого data.frame. data <- data.frame (fileName, 0, 0, 20) # Установить имена столбцов. names (data) <- c ('sound.files', 'selec', 'start', 'end') # Обрабатывать файлы. acoustics <- specan3 (data, parallel = 1) # Восстановить путь. setwd (currentPath) pred (полCombo, newdata = acoustics)}
# Загрузить данные
утечка <- processFolder ('caminho para o pasta com samples de áudio com vazamento') without_leakage <- processFolder ('caminho para o pasta com samples de áudio sem vazamento')
# Установить метки.
утечка $ метка <- 1 без_ утечки $ метка <- 2 данные <- rbind (утечка, без_ утечки) данные $ метка <- фактор (данные $ метка, метки = c ('утечка', 'без_ утечки'))
# Удалить неиспользуемые столбцы.
data $ duration <- NULL data $ sound.files <- NULL data $ selec <- NULL data $ peakf <- NULL
# Удалить строки, содержащие NA.
данные <- данные [complete.cases (данные),]
# Записываем набор данных csv.
write.csv (данные, файл = 'features.csv', sep = ',', row.names = F)
Шаг 11: обновите Neural
Идея сделать uso de uma rede neural, является de realizar um reconhecimento automatizado através dos dados coletados pelo dispositivo de sensoriamento.
Новое нейронное использование типа MLP (Multilayer Perceptron), это модель и Treinado com dados previamente Identificados e após esse treinamento or modelo implantado no sistema consguirá realizar a identityaoticaotica do sinal Recebidole of Seinal Recebidoment, Informando Seal Recebidole of Sebal Recebidoment, Informando Seal Recebidoment.
Foi needário realizar uma filtragem dos dados de entrada, pois algumas características estavam diminuindo a taxon de acerto da rede ao invés de melhora-la. Não foi realizado nenhuma abordagem estatística muito aprofundada, mas mesmo com um trabalho mais superficial pode-se chegar a algumas varáveis com bons desempenhos.
Para os testes realizados o modelo obteve um desempenho muito bom, alcançando na maioria dos testes uma taxa de acerto de 100%, como pode ser observado na imagem anexa.
Этот алгоритм используется для трэнара или модели да rede e retornar a taxa de acerto do mesmo. Нет системы детектирования алгоритма использования различных алгоритмов, поис-эле-реализация о треках или реализаторах в моделях с использованием новых моделей или алгоритмов реализации в качестве предикатов для реализации новой версии.
# coding: utf-8
импортировать панд как pd
импортировать numpy как np из sklearn.model_selection import train_test_split как tts из sklearn.neural_network импортировать MLPClassifier как MLP из sklearn.metrics импортировать классификацию_report как cr из sklearn.metrics импортировать confusion_matrix как cm
# Leitura dos dados do CSV
df = pd.read_csv ('features.csv') # Разделить das entradas df_X = df [df.columns [: len (df.columns) -1] # Filtrando as entradas df_X = df_X
# Separando dados para treino e teste
X_train, X_test, Y_train, Y_test = tts (df_X, df_Y, test_size = 0.1)
# Criando modelo de rede neural
modelo = MLP (альфа = 0,0001, скорость обучения_init = 0,0001, hidden_layer_sizes = (50, 50, 50, 50), max_iter = 10000, Activation = 'tanh', solver = 'lbfgs')
# Treinando modelo
modelo.fit (X_train, Y_train) result = modelo.predict (X_test)
# Imprimindo resultados
report = cr (Y_test, result) mat = cm (y_pred = result, y_true = Y_test) print ("Matriz de confusão") print (mat, end = "\ n / n") print ("Relatório de Classificação") print (отчет)
Рекомендуемые:
Projeto IoT - Sistema Detector De Fumaça: 5 шагов
Projeto IoT - Sistema Detector De Fumaça: Введение в Sistema Detector de Fumaça, состоящее из решения IoT с целью разрешения мониторинга тревожных сигналов, возникающих при использовании приложений Android. Этот проект базируется на микроконтроллере, который поддерживает связь с
SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 шагов
SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: PONTIF Í CIA UNIVERSIDADE CAT Ó LICA DE MINAS GERAISCurso: Especializa ç ã o em Arquitetade de; ccedil; ã o em Arquitetade de; ccedil; Профессор: Ило Риверо
Sistema De Prevenção De Deslizamentos Com Sensor MPU-6050: 6 шагов
Система превентивного контроля Com Sensor MPU-6050: Датчик MPU-6050 - это микросхема, которая может работать с измерителем и гигроскопическим типом MEMS. São 3 eixos para o acelerômetro e 3 eixos para o giroscópio, sendo ao todo 6 graus de liberdade (6DOF). Вам нужно предоставить desenvolver um protótipo de um sistema de preve
Sistema De Irrigação Automático Para Plantas: 8 шагов
Sistema De Irrigação Automático Para Plantas: A irrigação é uma das tecnologias mais utilizadas por Agricultores pois esta atividade Independence da ocorrência de chuvas, garante uma safra uniforme, reduz a falha humana, minimisand
Sistema De Suporte a Eficiência Energética Para Refrigeradores: 14 шагов
Sistema De Suporte a Eficiência Energética Para Refrigeradores: Olá a todos, tudo bem. Neste projeto apresento as etapas para o desenvolvimento de um sistema de apoio para a gerência do consumo e eficiência energética em coldradores.Mas primeiro, vamos contextualizar voiceê do проблема existente: Em tempos de cr