Სარჩევი:

ჯიბის ზომის ხველის დეტექტორი: 7 ნაბიჯი
ჯიბის ზომის ხველის დეტექტორი: 7 ნაბიჯი

ვიდეო: ჯიბის ზომის ხველის დეტექტორი: 7 ნაბიჯი

ვიდეო: ჯიბის ზომის ხველის დეტექტორი: 7 ნაბიჯი
ვიდეო: Crochet Pocket Scarf with Hood [EASY] Hooded ჯიბის შალი. 2024, ივლისი
Anonim
ჯიბის ზომის ხველის დეტექტორი
ჯიბის ზომის ხველის დეტექტორი

COVID19 მართლაც ისტორიული პანდემიაა, რომელიც მთელ მსოფლიოში ძალიან ცუდად აისახება და ხალხი აშენებს უამრავ ახალ მოწყობილობას მასთან საბრძოლველად. ჩვენ ასევე ავაშენეთ ავტომატური სანიტარიზაციის მანქანა და თერმული იარაღი უკონტაქტო ტემპერატურის სკრინინგისთვის. დღეს ჩვენ ავაშენებთ კიდევ ერთ მოწყობილობას კორონავირუსთან ბრძოლის დასახმარებლად. ეს არის ხველის გამოვლენის სისტემა, რომელსაც შეუძლია განასხვავოს ხმაური და ხველის ხმა და დაგეხმარებათ კორონაში ეჭვმიტანილის პოვნაში. ამისათვის ის გამოიყენებს მანქანათმცოდნეობის ტექნიკას.

ამ გაკვეთილში ჩვენ ვაპირებთ ავაშენოთ ხველის გამოვლენის სისტემა Arduino 33 BLE Sense და Edge Impulse Studio გამოყენებით. მას შეუძლია განასხვავოს ნორმალური ფონური ხმაური და ხველა რეალურ დროში აუდიოში. ჩვენ გამოვიყენეთ Edge Impulse Studio, რომ მოვამზადოთ ხველების და ფონური ხმაურის ნიმუშების ნაკრები და შევქმნათ უაღრესად ოპტიმიზირებული TInyML მოდელი, რომელსაც შეუძლია ამოიცნოს ხველის ხმა რეალურ დროში.

მარაგები

ტექნიკა

  • Arduino 33 BLE გრძნობა
  • LEDJumper
  • მავთულები

პროგრამული უზრუნველყოფა

  • Edge Impulse Studio
  • Arduino IDE

ნაბიჯი 1: წრიული დიაგრამა

Წრიული დიაგრამა
Წრიული დიაგრამა
Წრიული დიაგრამა
Წრიული დიაგრამა

Arduino 33 BLE Sense– ის გამოყენებით ხველის გამოვლენის წრიული დიაგრამა მოცემულია ზემოთ. Arduino 33 BLE– ის გამაგრებითი ნაწილი არ იყო ხელმისაწვდომი, ამიტომ მე გამოვიყენე Arduino Nano, რადგან ორივეს ერთი და იგივე პინი აქვს.

LED– ის პოზიტიური გამტარი უკავშირდება Arduino 33 BLE მნიშვნელობის ციფრულ პინ 4 – ს და უარყოფითი ტყვიის უკავშირდება Arduino– ს GND პინ.

ნაბიჯი 2: შექმენით მონაცემთა ნაკრები ხველის გამოვლენის აპარატისთვის

ხველის გამოვლენის აპარატის მონაცემთა ნაკრების შექმნა
ხველის გამოვლენის აპარატის მონაცემთა ნაკრების შექმნა

როგორც უკვე აღვნიშნეთ, ჩვენ ვიყენებთ Edge Impulse Studio- ს ხველის გამოვლენის მოდელის მოსამზადებლად. ამისათვის ჩვენ უნდა შევაგროვოთ მონაცემთა ნაკრები, რომელსაც აქვს მონაცემების ნიმუშები, რომელთაც ჩვენ გვსურს რომ შევძლოთ ჩვენი Arduino– ზე ამოცნობა. ვინაიდან მიზანია ხველის გამოვლენა, თქვენ უნდა შეაგროვოთ მისი ზოგიერთი და სხვა ნიმუშები ხმაურისთვის, ასე რომ მას შეუძლია განასხვავოს ხველა და სხვა ხმაურები. ჩვენ შევქმნით მონაცემთა ნაკრებს ორი კლასი "ხველა" და "ხმაური". მონაცემთა ნაკრების შესაქმნელად შექმენით Edge Impulse ანგარიში, გადაამოწმეთ თქვენი ანგარიში და შემდეგ დაიწყეთ ახალი პროექტი. თქვენ შეგიძლიათ ატვირთოთ ნიმუშები თქვენი მობილურით, თქვენი Arduino დაფით ან შეგიძლიათ მონაცემთა ნაკრების იმპორტი თქვენს ზღვარზე იმპულსურ ანგარიშში. თქვენს ანგარიშში ნიმუშების ჩატვირთვის უმარტივესი გზაა მობილური ტელეფონის გამოყენება. ამისათვის თქვენ უნდა დააკავშიროთ თქვენი მობილური Edge Impulse. მობილური ტელეფონის დასაკავშირებლად დააწკაპუნეთ „მოწყობილობებზე“და შემდეგ დააწკაპუნეთ „დააკავშირეთ ახალი მოწყობილობა“.

ნაბიჯი 3: დაუკავშირდით მობილურ ტელეფონს

დაუკავშირდით მობილურ ტელეფონს
დაუკავშირდით მობილურ ტელეფონს

შემდეგ ფანჯარაში დააწკაპუნეთ „გამოიყენეთ თქვენი მობილური ტელეფონი“და გამოჩნდება QR კოდი. დაასკანირეთ QR კოდი თქვენი მობილური ტელეფონით Google Lens ან QR კოდების სკანერის სხვა პროგრამის გამოყენებით.

ეს დააკავშირებს თქვენს ტელეფონს Edge Impulse სტუდიასთან.

თქვენი ტელეფონით, რომელიც დაკავშირებულია Edge Impulse Studio– სთან, შეგიძლიათ ახლა ატვირთოთ თქვენი ნიმუშები. ნიმუშების ჩატვირთვა, დააწკაპუნეთ "მონაცემთა მოპოვებაზე". ახლა მონაცემთა მოპოვების გვერდზე შეიყვანეთ ეტიკეტის სახელი, შეარჩიეთ მიკროფონი სენსორის სახით და შეიყვანეთ ნიმუშის სიგრძე. დააწკაპუნეთ „შერჩევის დაწყებაზე“, რომ დაიწყოთ ნიმუშის აღება 40 წმ. იმის ნაცვლად, რომ აიძულოთ ხველა, შეგიძლიათ გამოიყენოთ სხვადასხვა სიგრძის ხველის ონლაინ ნიმუშები. ჩაწერეთ სულ სხვადასხვა სიგრძის 10 – დან 12 – მდე ხველის ნიმუში.

ნაბიჯი 4:

გამოსახულება
გამოსახულება
გამოსახულება
გამოსახულება

ხველების ნიმუშების ატვირთვის შემდეგ, ახლა დააყენეთ ეტიკეტი "ხმაური" და შეაგროვეთ კიდევ 10 -დან 12 ხმაურის ნიმუში.

ეს ნიმუშები განკუთვნილია მოდულის ტრენინგისთვის, შემდეგ ეტაპზე ჩვენ შევაგროვებთ ტესტის მონაცემებს. ტესტის მონაცემები უნდა იყოს სასწავლო მონაცემების მინიმუმ 30%, ასე რომ შეაგროვეთ "ხმაურის" 3 ნიმუში და "ხველის" 4 -დან 5 -მდე ნიმუში. თქვენი მონაცემების შეგროვების ნაცვლად, თქვენ შეგიძლიათ შეიტანოთ ჩვენი მონაცემთა ნაკრები თქვენს Edge Impulse ანგარიშზე Edge- ის გამოყენებით იმპულსური CLI ამტვირთავი. CLI Uploader– ის დასაყენებლად, ჯერ გადმოწერეთ და დააინსტალირეთ Node.js თქვენს ლეპტოპზე. ამის შემდეგ გახსენით ბრძანების სტრიქონი და შეიყვანეთ ქვემოთ მოცემული ბრძანება:

npm ინსტალაცია -g ზღვარი-იმპულსი-კლი

ახლა გადმოწერეთ მონაცემთა ნაკრები (მონაცემთა ბმული) და ამოიღეთ ფაილი თქვენი პროექტის საქაღალდეში. გახსენით ბრძანების სტრიქონი და გადადით მონაცემთა ნაკრების ადგილას და გაუშვით ქვემოთ მოცემული ბრძანებები:

edge-impulse-uploader --cleanedge-impulse-uploader-კატეგორიის სასწავლო ტრენინგი/*. json

edge-impulse-uploader-ტრენინგის კატეგორია/*. cbor

edge-impulse-uploader-კატეგორიის ტესტირება ტესტირება/*. json edge-impulse-uploader-კატეგორიის ტესტირება ტესტირება/*. cbor

ნაბიჯი 5: მოდელის მომზადება და კოდის შეცვლა

როგორც მონაცემთა ნაკრები მზად არის, ახლა ჩვენ შევქმნით იმპულსს მონაცემებისთვის. ამისათვის გადადით გვერდზე "შექმენით იმპულსი".

ახლა "შექმენით იმპულსი" გვერდზე, დააჭირეთ ღილაკს "დაამატეთ დამუშავების ბლოკი". შემდეგ ფანჯარაში აირჩიეთ აუდიო (MFCC) ბლოკი. ამის შემდეგ დააჭირეთ ღილაკს "დაამატეთ სასწავლო ბლოკი" და შეარჩიეთ ნერვული ქსელის (კერასის) ბლოკი. შემდეგ დააწკაპუნეთ ‘იმპულსის შენახვაზე’.

მომდევნო ეტაპზე, გადადით MFCC გვერდზე და შემდეგ დააწკაპუნეთ „თვისებების გენერირებაზე“. ის შექმნის MFCC ბლოკებს აუდიოს ყველა ჩვენი ფანჯრისთვის.

ამის შემდეგ გადადით "NN კლასიფიკატორის" გვერდზე და დააწკაპუნეთ "ნერვული ქსელის პარამეტრების" ზედა მარჯვენა კუთხეში არსებულ სამ წერტილზე და აირჩიეთ "გადადით კერასის (ექსპერტის) რეჟიმში".

შეცვალეთ ორიგინალი შემდეგი კოდით და შეცვალეთ "მინიმალური ნდობის ნიშანი" "0.70" -ზე. შემდეგ დააჭირეთ ღილაკს "ვარჯიშის დაწყება". ის დაიწყებს თქვენი მოდელის მომზადებას.

იმპორტის tensorflow როგორც tffrom tensorflow.keras.models იმპორტი Sequential from tensorflow.keras.layers იმპორტი Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D საწყისი tensorflow.keras.optimizers იმპორტისგან MaxNorm # მოდელის არქიტექტურის მოდელი = თანმიმდევრული () model.add (InputLayer (input_shape = (X_train.shape [1],), name = 'x_input')) model.add (გადაკეთება ((int (X_train.shape [1] / / 13), 13, 1), input_shape = (X_train.shape [1],))) model.add (Conv2D (10, kernel_size = 5, activation = 'relu', padding = 'same', kernel_constraint = MaxNorm (3))) model.add (AveragePooling2D (pool_size = 2, padding = 'same')) model.add (Conv2D (5, kernel_size = 5, activation = 'relu', padding = 'same', kernel_constraint = MaxNorm (3))) model.add (AveragePooling2D (pool_size = 2, padding = 'same')) model.add (Flatten ()) model.add (მკვრივი (კლასები, გააქტიურება = 'softmax', name = 'y_pred', kernel_constraint = MaxNorm (3))) # ეს აკონტროლებს სწავლის კურსს opt = Adam (lr = 0.005, beta_ 1 = 0.9, ბეტა_2 = 0.999) # ნერვული ქსელის მოდელის მომზადება. შედგენა (დაკარგვა = 'კატეგორიული_კროსენტროპია', ოპტიმიზატორი = არჩევა, მეტრიკა = ['სიზუსტე']) model.fit (X_train, Y_train, batch_size = 32, epochs = 9, validation_data = (X_test, Y_test), verbose = 2)

ნაბიჯი 6:

მოდელის მომზადების შემდეგ, ის აჩვენებს სასწავლო შესრულებას. ჩემთვის, სიზუსტე იყო 96.5% და ზარალი იყო 0.10, რაც კარგია გასაგრძელებლად.

ახლა, როდესაც ჩვენი ხველის გამოვლენის მოდელი მზად არის, ჩვენ განვათავსებთ ამ მოდელს Arduino ბიბლიოთეკის სახით. სანამ მოდელს გადმოტვირთავთ ბიბლიოთეკის სახით, შეგიძლიათ შეამოწმოთ შესრულება "ცოცხალი კლასიფიკაციის" გვერდზე გადასვლით. გადადით "განლაგების" გვერდზე და აირჩიეთ "Arduino Library". ახლა გადაახვიეთ ქვემოთ და დააწკაპუნეთ „მშენებლობაზე“პროცესის დასაწყებად. ეს შექმნის არდუინოს ბიბლიოთეკას თქვენი პროექტისათვის.

ახლა დაამატეთ ბიბლიოთეკა თქვენს Arduino IDE- ში. ამისათვის გახსენით Arduino IDE და შემდეგ დააწკაპუნეთ Sketch> Include Library> Add. ZIP ბიბლიოთეკა. შემდეგ, ატვირთეთ მაგალითი ფაილში> მაგალითები> თქვენი პროექტის სახელი - Edge Impulse> nano_ble33_sense_microphone. ჩვენ შევიტანთ ცვლილებებს კოდში ისე, რომ ჩვენ შეგვიძლია გამოვიღოთ გამაფრთხილებელი ხმა Arduino– ს ხველების გამოვლენისას. ამისათვის ზუზერთან არის დაკავშირებული არდუინო და როდესაც ის აღმოაჩენს ხველას, LED სამჯერ აციმციმდება. ცვლილებები ხდება void loop () ფუნქციებში, სადაც ის ბეჭდავს ხმაურისა და ხველის მნიშვნელობებს. თავდაპირველ კოდში ის დაბეჭდავს როგორც ეტიკეტებს, ასევე მათ მნიშვნელობებს. for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", result.classification [ix]. label, result.classification [ix]. ღირებულება); } ჩვენ ვაპირებთ შევინახოთ როგორც ხმაურის, ასევე ხველის მნიშვნელობა სხვადასხვა ცვლადში და შევადაროთ ხმაურის მნიშვნელობები. თუ ხმაურის მნიშვნელობა 0.50 -ზე დაბალია, ეს ნიშნავს, რომ ხველის ღირებულება 0.50 -ზე მეტია და ის ხმას გამოსცემს. შეცვალეთ loop () კოდის ორიგინალი ამით: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix]. ღირებულება); float Data = result.classification [ix]. ღირებულება; if (მონაცემები <0.50) {Serial.print ("ხველა გამოვლინდა"); განგაში (); }} ცვლილებების შეტანის შემდეგ, ატვირთეთ კოდი თქვენს არდუინოში. გახსენით სერიული მონიტორი 115200 baud– ზე.

ასე შეიძლება აშენდეს ხველის გამოვლენის მანქანა, ეს არ არის ძალიან ეფექტური მეთოდი ნებისმიერი COVID19 ეჭვმიტანილის პოვნაში, მაგრამ მას შეუძლია მშვენივრად იმუშაოს ზოგიერთ ხალხმრავალ ადგილას.

ნაბიჯი 7: კოდი

გთხოვთ იპოვოთ თანდართული ფაილი, და თუ მოგეწონათ არ დაგავიწყდეთ ხმის მიცემა ქვემოთ მოცემულ კონკურსში.

გირჩევთ: