Mục lục:

Máy phát hiện ho có kích thước bỏ túi: 7 bước
Máy phát hiện ho có kích thước bỏ túi: 7 bước

Video: Máy phát hiện ho có kích thước bỏ túi: 7 bước

Video: Máy phát hiện ho có kích thước bỏ túi: 7 bước
Video: Xây dần ước mơ "Bảo Tàng Tiền Tệ" 🏛 2024, Tháng mười một
Anonim
Máy phát hiện ho có kích thước bỏ túi
Máy phát hiện ho có kích thước bỏ túi

COVID19 thực sự là một đại dịch lịch sử ảnh hưởng rất xấu đến toàn thế giới và người ta đang chế tạo rất nhiều thiết bị mới để chống chọi với nó. Chúng tôi cũng đã chế tạo một máy khử trùng tự động và Súng nhiệt để kiểm tra nhiệt độ không tiếp xúc. Hôm nay chúng ta sẽ chế tạo thêm một thiết bị giúp chống lại Coronavirus. Đó là một hệ thống phát hiện ho, có thể phân biệt giữa tiếng ồn và âm thanh ho và có thể giúp tìm ra nghi phạm Corona. Nó sẽ sử dụng các kỹ thuật học máy cho việc đó.

Trong hướng dẫn này, chúng ta sẽ xây dựng một hệ thống Phát hiện Ho bằng Arduino 33 BLE Sense và Edge Impulse Studio. Nó có thể phân biệt giữa tiếng ồn nền bình thường và tiếng ho trong âm thanh thời gian thực. Chúng tôi đã sử dụng Edge Impulse Studio để đào tạo tập dữ liệu về các mẫu tiếng ho và tiếng ồn xung quanh, đồng thời xây dựng mô hình TInyML được tối ưu hóa cao, có thể phát hiện âm thanh Ho trong thời gian thực.

Quân nhu

Phần cứng

  • Arduino 33 BLE Sense
  • LEDJumper
  • Dây điện

Phần mềm

  • Edge Impulse Studio
  • Arduino IDE

Bước 1: Sơ đồ mạch

Sơ đồ mạch
Sơ đồ mạch
Sơ đồ mạch
Sơ đồ mạch

Sơ đồ mạch để phát hiện cơn ho bằng Arduino 33 BLE Sense được đưa ra ở trên. Phần Fritzing cho Arduino 33 BLE không có sẵn, vì vậy tôi đã sử dụng Arduino Nano vì cả hai đều có cùng một chân cắm.

Dây dẫn dương của LED được kết nối với chân số 4 của Arduino 33 BLE sense và Dây dẫn âm được kết nối với chân GND của Arduino.

Bước 2: Tạo tập dữ liệu cho máy phát hiện ho

Tạo tập dữ liệu cho máy phát hiện ho
Tạo tập dữ liệu cho máy phát hiện ho

Như đã đề cập trước đó, chúng tôi đang sử dụng Edge Impulse Studio để đào tạo mô hình phát hiện ho của mình. Để làm được điều đó, chúng tôi phải thu thập một tập dữ liệu có các mẫu dữ liệu mà chúng tôi muốn có thể nhận ra trên Arduino của chúng tôi. Vì mục đích là để phát hiện tiếng ho, bạn sẽ cần thu thập một số mẫu của nó và một số mẫu khác để tìm tiếng ồn, để có thể phân biệt giữa tiếng Ho và tiếng ồn khác. Chúng ta sẽ tạo một tập dữ liệu với hai lớp “ho” và “nhiễu”. Để tạo tập dữ liệu, hãy tạo tài khoản Edge Impulse, xác minh tài khoản của bạn và sau đó bắt đầu một dự án mới. Bạn có thể tải các mẫu bằng cách sử dụng điện thoại di động, bảng Arduino của mình hoặc bạn có thể nhập tập dữ liệu vào tài khoản xung cạnh của mình. Cách dễ nhất để tải các mẫu vào tài khoản của bạn là sử dụng điện thoại di động của bạn. Để làm được điều đó, bạn phải kết nối điện thoại di động của mình với Edge Impulse. Để kết nối Điện thoại di động của bạn, hãy nhấp vào "Thiết bị" và sau đó nhấp vào "Kết nối thiết bị mới".

Bước 3: Kết nối với điện thoại di động

Kết nối với điện thoại di động
Kết nối với điện thoại di động

Bây giờ trong cửa sổ tiếp theo, hãy nhấp vào ‘Sử dụng điện thoại di động của bạn’ và mã QR sẽ xuất hiện. Quét mã QR bằng Điện thoại di động của bạn bằng Google Ống kính hoặc ứng dụng quét mã QR khác.

Thao tác này sẽ kết nối điện thoại của bạn với Edge Impulse studio.

Với điện thoại của bạn được kết nối với Edge Impulse Studio, bây giờ bạn có thể tải các mẫu của mình. Để tải các mẫu, hãy nhấp vào "Thu thập dữ liệu". Bây giờ trên trang Thu thập dữ liệu, hãy nhập tên nhãn, chọn micrô làm cảm biến và nhập độ dài mẫu. Nhấp vào "Bắt đầu lấy mẫu", để bắt đầu lấy mẫu 40 giây. Thay vì ép mình ho, bạn có thể sử dụng các mẫu ho trực tuyến với độ dài khác nhau. Ghi lại tổng số 10 đến 12 mẫu ho có độ dài khác nhau.

Bước 4:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Sau khi tải các mẫu tiếng ồn lên, bây giờ hãy đặt nhãn thành ‘tiếng ồn’ và thu thập thêm 10 đến 12 mẫu tiếng ồn khác.

Các mẫu này dành cho Đào tạo mô-đun, trong các bước tiếp theo, chúng tôi sẽ thu thập Dữ liệu kiểm tra. Dữ liệu kiểm tra phải có ít nhất 30% dữ liệu đào tạo, vì vậy hãy thu thập 3 mẫu 'tiếng ồn' và 4 đến 5 mẫu 'tiếng ho'. Thay vì thu thập dữ liệu của bạn, bạn có thể nhập tập dữ liệu của chúng tôi vào tài khoản Edge Impulse của bạn bằng cách sử dụng Edge Impulse CLI Uploader. Để cài đặt Trình tải lên CLI, trước tiên, hãy tải xuống và cài đặt Node.js trên máy tính xách tay của bạn. Sau đó, mở dấu nhắc lệnh và nhập lệnh dưới đây:

npm install -g edge-xung-cli

Bây giờ tải xuống tập dữ liệu (Dataset Link) và giải nén tệp trong thư mục dự án của bạn. Mở dấu nhắc lệnh và điều hướng đến vị trí tập dữ liệu và chạy các lệnh dưới đây:

edge-xung-uploader --cleanedge-xung-uploader - đào tạo huấn luyện thể loại / *. json

edge-xung-uploader - đào tạo huấn luyện thể loại / *. cbor

edge -clock-uploader - kiểm tra thử nghiệm danh mục / *. json edge-xung-tải lên - thử nghiệm kiểm tra danh mục / *. cbor

Bước 5: Đào tạo mô hình và tinh chỉnh mã

Khi tập dữ liệu đã sẵn sàng, bây giờ chúng ta sẽ tạo xung lực cho dữ liệu. Để thực hiện điều đó, hãy truy cập trang "Tạo xung lực".

Bây giờ trên trang "Tạo xung lực", hãy nhấp vào "Thêm khối xử lý". Trong cửa sổ tiếp theo, chọn khối Âm thanh (MFCC). Sau đó nhấp vào ‘Thêm khối học’ và chọn khối Mạng thần kinh (Keras). Sau đó nhấp vào ‘Lưu xung lực’.

Trong bước tiếp theo, hãy truy cập trang MFCC và sau đó nhấp vào ‘Tạo tính năng’. Nó sẽ tạo ra các khối MFCC cho tất cả các cửa sổ âm thanh của chúng ta.

Sau đó, truy cập trang ‘NN Classifier’ và nhấp vào ba dấu chấm ở góc trên bên phải của ‘Cài đặt mạng thần kinh’ và chọn ‘Chuyển sang chế độ Keras (chuyên gia)’.

Thay thế mã gốc bằng mã sau và thay đổi "Xếp hạng độ tin cậy tối thiểu" thành "0,70". Sau đó nhấp vào nút ‘Bắt đầu đào tạo’. Nó sẽ bắt đầu đào tạo mô hình của bạn.

nhập tensorflow dưới dạng tffrom tensorflow.keras.models nhập Tuần tự từ tensorflow.keras.layers nhập Mật độ, InputLayer, Dropout, Làm phẳng, Định hình lại, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D từ tensorflow.keras.optimizers nhập Adam.consortraflow.keras Mô hình kiến trúc mô hình MaxNorm # = Sequential () model.add (InputLayer (input_shape = (X_train.shape [1],), name = 'x_input')) model.add (Reshape ((int (X_train.shape [1] / 13), 13, 1), input_shape = (X_train.shape [1],))) model.add (Conv2D (10, kernel_size = 5, kích hoạt = '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 (Mật độ (các lớp, kích hoạt = 'softmax', name = 'y_pred', kernel_constraint = MaxNorm) (3))) # điều này kiểm soát tỷ lệ học tập opt = Adam (lr = 0,005, beta_ 1 = 0.9, beta_2 = 0.999) # đào tạo mô hình mạng thần kinh.compile (loss = 'categorical_crossentropy', Optimizer = opt, metrics = ['precision']) model.fit (X_train, Y_train, batch_size = 32, epochs = 9, validation_data = (X_test, Y_test), verbose = 2)

Bước 6:

Sau khi đào tạo mô hình, nó sẽ hiển thị hiệu suất đào tạo. Đối với tôi, độ chính xác là 96,5% và độ mất mát là 0,10, điều đó rất tốt để tiếp tục.

Bây giờ khi mô hình phát hiện ho của chúng tôi đã sẵn sàng, chúng tôi sẽ triển khai mô hình này dưới dạng thư viện Arduino. Trước khi tải xuống mô hình dưới dạng thư viện, bạn có thể kiểm tra hiệu suất bằng cách truy cập trang ‘Phân loại trực tiếp’. Đi tới trang ‘Triển khai’ và chọn ‘Thư viện Arduino’. Bây giờ cuộn xuống và nhấp vào ‘Build’ để bắt đầu quá trình. Điều này sẽ xây dựng một thư viện Arduino cho dự án của bạn.

Bây giờ hãy thêm thư viện trong IDE Arduino của bạn. Để thực hiện điều đó, hãy mở Arduino IDE và sau đó nhấp vào Phác thảo> Bao gồm Thư viện> Thư viện Add. ZIP. Sau đó, tải một ví dụ bằng cách đi tới Tệp> Ví dụ> Tên dự án của bạn - Edge Impulse> nano_ble33_sense_microphone. Chúng tôi sẽ thực hiện một số thay đổi trong mã để có thể phát ra âm thanh cảnh báo khi Arduino phát hiện ra tiếng ho. Do đó, một bộ rung được giao tiếp với Arduino và bất cứ khi nào nó phát hiện ra tiếng ho, đèn LED sẽ nhấp nháy ba lần. Các thay đổi được thực hiện trong các hàm void loop () nơi nó đang in các giá trị nhiễu và ho. Trong mã gốc, nó đang in cả nhãn và giá trị của chúng cùng nhau. for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf ("% s:%.5f / n", result.classification [ix].label, result.classification [ix].value); } Chúng tôi sẽ lưu cả giá trị nhiễu và ho trong các biến khác nhau và so sánh các giá trị nhiễu. Nếu giá trị tiếng ồn xuống dưới 0,50 có nghĩa là giá trị ho lớn hơn 0,50 và nó sẽ tạo ra âm thanh. Thay thế mã gốc cho loop () bằng mã này: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = result.classification [ix].value; if (Dữ liệu <0,50) {Serial.print ("Đã phát hiện ra cơn ho"); báo thức(); }} Sau khi thực hiện các thay đổi, hãy tải mã lên Arduino của bạn. Mở màn hình nối tiếp ở 115200 baud.

Vì vậy, đây là cách một máy phát hiện ho có thể được chế tạo, nó không phải là một phương pháp hiệu quả để tìm bất kỳ nghi ngờ COVID19 nào nhưng nó có thể hoạt động tốt ở một số khu vực đông đúc.

Bước 7: Mã

Vui lòng xem tập tin đính kèm, Và nếu bạn thích nó, đừng quên bình chọn cho tôi trong cuộc thi dưới đây.

Đề xuất: