সুচিপত্র:
- ধাপ 1: Lista De Materiais
- ধাপ 2: Adaptação Mecânica
- ধাপ 3: Acionamento Dos Motores
- ধাপ 4: Obtenção Do Áudio
- ধাপ 5: কনফিগুরেশন ডো আরডুইনো ডিউ (ভাষাগত সি)
- ধাপ 6: ইন্টারফেসামেন্টো দাস টেকনোলজি
- ধাপ 7: কনফিগুরেশন দা ড্রাগনবোর্ড 410c (পাইথন)
- ধাপ 8: ইন্টারপ্রেটাও ডস আরকুইভোস ডি অডিও
- ধাপ 9: Análise Visual Do Sinal
- ধাপ 10: Algoritmo Em R Para Extração Das বৈশিষ্ট্য Dos Dados
- ধাপ 11: রিড নিউরাল
ভিডিও: Sistema Autônomo Localizador De Vazamentos: 11 ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 07:59
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 identificar e localizar, com o processamento dos dados por uma rede neural vazevos deevaze deuvaze de nuevaze, deev vs de deev vs de deev vs de deev vs de deev vs de deev vns uma tubulação।
O processamento destes dados é realizado por algoritmos instalados na DRAGONBOARD 410c। Os dados também são enviados para um serviço na nuvem, responsável por auxiliar no processo de Integência Artificial do projeto।
Este projeto foi 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 Rogues de Rouas de Rouaso। গোমেস পোলো এবং রোনালদো পি গোমেস পোলো। Também participou do projeto o aluno Daniel de Castro Pacheco graduando de engenharia mecânica na Universidade Newton Paiva de Belo Horizonte। O projeto contou com o apoio dos graduandos de engenharia mecatrônica da FACENS, Lucas Nunes Monteiro e Felipe Crispim da Silva Salvagnini।
ধাপ 1: Lista De Materiais
প্যারা রিয়েলিজাও ডেস্ট প্রজেটো, ওএস সেগুইন্টেস ম্যাটেরিয়াস ফোরাম ইউটিলিজাদোস:
1 Arduino ডিউ
1 ড্রাগনবোর্ড 410c
2 ড্রাইভার মোটর ডি corrente Continua কনটেইন্ডো Cada um জন্য:
4 ট্রানজিস্টর BC548
4 ডায়োডোস 1n4007
4 রোধকারী 4k7Ω ¼ W
1 মোটর মোটর প্রতিযোগিতার জন্য ড্রাইভার:
1 ট্রানজিস্টোর BC548
1 ডায়োডোস 1N4007
1 প্রতিরোধক 4k7Ω ¼ ওয়াট
1 মাউস ইউএসবি
1 টেকলাডো ইউএসবি
1 মনিটর
1 ক্যাবো এইচডিএমআই
1 Robô De Esteiras - Plataforma Zumo
1 মিনি ডিসপোসিটিভো ডি ক্রিমালহেইরা এবং ইঞ্জিনিয়ারেজ
1 Servo মোটর 9g
ধাপ 2: Adaptação Mecânica
পাড়া একটি aquisição ডস dados pelo সেন্সর piezoelétrico, Faz SE necessário হে desenvolvimento ডি উম dispositivo কম Pinhão ই cremalheira, conforme desenhos anexados, যেমন peças foram fabricadas Por পায়ূ impressora 3D neste Caso, devido Ao fato ডি SE tratar ডি উম protótipo ই Ao curto tempo de execução, fixou-se o dispositivo na plataforma zumo, utilizando fita dupla face, conforme vídeo।
ধাপ 3: Acionamento Dos Motores
প্যারা এক্সিকিউটার a movimentação dos motores do robô ZUMO e do dispositivo de captura, fez-se essentialária a montagem de dois ড্রাইভার para os motores de corrente Continu e e um driver para o servo motor, conforme as figuras acima, sendo a primeira figura o driver para um মোটর de corrente Continua ea segunda o ড্রাইভার para um servo motor।
ধাপ 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 graduandos Lucas Nunes Monteiro e Felipe C. da Silva Salvagnini, maiores detaso deres de sobics dobre de soCCs os dobre de sos os dobre [email protected] ইমেইল করুন।
Este dispositivo utiliza-se de um sensor piezoelétrico e uma placa de circuito que realiza a filtragem e amplificação do sinal।
যেমন ফ্রিকোয়েন্সি ডি ইন্টারেসেস প্যারা ও প্রজেটো এস্টো এন্ট্রে 100Hz ই 800Hz। 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 veas acas dias veas acesia dzesas vezeses estes d das vezeses estzess de das esas d das vezeses estzess de das esas dzesas veas
A aquisição é habilitada e desabilitada através da interrupção do Arduino DUE।
ধাপ 5: কনফিগুরেশন ডো আরডুইনো ডিউ (ভাষাগত সি)
Devido a grande quantidade de dados, cerca de 3000 pontos por segundo, do tipo inteiro de 32 bits, gerados pelo dispositivo de sensoriamento e essentialários para processamento dos algoritmos na DRAGONBOARD 410c, foi utilizado o Arduino deua deuoa deuóa deu fa deu fo de unaóo para de fauz poder de processamento, isso foi essentialário por que o Shield de interfaceamento Grove Seeed Sensor Mezzanine instalado na DRAGONBOARD 410c, que possui um microcontrolador ATmega 328, n posso possui poder de processamento para essa operação।
O Arduino DUE foi configurado para receber os comandos enviados da plataforma QUALCOMM DRAGONBOARD 410c এর মাধ্যমে comunicação সিরিয়াল।
Ações কনফিগারেশন হিসাবে কোন Arduino ফোরাম নেই:
Realizar a aquisição dos dados;
ড্রাগনবোর্ড 410c এর জন্য Transmitir os dados obtidos;
একটি প্রোগ্রাম দিন:
#অন্তর্ভুক্ত #সংজ্ঞায়িত Numb_Sample 3000 #DAC_Input A0 সংজ্ঞায়িত করুন
#সংজ্ঞা দিন 7
#ডিফাইন PosServoMin 4 #PosServoMax 6 ডিফাইন করুন স্বাক্ষরবিহীন দীর্ঘ 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; // habilita os registradores tc-> TC_CHANNEL [channel]. TC_IDR = ~ (TC_IER_CPCS | TC_IER_CPAS); // desabilita os registradores NVIC_EnableIRQ (irq); // habilita interrupção}
অকার্যকর সেটআপ ()
{Serial.begin (115200); পিনমোড (DAC_Input, INPUT); টাইমার স্টার্ট (TC1, 0, TC3_IRQn, 1500); // ইনটার টাইমার // TC_Stop (TC1, 0); পিনমোড (সার্ভো, আউটপুট); }
অকার্যকর লুপ ()
{/*// while (! Serial.available ()); char rc; // = Serial.read (); int সূচক = 0; যদি (rc == 0) {while (! Serial.available ()); rc = Serial.read (); সুইচ (আরসি) {কেস 1: ইন্ডিস = 0; যখন (! Serial.available ()); যখন ((rc = Serial.read ())! = 0xFF) {সূচক << = 8; সূচক += rc; যখন (! Serial.available ()); } সিরিয়াল.প্রিন্ট (0); সিরিয়াল.প্রিন্ট (2); SendNumber (DAC [সূচক]); সিরিয়াল.প্রিন্ট (0xFF); বিরতি; কেস 3: যখন (! Serial.available ()); যদি ((Serial.read ()) == 0xFF) {SNow = PosServoMax; বিলম্ব (500); ইন্ড = 0; // TC_Start (TC1, 0); while (ind <Numb_Sample); // TC_Stop (TC1, 0); SNow = PosServoMin; বিলম্ব (500); সিরিয়াল.প্রিন্ট (0); সিরিয়াল.প্রিন্ট (4); সিরিয়াল.প্রিন্ট (0xFF); } বিরতি; }} অন্যথায় যদি (rc == '2') {Serial.print ("Test Servo Motor / n"); যখন (! Serial.available ()); rc = Serial.read (); যদি (rc == '1') {Serial.print ("Mode 1 / n"); SNow = PosServoMax; } যদি (rc == '2') {Serial.print ("Mode 2 / n"); SNow = PosServoMin; }} */ SNow = PosServoMax; বিলম্ব (100); SNow = PosServoMin; বিলম্ব (100); }
ধাপ 6: ইন্টারফেসামেন্টো দাস টেকনোলজি
Comunicação dos dados entre o Arduíno DUE ea DRAGONBOARD 410c, inicialmente utilizou-se a interface da figura acima, o que não foi possível executar, então optou-se pelo uso de uma interface USB CDC entre o Arduino DUEO 4G requitaria da recompilação do KERNEL da DRAGONBOARD 410c, que não se fez por causa do curto tempo disponível।
ধাপ 7: কনফিগুরেশন দা ড্রাগনবোর্ড 410c (পাইথন)
Foi configurada para enviar ao Arduino DUE os comandos para realizar a aquisição de dados e transmitir os dados obtidos। Segue código abaixo।
পর্যবেক্ষণ: একটি abordagem utilizada no código, não funcionou devido aos níveis de tensão utilizados pelo Arduíno DUE e o Mezzanine serem incompatíveis। Por isso optou-se pelo interfamento USB
আমদানি টাইমপোর্ট সিরিয়াল আমদানি পান্ডা হিসাবে পিডি আমদানি npy হিসাবে np
# Configuração da conexão সিরিয়াল
ser = serial. Serial (port = '/dev/ttyAMC0', #tty96B0 ', baudrate = 250000, parity = serial. PARITY_NONE, stopbit = serial।
ser.isOpen ()
মুদ্রণ করুন ('নিচে আপনার কমান্ড লিখুন।
ইনপুট = 1
যখন 1: ইনপুট = ইনপুট (">>") যদি ইনপুট == 'প্রস্থান': ser.close () প্রস্থান () এলিফ ইনপুট == 'পড়ুন': ser.write (0) # Envia o comando para o Arduino DUE একটি coleta dos dados ser.write (1) # Envia o comando para o Arduino DUE transmitir os dados coletados
তালিকা =
আমি পরিসরে (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: ইন্টারপ্রেটাও ডস আরকুইভোস ডি অডিও
পাড়া poder realizar পায়ূ primeira análise ডস dados obtidos através না সেন্সর, SE ফেজে necessária একটি conversão ডস arquivos কোন WAV formato, fornecidos Pelos alunos autores না TCC ই colaboradores না projeto, পাড়া valores numéricos, কী সাও utilizados টি algoritmos ডি análise embarcados ন 410c DRAGONBOARD । সত্যিকারের এস্তার কথাবার্তা O algoritmo utilizado segue abaixo e em anexo para download।
Esse algoritmo não se faz essentialário para o funcionamento do sistema, já que o Arduino DUE já enviará esses dados em um array de valores numéricos।
# কোডিং: utf-8
# Leitura এবং কথোপকথন dos audios para csv
# মেডুলোস ইউটিলিজাদোস
আমদানি তরঙ্গ আমদানি numpy হিসাবে np আমদানি পান্ডা হিসাবে pd আমদানি matplotlib.pyplot হিসাবে plt হিসাবে
# FUNÇÃO PARA কনভার্টার WAV EM DADOS DO ESPECTRO E SALVAR CSV
def audio_to_csv (file_name): 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 1) সংকেত = np.fromstring (waveData, dtype = 'int32') সময় = np.linspace (start = 0, stop = data_size/sample_rate, num = data_size, endpoint = True) df = pd.concat ([pd. DataFrame (সংকেত), pd. DataFrame (সময়)], অক্ষ = 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 (file_name) df_vazamento.columns = ['amp', 'time'] file_name = 'Solo_sem_Vazamento' df_sem_vazamento = audio_to_csv ('file_name' dz '
# গ্রাফিকো ডো এসপেক্ট্রো দে অডিও
চিত্র, (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': 'bold' }) ax2.set_xlabel ('Tempo [s]', fontdict = {'fontsize': 16}) ax2.set_ylim ([-4e8, 4e8]) figure.tight_layout (h_pad = 5) plt.show ()
ধাপ 9: Análise Visual Do Sinal
Com o Python 3 é realizada a transformmada de Fourier, este artificio matemático realiza a transformação do sinal do domínio do tempo para o domínio da Frequência, onde se torna possível analisar as varias Frequências, e suas amplitudes, que compõemleque Pela análise visual do gráfico da transformmada de Fourier um profissional com conhecimentos específicos poderá identificar a existência de 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 o eixo das Frequências entre 100Hz e 800Hz, fica claro a existência de vazamentos quando se observam distúrbios nesse range de Frequências।
# কোডিং: utf-8
আমদানি পান্ডা হিসাবে pd আমদানি numpy হিসাবে np আমদানি তরঙ্গ থেকে matplotlib আমদানি pyplot হিসাবে 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 amplitudes n = len (y) # Compirmento do sinal k = np। arange (n) T = n/Fs frq = k/T frq = frq [range (n // 2)] Y = np.fft.fft (y)/n Y = Y [range (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 ('সময়') কুড়াল [0].set_ylabel ('প্রশস্ততা') কুড়াল [1]। প্লট (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)# Função que realiza a carga dos dados do CSV e chama a função de Fourier def read_csv (file_name, 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 if init = 100) & (df [' freq '] <= 800)] mx = সাজানো (df [' amp ']) মুদ্রণ ("মিডিয়া দাস প্রশস্ততা:", np.round (np.mean (mx))) মুদ্রণ ("Percentuais em relação a média das amplitudes।") print ("100 maiores amplitudes", np.mean (mx [-100:]) // df ['amp']। মানে ()*100, "%", sep = "") মুদ্রণ ("50 maiores amplitudes:", np.mean (mx [-50:]) // df । মানে ()*100, "%", সেপ = "") মুদ্রণ ("মাইয়ার প্রশস্ততা:", np.mean (mx [-1:]) // df ['amp']। মানে ()*100, " শতাংশ
ধাপ 10: Algoritmo Em R Para Extração Das বৈশিষ্ট্য Dos Dados
Utilizou-se um algoritmo em R para realizar o processamento e extração das features (características) dos dados obtidos।
Este primeiro algoritmo realiza uma extração identificada, onde é needário saber se o arquivo de á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á execute, onde não este fará a extração não identificada, gerando somente as características sem uma identificação।
এস্টাস এর বৈশিষ্ট্যগুলি হল ara 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।
Este algoritmo faz parte de um projeto disponível no GitHub e pode ser acessado através deste link, o mesmo foi modificado para atender as especificações do projeto।
হে সফটওয়্যার ইউস্যাডো প্যারা রোডার ও অ্যালগরিটমো é বিনামূল্যে, ডাউনলোড করুন ইন্টারপ্রেটেডর আর ই ডু আর স্টুডিও।
বৈশিষ্ট্যগুলি অতিরিক্ত বৈশিষ্ট্য:
- meanfreq: গড় ফ্রিকোয়েন্সি (kHz এ)
- sd: ফ্রিকোয়েন্সি মান বিচ্যুতি
- মধ্যমা: মধ্য ফ্রিকোয়েন্সি (kHz এ)
- Q25: প্রথম কোয়ান্টাইল (kHz এ)
- Q75: তৃতীয় কোয়ান্টাইল (kHz এ)
- IQR: অন্তর্বর্তী পরিসীমা (kHz এ)
- তির্যক: তির্যকতা (স্পেসপ্রপ বর্ণনায় নোট দেখুন)
- কার্ট: কার্টোসিস (স্পেসপ্রপ বর্ণনায় নোট দেখুন)
- sp.ent: বর্ণালী এনট্রপি
- sfm: বর্ণালী সমতলতা
- মোড: মোড ফ্রিকোয়েন্সি
- সেন্ট্রয়েড: ফ্রিকোয়েন্সি সেন্ট্রয়েড (স্পেকপ্রপ দেখুন)
- পিকফ: সর্বোচ্চ ফ্রিকোয়েন্সি (সর্বোচ্চ শক্তি সহ ফ্রিকোয়েন্সি)
- meanfun: শাব্দ সংকেত জুড়ে পরিমাপ করা মৌলিক ফ্রিকোয়েন্সি গড়
- minfun: ন্যূনতম মৌলিক ফ্রিকোয়েন্সি শাব্দ সংকেত জুড়ে পরিমাপ করা হয়
- maxfun: শাব্দিক সংকেত জুড়ে সর্বাধিক মৌলিক ফ্রিকোয়েন্সি পরিমাপ করা হয়
- meandom: প্রভাবশালী ফ্রিকোয়েন্সি গড় শাব্দ সংকেত জুড়ে পরিমাপ
- মাইন্ডম: সর্বনিম্ন প্রভাবশালী ফ্রিকোয়েন্সি অ্যাকোস্টিক সিগন্যাল জুড়ে পরিমাপ করা হয়
- maxdom: অ্যাকোস্টিক সিগন্যাল জুড়ে সর্বাধিক প্রভাবশালী ফ্রিকোয়েন্সি পরিমাপ করা হয়
- dfrange: প্রভাবশালী ফ্রিকোয়েন্সি পরিসীমা শাব্দ সংকেত জুড়ে পরিমাপ করা হয়
- modindx: মডুলেশন সূচক। ফ্রিকোয়েন্সি পরিসীমা দ্বারা বিভক্ত মৌলিক ফ্রিকোয়েন্সি সংলগ্ন পরিমাপের মধ্যে সঞ্চিত পরম পার্থক্য হিসাবে গণনা করা হয়
- লেবেল: ফুটো বা লিক্যাজ ছাড়া
অ্যালগরিটমো ব্যবহার:
প্যাকেজ <- c ('tuneR', 'seewave', 'fftw', 'caTools', 'randomForest', 'warbleR', 'mice', 'e1071', 'rpart', 'xgboost', 'e1071') (দৈর্ঘ্য (setdiff (প্যাকেজ, rownames (install.packages ())))
লাইব্রেরি (টিউনআর)
লাইব্রেরি (seewave) লাইব্রেরি (caTools) লাইব্রেরি (rpart) লাইব্রেরি (rpart.plot) লাইব্রেরি (randomForest) লাইব্রেরি (warbleR) লাইব্রেরি (মাউস) লাইব্রেরি (xgboost) লাইব্রেরি (e1071)
specan3 <- ফাংশন (X, bp = c (0, 22), wl = 2048, থ্রেশহোল্ড = 5, সমান্তরাল = 1) { # সমান্তরাল প্রক্রিয়াকরণ ব্যবহার করতে: লাইব্রেরি (devtools), install_github ('নাথানভান/প্যারালালসুগার') যদি (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))} অন্যথায় থামুন (আটকান "শুরু", "শেষ") % % কলনামগুলিতে) #যদি শুরু বা শেষ স্টপে এনএ থাকে যদি (কোন (is.na (c (end, start)))) স্টপ ("শুরুতে এবং/অথবা শেষে পাওয়া NAs)" #যদি শেষ বা শুরু সংখ্যাসূচক না হয় if (all (class (end)! = "numeric" & class (start)! = "numeric")) stop ("'end' and 'selec' must be numeric") #if any start higher than end stop if (যেকোনো (শেষ - শুরু <0)) থামুন (আটকান ("শুরুটি en এর চেয়ে বেশি d in ", length (which (end - start20)) stop (paste (length (which (end - start> 20))," selection (s) long than 20 sec ")) options (show.error.messages = TRUE) যদি #bp ভেক্টর বা দৈর্ঘ্য না হয়! 2) স্টপ ("'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) ফাইল))-দৈর্ঘ্য (অনন্য (sound.files [(sound.files % % fs)])), ".wav ফাইল (গুলি) পাওয়া যায়নি")) #কাজের ডিরেক্টরিতে সাউন্ড ফাইলের সংখ্যা এবং যদি 0 বন্ধ হয় d <- যা (sound.files % in % fs) যদি (length (d) == 0) {stop (".wav ফাইলগুলো ওয়ার্কিং ডিরেক্টরিতে নেই")} অন্য {start <- start [d] end <- শেষ [d] selec <- selec [d] sound.files <- sound.files [d]} # যদি সমান্তরাল সংখ্যাসূচক না হয় (! দৈর্ঘ্য 1 "এর একটি সংখ্যাসূচক ভেক্টর হোন) উইন্ডোজ ", প্রয়োজনীয় নেমস্পেস (" প্যারালালসুগার ", চুপচাপ = সত্য) == সত্য) [1] == "উইন্ডোজ") {বিড়াল ("উইন্ডোজ ব্যবহারকারীদের সমান্তরাল কম্পিউটিংয়ের জন্য 'প্যারালালসুগার' প্যাকেজ ইনস্টল করতে হবে (আপনি এখন করছেন না!)") (X, FUN) সমান্তরাল:: mclapply (X, FUN, mc.cores = parallel)} else lapp <- pbapply:: pblapply options (সতর্ক = 0) if (parallel == 1) cat ("Acoustic পরামিতি পরিমাপ:") x <- as.data.frame (lapp (1: length (start), function (i) {r <- tuneR:: readWave (file.path (getwd (), sound.files ), = থেকে শুরু , to = শেষ , ইউনিট = "সেকেন্ড") b সিলিং ([email protected]/2000) - 1) b [2] < - সিলিং ([email protected]/2000) - 1 #ফ্রিকোয়েন্সি স্পেকট্রাম এনালাইসিস গানসপেক [email protected], flim = c (0, 280/1000), plot = FALSE) #সেভ প্যারামিটার মানেফ্রেক <- বিশ্লেষণ $ গড়/1000 sd <- বিশ্লেষণ $ sd/1000 মধ্যমা <- বিশ্লেষণ $ মধ্যমা/1000 Q25 < বিশ্লেষণ $ QQ75 সেন্ট্রয়েড <- বিশ্লেষণ $ cent/1000 #প্রশস্ততা শিখর পিকফ <- 0 #seewave:: fpeaks (songspec, 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] গড়ফুন 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) period <- (end - start ) #modulation index calculation changes <- vector () for (j in which (! is। na (y))) {পরিবর্তন <- abs (y [j]- y [j + 1]) পরিবর্তন <- সংযোজন (পরিবর্তন, পরিবর্তন)} যদি (mindom == maxdom) modindx <-0 else modindx <- মানে (পরিবর্তন, na.rm = T)/dfrange #সেভ রেজাল্ট রিটার্ন minfun, maxfun, meandom, mindom, maxdom, dfrange, modindx () "Q75", "IQR", "skew", "kurt", "sp.ent", "sfm", "mode", "centroid", "pekf", "meanfun", "minfun", "maxfun", "meandom", "mindom", "maxdom", "dfrange", "modindx") x <- data.frame (sound.files, selec, as.data.frame (t (x))) কলনাম (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 এ ফাইলের তালিকা যোগ করুন। জন্য নাম (ডেটা) <- c ('sound.files', 'selec', 'start', 'end') # প্রক্রিয়াকরণের জন্য ফোল্ডারে সরান। setwd (folderName) # প্রসেস ফাইল। ধ্বনিবিজ্ঞান <- specan3 (ডেটা, সমান্তরাল = 1) # মূল ফোল্ডারে ফিরে যান। setwd ('..') ধ্বনিবিদ্যা}
লিঙ্গ <- ফাংশন (filePath) {যদি (! বিদ্যমান ('genderBoosted')) {লোড ('model.bin')} # সেটআপ পাথ currentPath <- getwd () fileName <- basename (filePath) path <- dirname (filePath) # ফাইল পড়ার জন্য ডিরেক্টরি সেট করুন। setwd (path) # খালি data.frame দিয়ে শুরু করুন। data <- data.frame (fileName, 0, 0, 20) # কলামের নাম সেট করুন। নাম (ডেটা) <- c ('sound.files', 'selec', 'start', 'end') # প্রসেস ফাইল। ধ্বনিবিজ্ঞান <- specan3 (তথ্য, সমান্তরাল = 1) # পুনরুদ্ধার পথ। setwd (currentPath) পূর্বাভাস (লিঙ্গ কম্বো, নিউডাটা = অ্যাকোস্টিকস)}
# লোড তথ্য
ফুটো <- প্রসেসফোল্ডার ('caminho para o pasta com sample de áudio com vazamento') without_leakage <- processFolder ('caminho para o pasta com sample de áudio sem vazamento')
# লেবেল সেট করুন।
ফুটো
# অব্যবহৃত কলামগুলি সরান।
ডাটা $ সময়কাল
# এনএ ধারণকারী সারি সরান।
data <- data [complete.cases (data),]
# সিএসভি ডেটাসেট লিখুন।
write.csv (data, file = 'features.csv', sep = ',', row.names = F)
ধাপ 11: রিড নিউরাল
A ideia do uso de uma rede neural, é a de realizar um reconhecimento automatizado através dos dados coletados pelo dispositivo de sensoriamento।
A rede neural utilizada é 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 sinal recebido n existn existmento v existn pmento, n infornmandm existn existemento v existnmento n pmn existmento v existnmoun existemento v existnmoun existn existn existn existn exist v existnmoun exist, n informmandn existn existn existemento vanm
Foi essentialário realizar uma filtragem dos dados de entrada, pois algumas características estavam diminuindo a taxa 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 variá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।
Este algoritmo é utilizado para treinar o modelo da rede e retornar a taxa de acerto do mesmo। No sistema de detecção um algoritmo um pouco diferente seria usado, pois ele realizaria o treino ou receberia um modelo já treinado da nuvem ou de alguma outra fonte e com esse modelo realizaria as predições para cada leitura realizada।
# কোডিং: utf-8
পিডি হিসাবে প্যান্ডা আমদানি করুন
sklearn.model_selection থেকে np হিসাবে nmpy আমদানি করুন sklearn.neural_network থেকে tts হিসাবে আমদানি train_test_split
# Leitura dos dados do CSV
df = pd.read_csv ('features.csv') # Separação das entradas df_X = df [df.columns [: len (df.columns) -1] # ফিল্ট্রান্ডো এন্ট্রাডাস হিসেবে df_X = df_X
# পৃথক ড্যাডোস প্যারা টেরিনো ই টেস্ট
X_train, X_test, Y_train, Y_test = tts (df_X, df_Y, test_size = 0.1)
# ক্রিয়ান্ডো মডেলো ডি রেড নিউরাল
modelo = MLP (alpha = 0.0001, learning_rate_init = 0.0001, hidden_layer_sizes = (50, 50, 50, 50), max_iter = 10000, activation = 'tanh', solver = 'lbfgs')
# Treinando মডেল
modelo.fit (X_train, Y_train) ফলাফল = modelo.predict (X_test)
# অসম্ভব ফলাফল
রিপোর্ট = 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") প্রিন্ট (প্রতিবেদন)
প্রস্তাবিত:
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 ç অধ্যাপক: ইলো রিভেরো
Sistema De Prevenção De Deslizamentos Com Sensor MPU-6050: 6 ধাপ
Sistema De Prevenção De Deslizamentos Com Sensor MPU-6050: O sensor MPU-6050 é um chip que possui um acelerômetro e um giroscópio tipo MEMS। S 3o 3 eixos para o acelerômetro e 3 eixos para o giroscópio, sendo ao todo 6 graus de liberdade (6DOF)। Vamos aprender a 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 cultivores pois esta atividade independe da ocorrência de chuvas, garante uma safra ইউনিফর্ম, Reduza a falha humana, minimizo ainizo oinizo oinizo oinizo oinizo oinasizo
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 ধাপ
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: DESCRI Ç Ã OO intuito do projeto é dar autonomia para deficientes visuais se locomoverem em ambientes indore como casas ou shopping center e aeroportos.A locomo ç ã o em ambientes j á mapeados pode ou n ã o s
Sistema Inteligente De Monitoramento De Enchentes (SIME): 4 টি ধাপ
Sistema Inteligente De Monitoramento De Enchentes (SIME): Tema e Proposta: Foi dado o tema Servi ç os P ú blicos aos অংশগ্রহণকারীরা Hackathom Qualcomm Facens com না m á placa Dragonboard 410c com um Kit Qual