Obsah:

Lokalizácia systému automobilov: 11 krokov
Lokalizácia systému automobilov: 11 krokov

Video: Lokalizácia systému automobilov: 11 krokov

Video: Lokalizácia systému automobilov: 11 krokov
Video: Мини ПК на Intel N100 - AC8-N, мощная безвентиляторная платформа, установка Home Assistant OS 2024, November
Anonim
Lokalizácia systému Vazamentos
Lokalizácia systému Vazamentos

Väčšina projektov obsahuje jednu z najlepších možností, ako vybaviť senzorom piezoelétriko, zachytiť všetky aspekty, vibrácie, nie je sólo, identifikovať identifikátor, lokalizovať, spracovať proces alebo načítať údaje z oblasti neurónových, potenciálnych väzieb. uma tubulação.

Informácie o procese spracovania a realizácii algoritmov nainštalovaných na karte DRAGONBOARD 410c. Viac informácií nájdete v časti Zariadenia, ktoré sú zodpovedné za všetky priemyselné a priemyselné procesy.

Este projeto desenvolvido no Hackaton Qualcomm, durante a TecnoFACENS da Faculdade de Engenharia de Sorocaba (FACENS), participaram do projeto os graduandos de engenharia mecatrônica Eneo Juliano Bovino, Felipe Xavier, Lucas de Sousa Rodrigues, Rogér. Gomes Polo a Ronaldo P. Gomes Polo. Também sa zúčastňuje na projekte aluno Daniel de Castro Pacheco absolvent britskej technickej univerzity na Newton Paiva de Belo Horizonte. O projekte contou com o apoio dos graduandos de engenharia mecatrônica da FACENS, Lucas Nunes Monteiro e Felipe Crispim da Silva Salvagnini.

Krok 1: Zoznam materiálov

Zoznam materiálov
Zoznam materiálov

Niektoré z nasledujúcich projektov, ktoré môžu mať nasledujúci význam:

1 splatnosť Arduina

1 Dragonboard 410c

2 Ovládače, ktoré vedú k ďalšiemu prenosu motora:

4 tranzistory BC548

4 diódy 1n4007

4 odpory 4k7Ω ¼ W

1 Dodatok k ovládaču pre servomotor:

1 tranzistory BC548

1 diódy 1N4007

1 Rezistory 4k7Ω ¼ W

1 myš USB

1 Teclado USB

1 Monitor

1 Cabo HDMI

1 Robô De Esteiras - Plataforma Zumo

1 mini úložisko kremalheira a engrenagem

1 servomotor 9 g

Krok 2: Adaptação Mecânica

Image
Image

Viac a viac senzorov piezoelektrického snímania, ktoré sú nevyhnutné, ojedinelých, disponibilných, ako sú cremalheira, kompatibilné anexados, neste caso as peças foram fabricadas por uma impressora 3D, devido ao fato de se tratar de um protót tempo de execução, fixou-se o dispositivo na plataforma zumo, use fita dupla face, consistente video.

Krok 3: Acionamento Dos Motores

Obtenção Do Áudio
Obtenção Do Áudio

Vykonajte niekoľko pohybov motorov a ZUMO urobte všetko, čo je potrebné, aby ovládali všetky ovládače motorov, aby zodpovedali bežným parametrom ovládača motora alebo servomotora, aby zodpovedali obrázkom acima. um motor de corrente continua ea segunda o driver para um servo motor.

Krok 4: Obtenção Do Áudio

Viac informácií o hudbe môžete urobiť sólo, napríklad využiť jednu z nasledujúcich možností: TCC de Engenharia Mecatrônica dos graduandos Lucas Nunes Monteiro e Felipe C. da Silva Salvagnini, maiores Detales out to TCO a ďalšie e -mail [email protected].

Väčšina použitého piezoelektrického snímača a zosilňovača signálu z obehu a zosilnenia filtra.

Čo sa týka frekvencie záujmu o projekt 100 Hz a 800 Hz. Niektoré z týchto konfigurácií môžu mať konfiguráciu frekvencií amostragu 3 kHz, pretože môžu zahŕňať rôzne typy frekvencií, ako sú frekvencie a akvizície rôznych úrovní frekvencie.

Aquisição é habilitada and desabilitada através da interrupção do Arduino DUE.

Krok 5: Configuração Do Arduino DUE (linguagem C)

Configuração Do Arduino DUE (linguagem C)
Configuração Do Arduino DUE (linguagem C)

Obsahuje veľké množstvo 3000 bitov, viac ako 32 bitov, má 32 bitových úložných jednotiek a je vybavené všetkými procesormi, procesormi a procesormi DRAGONBOARD 410c. Väčšina procesov, ako sú napríklad Štít rozhrania Grove Seeed Sensor Mezzanine instalado na DRAGONBOARD 410c, que possui um microcontrolador ATmega 328, não possui spoder de processamento para essa operacaão.

O Arduino DUE konfigurácia pre prijímač alebo preberanie hudby z platne QUALCOMM DRAGONBOARD 410c prostredníctvom komunikačného sériového portu.

Ako všetky konfigurácie nemá Arduino foram:

Realizácia a aquisição dos dados;

Vysielacie karty môžu obsahovať DRAGONBOARD 410c;

Pozrite sa na program:

#include #define Numb_Sample 3000 #define DAC_Input A0

#define SERVO 7

#define PosServoMin 4 #define PosServoMax 6 #define Perioda 60 bez znamienka int Scont = 0, SNow = PosServoMin; bez znamienka dlhý int DAC [Numb_Sample], ind = Numb_Sample; neplatné TC3_Handler () {TC_GetStatus (TC1, 0); if (ind <Numb_Sample) DAC [ind ++] = analogRead (DAC_Input); ak (Scont

1); // 50% pracovný cyklus

TC_SetRC (tc, kanál, rc); TC_Start (tc, kanál); tc-> TC_CHANNEL [kanál]. TC_IER = TC_IER_CPCS | TC_IER_CPAS; // habilita os registradores tc-> TC_CHANNEL [kanál]. TC_IDR = ~ (TC_IER_CPCS | TC_IER_CPAS); // možnosť spoľahlivosti registrácie NVIC_EnableIRQ (irq); // habilita interrupção}

neplatné nastavenie ()

{Serial.begin (115200); pinMode (DAC_Input, INPUT); TimerStart (TC1, 0, TC3_IRQn, 1500); // Spustenie časovača // TC_Stop (TC1, 0); pinMode (SERVO, VÝSTUP); }

prázdna slučka ()

{/*// while (! Serial.available ()); char rc; // = Serial.read (); int index = 0; if (rc == 0) {while (! Serial.available ()); rc = Serial.read (); prepínač (rc) {prípad 1: index = 0; while (! Serial.available ()); while ((rc = Serial.read ())! = 0xFF) {index << = 8; index += rc; while (! Serial.available ()); } Serial.print (0); Serial.print (2); SendNumber (DAC [index]); Serial.print (0xFF); prestávka; prípad 3: while (! Serial.available ()); if ((Serial.read ()) == 0xFF) {SNow = PosServoMax; oneskorenie (500); ind = 0; // TC_Start (TC1, 0); while (ind <Numb_Sample); // TC_Stop (TC1, 0); SNow = PosServoMin; oneskorenie (500); Serial.print (0); Serial.print (4); Serial.print (0xFF); } prestávka; }} else if (rc == '2') {Serial.print ("Test servomotora / n"); while (! Serial.available ()); rc = Serial.read (); if (rc == '1') {Serial.print ("Režim 1 / n"); SNow = PosServoMax; } if (rc == '2') {Serial.print ("Režim 2 / n"); SNow = PosServoMin; }} */ SNow = PosServoMax; oneskorenie (100); SNow = PosServoMin; oneskorenie (100); }

Krok 6: Interfaceamento Das Tecnologias

Interfaceamento Das Tecnologias
Interfaceamento Das Tecnologias

Viac a viac informácií o Arduíno DUE ea DRAGONBOARD 410c, o tom, ako používať rozhranie pre rôzne figúrky, o možnosti použitia rozhrania USB CDC o vstup, o DUO o DRAGONBOARD 4 nevyhnutné možnosti pre KERNEL da DRAGONBOARD 410c, que não se fez por causa do curto tempo available.

Krok 7: Configuração Da DRAGONBOARD 410c (Python)

Configuração Da DRAGONBOARD 410c (Python)
Configuração Da DRAGONBOARD 410c (Python)

Konfigurácia je možná pre Arduino DUE a to pre všetky druhy realizácie a preberanie a prenos údajov. Segue código abaixo.

Pozorovanie: Abordagem utilizada no código, não funcionou devido aos níveis de tensão utilizados pelo Arduíno DUE e o Mezzanine serem nekompatibilné. Čo sa týka rozhrania USB, môže to byť nevyhnutné z pohľadu KERNEL na DRAGONBOARD 410c para que a porta fosse criada corretamente para a comunicação.

import timeimport sériový import pandy ako pd import numpy ako np

# Konfiguração da conexão serial

ser = serial. Serial (port = '/dev/ttyAMC0', #tty96B0 ', baudrate = 250000, parity = serial. PARITY_NONE, stopbits = serial. STOPBITS_ONE, bytesize = serial. EIGHTBITS)

ser.isOpen ()

print ('Nižšie zadajte svoje príkazy. / r / nAk chcete opustiť aplikáciu, zadajte "exit".')

vstup = 1

while 1: input = input (">>") if input == 'exit': ser.close () exit () elif input == 'read': ser.write (0) # Envia o comando para o Arduino DUE realizovať a zbierať správy ser.write (1) # Envia o comando para o Arduino DUE transmitir os dados coletados

lista =

pre i v rozsahu (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)

Krok 8: INTERPRETAÇÃO DOS ARQUIVOS DE AUDIO

INTERPRETAÇÃO DOS ARQUIVOS DE AUDIO
INTERPRETAÇÃO DOS ARQUIVOS DE AUDIO

Väčšina základných analógových snímok obsahuje veľké množstvo senzorov, ktoré sú nevyhnutné pre konverziu bez formátov WAV, pre všetky autority a autority pre TCC a pre spoluprácu, pre viac parametrov, pre viac parametrov a pre preberanie.. Niektoré z najdôležitejších algoritmov PYTHONu majú 3 vlny a sú kompatibilné s formátom WAV a s veľkým počtom súborov CSV. O algoritmoch, ktoré môžete použiť na stiahnutie a sťahovanie.

Algoritmy, ktoré je nevyhnutné vykonávať v rámci všetkých funkcií, ktoré sú pre systém Arduino DUE já enviará eses dados em um array de valores numéricos.

# kódovanie: utf-8

# Leitura e conversão dos audios para csv

# MÓDULOS UTILIZADOS

importná vlna import numpy ako np import pandas ako pd import matplotlib.pyplot ako plt

# FUNÇÃO PARA CONVERTER WAV EM DADOS DO ESPECTRO E SALVAR CSV

def audio_to_csv (názov_souboru): 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_s) 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 (signál), pd. DataFrame (čas)], os = 1) df.to_csv (názov_souboru + '.csv', index = False) návrat df

# CARREGANDO DÁTOVÝ RÁMEC COM OS DADOS DO AUDIO

file_name = 'Solo_com_Vazamento' df_vazamento = audio_to_csv (názov_souboru) df_vazamento.columns = ['amp', 'time'] file_name = 'Solo_sem_Vazamento' df_sem_vazamento = audio_to_csv (názov_súboru) 'dento_col_s

# GRÁFICO DO ESPECTRO DE AUDIO

figúrka, (ax1, ax2) = pl.subplots (nrows = 2, ncols = 1, figsize = (20, 10)) ax1.plot (df_vazamento ['time'], df_vazamento ['amp']) ax1.set_title ('Solo com Vazamento', fontdict = {'veľkosť písma': 20, 'fontweight': 'bold'}) ax1.set_xlabel ('Tempo [s]', fontdict = {'veľkosť písma': 16}) ax1.set_ylim ([-4e8, 4e8]) ax2.plot (df_sem_vazamento ['time'], df_sem_vazamento ['amp']) ax2.set_title ('Solo sem Vazamento', fontdict = {'veľkosť písma': 20, 'fontweight': 'bold' }) ax2.set_xlabel ('Tempo [s]', fontdict = {'veľkosť písma': 16}) ax2.set_ylim ([-4e8, 4e8]) figure.tight_layout (h_pad = 5) plt.show ()

Krok 9: Analise Visual Do Sinal

Analise Visual Do Sinal
Analise Visual Do Sinal
Analise Visual Do Sinal
Analise Visual Do Sinal
Analise Visual Do Sinal
Analise Visual Do Sinal

Com o PYTHON 3 a realizade and transformada de Fourier, este artificio matemático realiza a transformação do sinal do domínio do tempo para o domínio da frequencyência, onde se torna possível analisar as varias frequencyências, e suas amplitude, que compõem aquele sinal. Naše vizuálne analýzy sa môžu líšiť od štyroch profesionálnych spoločností, ktorých identifikácia a identifikácia existujú a existujú. Väčšina mobilných serverov, ktoré vykonávajú svoju činnosť, majú algoritmus detekcie automatiky.

Frekvencia je obmedzená na 100 Hz a 800 Hz, pričom všetky existujú a sú k dispozícii v širokom spektre frekvencií.

# coding: utf-8# Moduly využívajúce proces a transformáciu Fourierovho kódu

import pandas as pd import numpy as np import wave from matplotlib import pyplot as plt# Função que realiza a transformada de Fourier e plota os gráficos para análise def Fourier (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 amplitudy n = len (y) # Comprimento do sinal k = np. rozsah (n) T = n/Fs frq = k/T frq = frq [rozsah (n // 2)] Y = np.fft.fft (y)/n Y = Y [rozsah (n // 2)] tmp = pd. DataFrame () tmp ['amp'] = abs (Y) tmp ['freq'] = frq max_lim = max (tmp ['amp'] [(tmp ['freq']> = 100) & (tmp ['freq'] <= 800)]) obr. '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 () návrat frq, abs (Y)# Funkcie sa dajú spracovať vo veľkom formáte CSV a vo formáte Fourier definované ako read_csv (názov_súboru, init, final): df = pd.read_csv (názov_súboru + '.csv') df.columns = ['amp', ' time '] delta = final-init if init*44100> len (df) or final*44100> len (df): init = (len (df)/44100) -delta if init = 100) & (df [' freq '] <= 800)] mx = zoradené (df [' amp ']) print ("Média das amplitude:", np.round (np.mean (mx))) print ("Percentuais em relação a média das amplencies.") print ("100 maiores amplencies", np.mean (mx [-100:]) // df ['amp']. mean ()*100, "%", sep = "") print ("50 maiores amplitude:", np.mean (mx [-50:]) // df ['amp']. priemer ()*100, "%", sep = "") tlač ("10 maioresových amplitúd:", np.mean (mx [-10:]) // df ['amp']. mean ()*100, "%", sep = "") print ("Maior amplitude:", np.mean (mx [-1:]) // df ['amp']. mean ()*100, " %", sep =" ") read_csv ('Solo_com_Vazamento', 2, 10) # Exemplo de gráficos para vazamentoread_csv ('Solo_sem_Vazamento', 2, 10) # Exemplo de gráficos para sem vazamento

Krok 10: Funkcie Algoritmo Em R Para Extração Das Dos Dados

Algoritmo Em R Para Extração Das Features Dos Dados
Algoritmo Em R Para Extração Das Features Dos Dados
Algoritmo Em R Para Extração Das Features Dos Dados
Algoritmo Em R Para Extração Das Features Dos Dados

Využite algoritmus R na vykonanie procesu a jeho extra funkcie (charakteristické znaky).

Algoritmy primárnej implementácie môžu zahŕňať ďalšie identifikácie, ako aj ďalšie potreby, ktoré môžu mať za následok detekciu väčšieho počtu náhodných nárazov, ako aj ďalšie dôsledky, ktoré môžu viesť k rôznym nervovým poruchám.

Čo sa týka toho, ako sa systém líši od toho, čo robí operáciu, líši sa od toho, ako sa líši od svojho vykonávania, ale môže to znamenať ďalšiu a ďalšiu identifikáciu, ako napríklad niektoré charakteristické znaky a identifikačné znaky.

Estas features au caraterísticas são propriedades acústicas compostas por varias informações referentes ao espectro de áudio capturado, abaixo seguirá uma descrição (em inglês) destas características.

Všetky algoritmy, ktoré majú k dispozícii, nemajú k dispozícii žiadny server GitHub, ktorý obsahuje množstvo prístupných odkazov, ako napríklad možnosti modifikácie para atenderu, ako sú konkrétne špecifikované.

O softvéri sa dozviete viac o algoritme a stiahnete si aplikáciu R e do R Studio.

Extra charakteristické vlastnosti:

  • priemerná frekvencia: priemerná frekvencia (v kHz)
  • sd: štandardná odchýlka frekvencie
  • medián: stredná frekvencia (v kHz)
  • Q25: prvý kvantil (v kHz)
  • Q75: tretí kvantil (v kHz)
  • IQR: medzikvantilný rozsah (v kHz)
  • zošikmenie: šikmosť (pozri poznámku v špeciálnom popise)
  • kurt: kurtóza (pozri poznámku v špeciálnom popise)
  • sp.ent: spektrálna entropia
  • sfm: spektrálna plochosť
  • režim: frekvencia režimu
  • ťažisko: ťažisko frekvencie (pozri špecifikácia)
  • peakf: špičková frekvencia (frekvencia s najvyššou energiou)
  • meanfun: priemer základnej frekvencie meranej cez akustický signál
  • minfun: minimálna základná frekvencia meraná cez akustický signál
  • maxfun: maximálna základná frekvencia meraná cez akustický signál
  • meandóm: priemer dominantnej frekvencie meranej cez akustický signál
  • mindom: minimum dominantnej frekvencie meranej cez akustický signál
  • maxdom: maximum dominantnej frekvencie meranej cez akustický signál
  • dfrange: rozsah dominantnej frekvencie meraný cez akustický signál
  • modindx: modulačný index. Vypočítané ako akumulovaný absolútny rozdiel medzi susednými meraniami základných frekvencií vydelený frekvenčným rozsahom
  • štítok: únik alebo bez_tečenia

Algoritmo usado:

balíčky <- c ('tuneR', 'seewave', 'fftw', 'caTools', 'randomForest', 'warbleR', 'mouse', 'e1071', 'rpart', 'xgboost', 'e1071') if (dĺžka (setdiff (balíky, názvy riadkov (nainštalované.packages ())))> 0) {install.packages (setdiff (balíky, názvy riadkov (nainštalované.balíky ()))}}

knižnica (tuneR)

knižnica (seewave) knižnica (caTools) knižnica (rpart) knižnica (rpart.plot) knižnica (randomForest) knižnica (warbleR) knižnica (myši) knižnica (xgboost) knižnica (e1071)

specan3 <- funkcia (X, bp = c (0, 22), wl = 2048, prah = 5, paralelne = 1) { # Ak chcete použiť paralelné spracovanie: 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 = ","), "stĺpce (stĺpce) sa nenašli v dátovom rámci"))} else stop ("X nie je dátový rámec") #ak sú NA na začiatku alebo na konci zastávky, ak (akékoľvek (is.na (c (end, start)))) stop („NA nájdené na začiatku a/alebo konci“) #ak koniec alebo začiatok nie sú číselné zastávky if (all (class (end)! = "numeric" & class (start)! = "numeric")) stop ("'end' and 'selec' must be numeric") #if any start higher than end stop if (any (end - start <0)) stop (paste ("The start is higher than the en d in ", length (which (end - start20)) stop (paste (length (which (end - start> 20))," selection (s) longer than 20 sec ")) options (show.error.messages = TRUE) #if bp nie je vektor alebo dĺžka! = 2 zastávky, ak (! is.vector (bp)) stop ("'bp' musí byť číselný vektor dĺžky 2") else {if (! length (bp) == 2) stop („'bp' musí byť číselný vektor s dĺžkou 2")} #upozornenie na návrat, ak neboli nájdené všetky zvukové súbory 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. súborov))-dĺžka (jedinečná (sound.files [(sound.files % in % fs)])), ".wav súbory neboli nájdené")) #počet zvukových súborov v pracovnom adresári a ak 0 stop d <- which (sound.files % in % fs) if (length (d) == 0) {stop ("The.wav files are not in the working directory")} else {start <- start [d] end <- end [d] výber <- výber [d] sound.files <- sound.files [d]} # Ak rovnobežka nie je číselná, ak (! is.numeric (paralelné)) stop ("'paralelné' musí byť číselným vektorom s dĺžkou 1 "), ak (ľubovoľný (! (rovnobežný %% 1 == 0), rovnobežný 1) {možnosti (varovať = -1), ak (všetky (Sys.info () [1] ==" Windows ", requireNamespace (" parallelsugar ", tiše = TRUE) == TRUE)) lapp <- funkcia (X, FUN) rovnobežník:: mclapply (X, FUN, mc.cores = paralelný) else if (Sys.info () [1] == "Windows") {cat ("Používatelia systému Windows si musia nainštalovať balík 'parallelsugar' na paralelné výpočty (teraz to nerobíte!)") Lapp <- pbapply:: pblapply} else lapp <- funkcia (X, FUN) paralelný:: mclapply (X, FUN, mc.cores = paralelný)} else lapp <- pbapply:: pblapply možnosti (varovať = 0) ak (paralelne == 1) kat ("Meranie akustických parametrov:") x <- as.data.frame (lapp (1: dĺžka (štart), funkcia (i) {r <- tuneR:: readWave (file.path (getwd (), sound.files ), od = start , to = end , units = "seconds") b strop ([email protected]/2000) - 1) b [2] < - strop ([email protected]/2000) - 1 #frekvenčná spektrálna analýza piesnepec <- seewave:: spec (r, f = [email protected], plot = FALSE) analýza <- seewave:: specprop (songspec, f = [email protected], flim = c (0, 280/1000), plot = FALSE) #uložiť parametre priemerfreq <- analýza $ priemer/1000 sd <- analýza $ sd/1000 medián <- analýza $ medián/1000 Q25 < - analýza $ QQ75 <- analýza $ QIQR <- analýza $ IQR/1000 zošikmenie <- analýza $ šikmosť kurt <- analýza $ kurtosis sp.ent <- analýza $ sh sfm <- analýza $ sfm režim <- analýza $ režim/1000 ťažisko <- analýza $ cent/1 000 #Frekvencia s vrcholmi amplitúdy vrcholf <- 0 #seewave:: fpeaks (pieseňpec, f = [email protected], wl = wl, nmax = 3, plot = FALSE) [1, 1] #Základné frekvenčné parametre ff <- seewave:: fund (r, f = [email protected], ovlp = 50, threshold = threshold, fmax = 280, ylim = c (0, 280/1000), plot = FALSE, wl = wl) [, 2] priemerná zábava <-priemer (ff, na.rm = T) min. zábava <-min (ff, na.rm = T) maxfun <-max (ff, na.rm = T) #Dominantné parametre frekvencie 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 <- priemer (y, na.rm = TRUE) mindom <- min (y, na.rm = TRUE) maxdom <- max (y, na.rm = TRUE) dfrange <- (maxdom- mindom) trvanie <- (koniec - začiatok ) #výpočet výpočtu modulačného indexu <- vektor () pre (j, v ktorom (! is. na (y))) {zmena <- abs (y [j]- y [j + 1]) zmeny <- pripojenie (zmeny, zmena)} if (mindom == maxdom) modindx <-0 else modindx <- priemer (zmeny, na.rm = T)/dfrange #uložiť výsledky návratu (c (trvanie, stredná frekvencia, sd, medián, Q25, Q75, IQR, šikmé, kurt, sp.ent, sfm, režim, ťažisko, peakf, priemerná zábava, minfun, maxfun, meandom, mindom, maxdom, dfrange, modindx))}))) #Change result names names rownames (x) <- c ("duration", "meanfreq", "sd", "median", "Q25", „Q75“, „IQR“, „zošikmenie“, „kurt“, „sp.ent“, „sfm“, „režim“, „ťažisko“, „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") názvy riadkov (x) <- c (1: nrow (x)) return (x)}

processFolder <- funkcia (názov priečinka) { # Začnite prázdnym súborom data.frame. data <- data.frame () # Získajte zoznam súborov v priečinku. list <- list.files (názov priečinka, '\. wav') # Pridajte zoznam súborov do súboru data.frame na spracovanie. for (názov súboru v zozname) {riadok <- data.frame (názov súboru, 0, 0, 20) údaje <- rbind (údaje, riadok)} # Nastavte názvy stĺpcov. names (data) <- c ('sound.files', 'selec', 'start', 'end') # Presun do priečinka na spracovanie. setwd (názov priečinka) # Spracujte súbory. acoustics <- specan3 (data, parallel = 1) # Presunúť späť do nadradeného priečinka. setwd ('..') akustika}

pohlavie <- funkcia (filePath) {if (! existuje ('genderBoosted')) {load ('model.bin')} # Cesty nastavenia. currentPath <- getwd () fileName <- basename (filePath) cesta <- dirname (filePath) # Nastaviť adresár na čítanie súboru. setwd (cesta) # Začnite prázdnym súborom data.frame. data <- data.frame (fileName, 0, 0, 20) # Nastavte názvy stĺpcov. names (data) <- c ('sound.files', 'selec', 'start', 'end') # Process files. acoustics <- specan3 (data, parallel = 1) # Obnoviť cestu. setwd (currentPath) predikcia (genderCombo, newdata = akustika)}

# Načítať údaje

leakage <- processFolder ('caminho para o pasta com sample de áudio com vazamento') without_leakage <- processFolder ('caminho para o pasta com sample de áudio sem vazamento')

# Nastaviť štítky.

únik $ label <- 1 without_leakage $ label <- 2 data <- rbind (leakage, without_leakage) data $ label <- factor (data $ label, labels = c ('leakage', 'without_leakage'))

# Odstráňte nepoužívané stĺpce.

údaje $ trvanie <- NULL údaje $ sound.files <- NULL údaje $ výber <- NULL údaje $ peakf <- NULL

# Odstráňte riadky obsahujúce NA.

údaje <- údaje [complete.cases (data),]

# Vypíšte množinu údajov CSV.

write.csv (data, file = 'features.csv', sep = ',', row.names = F)

Krok 11: Rede Neural

Rede Neural
Rede Neural

Ide o to, čo je možné urobiť z neurónových, reaktorových a automatizovaných rekonštrukcií, ktoré môžu mať za následok zníženie počtu senzorov.

Rede neural use and do tipo MLP (Multilayer Perceptron), este modelo é treinado com dados previamente identificados e após esse treinamento o modelo implantado no sistema conseguirá realizar a identificação automática do ainal recipientbido, informando se naquele ponto existe um vazamento.

Potrebné pre realizáciu filtrácie dosiek, ako sú algumas características estavam diminuindo a taxa de acerto da rede ao invés de melhora-la. Väčšina realizovaných nehôd môže mať za následok zníženie počtu povrchových, povrchových a povrchových porúch a variácií, ktoré môžu mať za následok zníženie teploty.

Paraos testes realizoos or modelo obteve um desempenho muito bom, alcançando on maioria dos testes uma taxa de acerto de 100%, como pode ser observado on imagem anexa.

Algoritmus a využitie paraboly o modeloch a modeloch obnovenia a vykonávania rôznych činností. Žiadny systém detekcie algoritmu umohu rozdielnych sérií usadiť, pois ele realizaria o treino ou receberia um modelo já treinado da nuvem ou de alguma outra fonte e com Esse modelo realizaries as predições para cada leitura realizada.

# kódovanie: utf-8

importujte pandy ako pd

import numpy as np from sklearn.model_selection import train_test_split as tts from sklearn.neural_network import MLPClassifier as MLP from sklearn.metrics import distribution_report as cr from sklearn.metrics import confusion_matrix as cm

# Leitura dos dados to CSV

df = pd.read_csv ('features.csv') # Separação 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 neurural

model = MLP (alfa = 0,0001, learning_rate_init = 0,0001, hidden_layer_sizes = (50, 50, 50, 50), max_iter = 10 000, aktivácia = 'tanh', riešiteľ = 'lbfgs')

# Treinando modelo

modelo.fit (X_train, Y_train) result = modelo.predict (X_test)

# Mimoriadne výsledky

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") tlač (správa)

Odporúča: