Автомашин системийн локализатор Де Вазаментос: 11 алхам
Автомашин системийн локализатор Де Вазаментос: 11 алхам
Anonim
Автомашины систем локализатор Де Вазаментос
Автомашины систем локализатор Де Вазаментос

Төсөөлөл нь эм робо, атравес да лейтура реализатор, импозиционер, пиезоэлектрик, мэдрэгчтэй төхөөрөмж, соло байхгүй, локализац хийх, орон нутгийн онцлог, үйл явцыг тодорхойлох төхөөрөмж юм. умба хоолой.

DRAGONBOARD 410c програмыг суурилуулах үйл явцыг зохион байгуулна уу. Үйлчилгээ нь ямар ч процесст зориулагдаагүй болно.

Hackaton Qualcomm -ийг ашиглах боломжгүй, мөн TecnoFACENS -тэй, мөн Engenharia de Sorocaba -тай (FACENS), дипломын ажил хийхээр төлөвлөж байна. Энэо Жулиано Бовино, Фелипе Ксавье, Лукас де Соуса, Роджасо Соузе. Гомес Поло ба Роналдо П. Гомес Поло. Даниел де Кастро Пачеко Ньютон Пейва -де -Бело -Оризонтид Universidade de engenharia mecânica -ийг амжилттай зохион байгуулахаар төлөвлөж байна. FACENS, Lucas Nunes Monteiro, Felipe Crispim, Silva Salvagnini нар төгссөн.

Алхам 1: Lista De Materiais

Lista De Materiais
Lista De Materiais

Төсөөлөхийн тулд дараахь зүйлийг хийх боломжтой болно.

1 Arduino хугацаа

1 Dragonboard 410c

2 жолооч нар моторт хөдөлгүүрийн засварыг үргэлжлүүлж байна:

4 BC548 транзистор

4 диод 1n4007

4 эсэргүүцэл 4k7Ω ¼ W

1 Servo моторын уралдааны драйвер:

1 BC548 транзистор

1 диод 1N4007

1 эсэргүүцэл 4k7Ω ¼ W

1 хулганы USB

1 Teclado USB

1 Хяналт

1 HDMI кабель

1 Робо Де Эстейрас - Платаформа Зумо

1 Cremalheira e engrenagem хэмээх мини диспозитив

1 Servo мотор 9 гр

Алхам 2: Adaptação Mecânica

Image
Image

Тайлбарыг буцааж англи (Америкийн Нэгдсэн Улс) руу орчуулах Орчуулах A Aquisição dos dados pelo sensor piezoelétrico, bas se needário, or desenvolvimento de um dispositivo com pinhão e cremalheira, conforme desenhos anexados, neste caso as peças foram fabricadas por uma impressora 3D, devido ao proto de troto de toto de toto. хурдан хийх, засварлах, шинэчлэх, ашиглах, фиту дупла нүүр, тохирох видео.

Алхам 3: Acionamento Dos Motores

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

Мотор хөдөлгүүрийг зохион бүтээхдээ ZUMO-ийг ашиглах боломжтой, драйверуудыг драйвераар солих шаардлагатай байдаг, энэ нь драйверуудыг өөрчилдөг бөгөөд энэ нь servo мотортой ижил төстэй байдаг. um motor de corrente continua ea segunda o driver for um servo motor.

Алхам 4: Obtenção Do Áudio

Төгсгөлд нь TCC de Engenharia Mecatrônica dos gradandos Lucas Nunes Monteiro e Felipe C. да Силва Сальвагнини, эцэг эхийн бие даасан харилцаа холбоог сайжруулах үүрэг гүйцэтгэдэг. [email protected] руу имэйл илгээнэ үү.

Мэдээлэл дамжуулах төхөөрөмж нь цахилгаан дамжуулах хоолойноос гадна мэдрэгчтэй болно.

100 Гц ба 800 Гц давтамжтай давтамжтай ажиллах боломжтой. 3 кГц давтамжтай давтамжийг олж авахын тулд Nyquist -ийг ашиглаж болно.

Arduino DUE -ийн тасалдал нь тасалдсан болно.

Алхам 5: Arduino DUE -ийг тохируулах (хэлний хэл C)

Do Arduino DUE -ийг тохируулах (хэлний хэл C)
Do Arduino DUE -ийг тохируулах (хэлний хэл C)

DRAGONBOARD 410c програмын алгоритм, алгоритм, 32 битийн хувьд 32 бит, 32 битийн интерфейс, програм хангамжийн маш том хэмжигдэхүүнүүд, програмууд, програмууд. Процедурын хувьд, Shield интерфэйс нь DRAGONBOARD 410c -ийн Grove харсан мэдрэгчийг суурилуулах, ATmega 328, микроконтроллер ашиглах боломжийг олгодог.

O Arduino DUE фай тохиргоо нь цуврал дамжуулалтаар QUALCOMM DRAGONBOARD 410c платформ дээр ажиллах боломжтой болно.

Arduino foram -ийг тохируулахын тулд:

Хэрэглэгчийн нэр томъёо;

DRAGONBOARD 410c дамжуулах төхөөрөмж;

Хөтөлбөрийг шалгах:

#оруулах #тодорхойлох Numb_Sample 3000 #тодорхойлох DAC_Input A0

#тодорхойлох SERVO 7

#DosinePosServoMin 4 #PosServoMax 6 -г тодорхойлох #хугацаа тодорхойлох 60 тэмдэггүй int Scont = 0, SNow = PosServoMin; гарын үсэггүй урт int DAC [Numb_Sample], ind = Numb_Sample; хүчингүй TC3_Handler () {TC_GetStatus (TC1, 0); if (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 [суваг]. TC_IDR = ~ (TC_IER_CPCS | TC_IER_CPAS); // desabilita os registradores NVIC_EnableIRQ (irq); // харилцаа холбоо таслах}

хүчингүй тохиргоо ()

{Serial.begin (115200); pinMode (DAC_Input, INPUT); TimerStart (TC1, 0, TC3_IRQn, 1500); // Таймерыг эхлүүлэх // TC_Stop (TC1, 0); pinMode (SERVO, OUTPUT); }

хоосон давталт ()

{/*// while (! Serial.available ()); char rc; // = Serial.read (); int indice = 0; if (rc == 0) {while (! Serial.available ()); rc = Serial.read (); switch (rc) {тохиолдол 1: indice = 0; while (! Serial.available ()); while ((rc = Serial.read ())! = 0xFF) {индекс << = 8; индекс += rc; while (! Serial.available ()); } Serial.print (0); Цуваа.хэвлэх (2); SendNumber (DAC [индекс]); Цуваа.хэвлэх (0xFF); завсарлага; тохиолдол 3: while (! Serial.available ()); if ((Serial.read ()) == 0xFF) {SNow = PosServoMax; саатал (500); ind = 0; // TC_Start (TC1, 0); while (ind <Numb_Sample); // TC_Stop (TC1, 0); SNow = PosServoMin; саатал (500); Цуваа.хэвлэх (0); Цуваа.хэвлэх (4); Цуваа.хэвлэх (0xFF); } завсарлага; }} else if (rc == '2') {Serial.print ("Серво моторыг шалгах / n"); while (! Serial.available ()); rc = Serial.read (); if (rc == '1') {Serial.print ("Mode 1 / n"); SNow = PosServoMax; } if (rc == '2') {Serial.print ("Mode 2 / n"); SNow = PosServoMin; }} */ SNow = PosServoMax; саатал (100); SNow = PosServoMin; саатал (100); }

Алхам 6: Интерфейс Das Tecnologias

Das Tecnologias интерфэйс
Das Tecnologias интерфэйс

Тайлбарыг буцааж англи (Америкийн Нэгдсэн Улс) руу орчуулах Орчуулах DURA ea DRAGONBOARD 410c, интерфэйс, интерфейс, интерфейс, интерфейс, компьютерийн интерфэйс, USB CDC-ийг холбох, компьютерын дүрсийг 4-рт ашиглах KERNEL болон DRAGONBOARD 410c -ийг дахин боловсруулах шаардлагатай байгаа бөгөөд энэ нь маш хурдан хөгжих болно.

Алхам 7: Да DRAGONBOARD 410c -ийг тохируулах (Python)

DRAGONBOARD 410c (Python) тохируулах
DRAGONBOARD 410c (Python) тохируулах

Тохиргоог тохируулахын тулд Arduino DUE -ийг ашиглах боломжтой болно. Segue código abaixo.

Ажиглалт: Ямар ч тохиолдолд ямар ч үүрэг гүйцэтгэдэггүй, ямар ч функц байхгүй болно. Энэ нь USB, эсвэл DRAGONBOARD 410c-ийн KERNEL-ийг дахин боловсруулж, компьютерийн холболтыг холбох шаардлагатай болно.

импортлох цагийг импортлох цуваа импорт

# Configuração da conexão цуврал

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

ser.isOpen ()

хэвлэх ('Доорх тушаалуудыг оруулна уу. / r / nПрограмаас гарахын тулд "exit" оруулна уу.')

оролт = 1

while 1: input = input (">>") if input == 'exit': ser.close () exit () elif input == 'read': ser.write (0) # Envia o comando para o Arduino DUE realizar a coleta dos dados ser.write (1) # Envia o comando para o Arduino DUE дамжуулагч 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: INTERPRETAÇÃO DOS ARQUIVOS DE AUDIO

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

Мэдээлэл хүлээн авагч нь мэдрэгч, WAV форматгүй, WAV форматтай байх, TCC эсвэл компьютерийн үйл ажиллагаа явуулах, компьютерийн үнэ цэнийг тооцоолох, компьютерийн үнэ цэнийг тохируулах, тохируулах шаардлагатай байдаг.. PYTHON 3 програмыг ажиллуулахын тулд WAV -ийг ашиглах боломжтой бөгөөд CSV -ийг ашиглах боломжтой болно. O algoritmo utilizado segue abaixo e em anexo татаж авах.

Эсвэл алгоритм нь системийн хувьд шаардлагатай бол Arduino DUE нь хамгийн чухал үүрэг гүйцэтгэдэг.

# кодчилол: utf-8

Csv -д зориулсан Leitura e talkão dos audios

# MÓDULOS UTILIZADOS

импортын долгионы импортыг np гэж импортлох pp гэж импортлох matplotlib.pyplot гэж plt

# FUNÇÃO ПАРА ХӨРГӨГЧ 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 (өгөгдөл_хичээл)) 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 (дохио), pd. DataFrame (Цаг)], тэнхлэг = 1) df.to_csv (file_name + '.csv', index = False) буцах 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_ 'df_]

# 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': 'bold' }) ax2.set_xlabel ('Tempo [s]', fontdict = {'fontsize': 16}) ax2.set_ylim ([-4e8, 4e8]) figure.tight_layout (h_pad = 5) plt.show ()

Алхам 9: Анализ Visual Do Sinal

Аналис Визуал Синал
Аналис Визуал Синал
Аналис Визуал Синал
Аналис Визуал Синал
Анализа Визуал Синал
Анализа Визуал Синал

Тайлбарыг буцааж англи (Америкийн Нэгдсэн Улс) руу орчуулах уу? Нэвтрүүлгийн график дүрслэлийг өөрчилснөөр Фурье мэргэжлийн мэдлэг, ойлголтыг тодорхой зааж өгсөн болно. Хариуцлага тооцох нь автомашиныг алгоритм хийх боломжийг олгодог.

Хязгаарлагдмал давтамж нь 100 Гц ба 800 Гц давтамжтай байх бөгөөд давтамжийг харах боломжтой.

# кодчилол: utf-8# Өөрчлөлт хийх явцад Фурье хувиргах болно

pp хэлбэрээр импортлох импорт npy matplotlib -аас np импорт долгион болгон импортлох pyplot# 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) # 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 () буцах frq, abs (Y)# Função que realiza a carga dos dados to 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 if init*44100> len (df) or final*44100> len (df): init = (len (df)/44100) -delta if init = 100) & (df [' freq '] <= 800)] mx = эрэмбэлсэн (df [' amp ']) хэвлэх ("Média das amplitudes:", np.round (np.mean (mx)))) хэвлэх ("Percentuais em relação a média das amplitudes.") хэвлэх ("100 maiores далайц", np.mean (mx [-100):]) // df ['amp']. дундаж ()*100, "%", sep = "") хэвлэх ("50 maiores далайц:", np.mean (mx [-50:]) // df ['amp']. дундаж ()*100, "%", sep = "") хэвлэх ("10 maiores далайц:", np.mean (mx [-10:]) // df ['amp']. дундаж ()*100, "%", sep = "") хэвлэх ("Maior далайц:", np.mean (mx [-1:]) // df ['amp']. дундаж ()*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

Алхам 10: Algoritmo Em R Para Extração Das онцлог шинж чанарууд Dos Dados

Algoritmo Em R Para Extração Das -ийн онцлог шинж чанарууд нь Dos Dados юм
Algoritmo Em R Para Extração Das -ийн онцлог шинж чанарууд нь Dos Dados юм
Algoritmo Em R Para Extração Das -ийн онцлог шинж чанарууд нь Dos Dados юм
Algoritmo Em R Para Extração Das -ийн онцлог шинж чанарууд нь Dos Dados юм

Алгоритмууд нь үйл явцын онцлог шинж чанарууд (онцлог шинж чанарууд) зэргийг багтаасан болно.

Алгоритмыг тодорхойлох нь чухал юм.

Аливаа програмыг ажиллуулахын тулд програмыг ажиллуулна уу.

Estas -ийн онцлог шинж чанарууд нь янз бүрийн мэдээллийн системд зориулагдсан мэдээлэл юм.

Алгоритм нь ямар ч тохиолдолд GitHub -т зориулагдаагүй болно, учир нь энэ нь тусгайлан боловсруулсан болно.

О програм хангамжийн програм хангамж, програм хангамжийг үнэгүй татаж авах, R e do R Studio програмыг татаж авах.

Нэмэлт шинж чанарууд:

  • Meanfreq: дундаж давтамж (кГц)
  • sd: давтамжийн стандарт хазайлт
  • медиан: медиан давтамж (кГц)
  • Q25: эхний квант (кГц)
  • Q75: гурав дахь квант (кГц)
  • IQR: интервалант хүрээ (кГц)
  • хазайх: хазайлт (specprop тайлбар дахь тэмдэглэлийг үзнэ үү)
  • курт: куртоз (specprop тайлбар дахь тэмдэглэлийг үзнэ үү)
  • sp.ent: спектрийн энтропи
  • sfm: спектрийн тэгш байдал
  • горим: горимын давтамж
  • центроид: давтамжийн центрод (спекпропыг үзнэ үү)
  • пикф: оргил давтамж (хамгийн их энергитэй давтамж)
  • Meanfun: акустик дохиогоор хэмжсэн үндсэн давтамжийн дундаж
  • minfun: акустик дохиогоор хэмжсэн хамгийн бага үндсэн давтамж
  • maxfun: акустик дохиогоор хэмжсэн хамгийн их үндсэн давтамж
  • meandom: акустик дохиогоор хэмжсэн давамгайлах давтамжийн дундаж
  • mindom: акустик дохиогоор хэмждэг давамгайлах давтамжийн хамгийн бага хэмжээ
  • maxdom: акустик дохиогоор хэмжсэн давамгайлах давтамжийн дээд хэмжээ
  • dfrange: акустик дохиогоор хэмжсэн давамгайлах давтамжийн хүрээ
  • modindx: модуляцийн индекс. Үндсэн давтамжийн зэргэлдээ хэмжилтийн хоорондох хуримтлагдсан үнэмлэхүй зөрүүг давтамжийн мужид хуваана
  • шошго: алдагдсан эсвэл алдагдалгүй

Алгоритмо програм:

<- c ('tuneR', 'seewave', 'fftw', 'caTools', 'randomForest', 'warbleR', 'mice', 'e1071', 'rpart', 'xgboost', 'e1071') if (урт (багц)

номын сан (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 (бүх (c ("sound.files", "selec", "start", "end") % % colnames (X))) {эхлэх <- 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))} өөр зогсоох (буулгах (буулгах (c ("sound.files", "selec", "start", "end") [! (c ("sound.files", "selec", "start", "end") % in % colnames (X))] -д, нурах = ","), "багана (ууд) өгөгдлийн хүрээнд байхгүй"))} өөр зогсоох ("X бол өгөгдлийн хүрээ биш")) #хэрэв эхлэл эсвэл төгсгөлийн зогсоол дээр NA байгаа бол (хэрэв (is.na (c (төгсгөл, эхлэл)))) зогсолт ("Эхлэл ба/эсвэл төгсгөлд NA олдсон бол") #if төгсгөл эсвэл эхлэл нь тоон зогсолт биш бол if (all (class (end)! = "numeric" & class (start)! = "numeric")) stop ("'end' and 'selec' тоон байх ёстой)) #хэрэв төгсгөлийн зогсоолоос илүү өндөр эхлэх бол any (end - start <0)) stop (paste ("Эхлэл нь en -ээс өндөр байна d in ", length (which (end - start20)) stop (оо (урт (аль (төгсгөл - эхлэх> 20)))," сонголт (ууд) 20 секунтаас урт))) сонголтууд (show.error.messages = ҮНЭН) #if bp бол вектор эсвэл урт биш юм бол = 2 зогсолт (! is.vector (bp)) stop ("'bp' нь 2" урттай тоон вектор байх ёстой) өөр {хэрэв (! урт (bp) == 2) stop ("'bp' нь 2 урттай тоон вектор байх ёстой)}} Бүх дууны файлууд олдсонгүй бол буцаах анхааруулга fs <- list.files (path = getwd (), pattern =".wav $ ", ignore.case = ҮНЭН) if (урт (өвөрмөц (sound.files [(sound.files % in % fs)])))! = урт (өвөрмөц (sound.files))) cat (оо (урт (өвөрмөц (дуу). файлууд))-урт (өвөрмөц (sound.files [(sound.files % in % fs)])))), ".wav файл (ууд) олдсонгүй")) #Ажлын лавлах дахь дууны файлуудын тоо, хэрэв 0 зогссон бол d <- аль нь (sound.files % in % fs) if (length (d) == 0) {stop (".wav файлууд нь ажлын санд байхгүй байна")} өөр {эхлэх <- эхлэх [d] төгсгөл <- төгсгөл [d] selec <- selec [d] sound.files <- sound.files [d]} # Хэрэв параллель нь тоон биш бол (! бол тоон (зэрэгцээ)) зогсох ("'зэрэгцээ" байх ёстой 1 "урттай тоон вектор байх Windows ", шаарддагNamespace (" parallelsugar ", чимээгүйхэн = ҮНЭН) == ҮНЭН)) lapp <- функц (X, FUN) parallelsugar:: mclapply (X, FUN, mc.cores = зэрэгцээ) өөр тохиолдолд (Sys.info () [1] == "Windows")) {cat ("Windows хэрэглэгчид зэрэгцээ тооцоолохын тулд 'parallelsugar' багцыг суулгах хэрэгтэй (та одоо үүнийг хийхгүй байна!)") ") Lapp <- pbapply:: pblapply} өөр lapp <- функц (X, FUN) parallel:: mclapply (X, FUN, mc.cores = parallel)} else lapp <- pbapply:: pblapply options (анхааруулга = 0) if (parallel == 1) cat ("Акустик параметрүүдийг хэмжих:") x <- as.data.frame (lapp (1: урт (эхлэх), функц (i) {r <- tuneR:: readWave (file.path (getwd (), sound.files ), эхлэх , to = төгсгөл , нэгж = "секунд") b тааз ([email protected]/2000) - 1) b [2] < - тааз ([email protected]/2000) - 1 #давтамжийн спектрийн шинжилгээ songspec <- seewave:: spec (r, f = [email protected], plot = FALSE) шинжилгээ <- seewave:: specprop (songspec, f = [email protected], flim = c (0, 280/1000), plot = FALSE) #хэмжигдэхүүнүүдийг хадгалах дундаж утга <- шинжилгээ $ дундаж/1000 sd <- шинжилгээ $ sd/1000 медиан <- шинжилгээ $ медиан/1000 Q25 < - дүн шинжилгээ $ QQ75 <- дүн шинжилгээ $ QIQR <- дүн шинжилгээ $ IQR/1000 хазайлт <- шинжилгээ $ хазайлт курт <- шинжилгээ $ куртоз sp.ent <- шинжилгээ $ sh sfm <- шинжилгээ $ sfm горим <- дүн шинжилгээ $ горим/1000 centroid <- дүн шинжилгээ $ 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] дундаж хөгжилтэй <-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, босго = босго, bandpass = b * 1000, fftw = ҮНЭН) [, 2] meandom <- дундаж (y, na.rm = ҮНЭН) mindom <- мин (y, na.rm = ҮНЭН) maxdom <- хамгийн их (y, na.rm = ҮНЭН) dfrange <- (maxdom- mindom) үргэлжлэх хугацаа <- (төгсгөл - эхлэх ) #модуляцийн индексийн тооцоолол <j- ийн хувьд (! na (y))) {change <- abs (y [j]- y [j + 1]) changes <- addend (changes, change)} if (mindom == maxdom) modindx <-0 else modindx <- дундаж (өөрчлөлт, na.rm = T)/dfrange #хэмнэх үр дүнг буцаана (c (үргэлжлэх хугацаа, дундаж давтамж, sd, медиан, Q25, Q75, IQR, хазайлт, курт, спент, sfm, горим, центрод, пикф, дундаж, minfun, maxfun, meandom, mindom, maxdom, dfrange, modindx))})) #үр дүнгийн нэрийг rownames (x) <- c ("үргэлжлэх хугацаа", "Meanfreq", "sd", "медиан", "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)) буцах (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)} # Баганын нэрийг тохируулна уу. нэрс (өгөгдөл) <- c ('sound.files', 'selec', 'start', 'end') # Боловсруулах хавтас руу зөөх. setwd (folderName) # Файлуудыг боловсруулах. акустик <- specan3 (өгөгдөл, зэрэгцээ = 1) # Эх хавтас руу буцаана уу. setwd ('..') акустик}

gender <- function (filePath) {if (! exists ('genderBoosted')) {load ('model.bin')} # Setup paths. currentPath <- getwd () fileName <- үндсэн нэр (filePath) зам <- dirname (filePath) # Файлыг уншихаар директорыг тохируулна уу. setwd (path) # Хоосон data.frame -с эхэл. өгөгдөл <- data.frame (fileName, 0, 0, 20) # Баганын нэрийг тохируулах. нэрс (өгөгдөл) <- c ('sound.files', 'selec', 'start', 'end') # Файлуудыг боловсруулах. акустик <- specan3 (өгөгдөл, зэрэгцээ = 1) # Замыг сэргээх. setwd (currentPath) таамаглах (genderCombo, newdata = акустик)}

# Өгөгдлийг ачаалах

алдагдал <- processFolder ('caminho para o pasta com дээжүүд áudio com vazamento') алдагдалгүй <- processFolder

# Шошго тохируулах.

алдагдал $ шошго <- 1 байхгүй_ алдагдалгүй $ шошго <- 2 өгөгдөл <- rbind (алдагдал, алдагдалгүй) өгөгдөл $ шошго <- хүчин зүйл (өгөгдөл $ шошго, шошго = c ('алдагдал', 'алдагдалгүй')))

# Ашиглагдаагүй багануудыг устгах.

data $ duration <- NULL data $ sound.files <- NULL data $ selec <- NULL data $ peakf <- NULL

# NA агуулсан мөрүүдийг устга.

өгөгдөл <- өгөгдөл [иж бүрэн. тохиолдлууд (өгөгдөл),]

# Csv мэдээллийн санг бичих.

write.csv (өгөгдөл, файл = 'онцлогууд. csv', sep = ',', мөрийн нэрс = F)

Алхам 11: Мэдрэлийг арилгах

Нейроныг буцаана
Нейроныг буцаана

Мэдрэлийн мэдрэл, мэдрэмтгий мэдрэмтгий байдал нь автоматаар шинэчлэгдэх болно.

MLP (Multilayer Perceptron) мэдрэлийн системийг ашиглана уу, энэ нь танд хамгийн чухал тохиргоог хийх боломжийг олгоно.

Шалгалт нь хамгийн чухал үүрэг гүйцэтгэдэг бөгөөд энэ нь маш олон тооны онцлог шинж чанартай байдаг. Энэ нь ямар ч асуудалгүй бөгөөд энэ нь өнгөц цэгүүд, тэдгээрийн хоорондох ялгаа юм.

Тестийн тестүүд нь 100%-ийн туршилтуудын аль алинд нь хийгддэг, аль алинд нь, ямар ч тохиолдолд та маш сайн тест хийдэг.

Алгоритмууд нь төлбөр тооцоо хийх эсвэл шинэчлэх боломжийг олгодог. Алгоритм хийх шаардлагагүй, гэхдээ энэ нь хүлээн авалт хийх горимд шилжих боломжийг олгодог.

# кодчилол: utf-8

pand -ийг pd хэлбэрээр импортлох

sklearn.model_selection -аас np болгон импортлох train_test_split sklearn.neural_network -аас tts хэлбэрээр импортлох

# Leitura dos dados нь CSV хийдэг

df = pd.read_csv ('features.csv') # Тусдаа хичээлүүд df_X = df [df.columns [: len (df.columns) -1] # Филтрандо оруулгууд шиг 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 мэдрэлийн

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)

# Imprimindo үр дүнгийн дуунууд

report = cr (Y_test, result) mat = cm (y_pred = үр дүн, y_true = Y_test) хэвлэх ("Matriz de confusão") хэвлэх (mat, end = "\ n / n") хэвлэх ("Relatório de Classificação") хэвлэх (тайлан)

Зөвлөмж болгож буй: