תוכן עניינים:

גלאי שיעול בגודל כיס: 7 שלבים
גלאי שיעול בגודל כיס: 7 שלבים

וִידֵאוֹ: גלאי שיעול בגודל כיס: 7 שלבים

וִידֵאוֹ: גלאי שיעול בגודל כיס: 7 שלבים
וִידֵאוֹ: Into the Abyss: Exploring Unexplained Vanishings 2024, נוֹבֶמבֶּר
Anonim
גלאי שיעול בגודל כיס
גלאי שיעול בגודל כיס

COVID19 היא באמת מגיפה היסטורית שמשפיעה מאוד על כל העולם ואנשים בונים הרבה מכשירים חדשים להילחם איתה. בנינו גם מכונת חיטוי אוטומטית ואקדח תרמי להקרנת טמפרטורה ללא מגע. היום נבנה עוד מכשיר אחד שיסייע ללחימה בנגיף הקורונה. זוהי מערכת לזיהוי שיעול, שיכולה להבחין בין רעש לקול שיעול ויכולה לסייע במציאת חשוד בקורונה. היא תשתמש בטכניקות למידת מכונה לשם כך.

במדריך זה אנו הולכים לבנות מערכת זיהוי שיעול באמצעות Arduino 33 BLE Sense ו- Edge Impulse Studio. הוא יכול להבדיל בין רעשי רקע רגילים לשיעול באודיו בזמן אמת. השתמשנו ב- Edge Impulse Studio כדי להכשיר מערך נתונים של דגימות שיעול ורעשי רקע ולבנות מודל TInyML מותאם במיוחד, שיכול לזהות צליל שיעול בזמן אמת.

אספקה

חוּמרָה

  • Arduino 33 BLE Sense
  • מגשר LED
  • חוטים

תוֹכנָה

  • סטודיו Edge Impulse
  • Arduino IDE

שלב 1: תרשים מעגלים

תרשים מעגלים
תרשים מעגלים
תרשים מעגלים
תרשים מעגלים

תרשים מעגלים לגילוי שיעול באמצעות Arduino 33 BLE Sense ניתן לעיל. חלק פריצה עבור Arduino 33 BLE לא היה זמין, אז השתמשתי ב- Arduino Nano מכיוון שלשניהם יש אותו סיכת החוצה.

ההובלה החיובית של LED מחוברת לפין הדיגיטלי 4 של חוש Arduino 33 BLE וחוט שלילי מחובר לסיכת ה- GND של Arduino.

שלב 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 מעלה Impulse CLI. כדי להתקין את CLI Uploader, ראשית, הורד והתקן את Node.js במחשב הנייד שלך. לאחר מכן פתח את שורת הפקודה והזן את הפקודה הבאה:

npm להתקין -g edge-impulse-cli

כעת הורד את מערך הנתונים (קישור נתונים) וחלץ את הקובץ בתיקיית הפרויקט שלך. פתח את שורת הפקודה ונווט אל מיקום הנתונים והפעל את הפקודות הבאות:

edge-impulse-uploader --cleanedge-impulse-uploader-קטגוריית אימון/*. json

edge-impulse-uploader-קטגוריית אימון אימונים/*. cbor

edge-impulse-uploader-בדיקת קטגוריות בדיקה/*. json edge-impulse-uploader-בדיקת קטגוריות בדיקה/*. cbor

שלב 5: אימון המודל ושינוי הקוד

מכיוון שמערך הנתונים מוכן, כעת ניצור דחף לנתונים. לשם כך עבור לדף 'צור דחף'.

כעת בדף 'צור דחף', לחץ על 'הוסף בלוק עיבוד'. בחלון הבא, בחר בלוק האודיו (MFCC). לאחר מכן לחץ על 'הוסף בלוק למידה' ובחר בלוק הרשת העצבית (Keras). לאחר מכן לחץ על 'שמור דחף'.

בשלב הבא, עבור לדף MFCC ולאחר מכן לחץ על 'צור תכונות'. זה ייצור בלוקים של MFCC עבור כל חלונות השמע שלנו.

לאחר מכן עבור לדף 'NN Classifier' ולחץ על שלוש הנקודות בפינה השמאלית העליונה של 'הגדרות הרשת העצבית' ובחר 'עבור למצב Keras (מומחה)'.

החלף את המקור בקוד הבא ושנה את 'דירוג הביטחון המינימלי' ל- '0.70'. לאחר מכן לחץ על כפתור 'התחל אימון'. זה יתחיל לאמן את המודל שלך.

יבוא tensorflow כ tfrom tensorflow.keras.models יבוא רצף מ- tensorflow.keras.layers ייבוא Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D מ- tensorflow.keras.optimizers מייבא אדם מ- tensorflow.keras. MaxNorm # model architecture model = Sequential () 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 (Dense (classes, activation = 'softmax', name = 'y_pred', kernel_constraint = MaxNorm (3))) # זה שולט בקצב הלמידה opt = Adam (lr = 0.005, beta_ 1 = 0.9, beta_2 = 0.999) # אימון הרשת העצבית model.compile (loss = 'categorical_crossentropy', optimizer = opt, metrics = ['דיוק']) model.fit (X_train, Y_train, batch_size = 32, epochs = 9, validation_data = (X_test, Y_test), מילולי = 2)

שלב 6:

לאחר אימון המודל, הוא יציג את ביצועי האימון. בשבילי, הדיוק היה 96.5% וההפסד היה 0.10 שזה טוב להמשיך.

כעת, כאשר מודל גילוי השיעול שלנו מוכן, נפרס מודל זה כספריית Arduino. לפני הורדת המודל כספרייה, תוכל לבדוק את הביצועים על ידי מעבר לדף 'סיווג חי'. עבור לדף 'פריסה' ובחר 'ספריית Arduino'. כעת גלול מטה ולחץ על 'Build' כדי להתחיל את התהליך. זה יבנה ספריית Arduino לפרויקט שלך.

כעת הוסף את הספרייה ב- Arduino IDE שלך. לשם כך פתח את Arduino IDE ולאחר מכן לחץ על סקיצה> כלול ספרייה> ספריית Add. ZIP. לאחר מכן, טען דוגמה על ידי מעבר אל קובץ> דוגמאות> שם הפרויקט שלך - Edge Impulse> nano_ble33_sense_microphone. נבצע כמה שינויים בקוד על מנת שנוכל להשמיע צליל התראה כאשר הארדואינו מזהה שיעול. לשם כך, זמזם מתממשק עם Arduino ובכל פעם שהוא מזהה שיעול, ה- LED יהבהב שלוש פעמים. השינויים מתבצעים בפונקציות לולאה () של void שבהן היא מדפיסה את ערכי הרעש והשיעול. בקוד המקורי הוא מדפיס את התוויות ואת הערכים שלהן יחד. עבור (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", result.classification [ix].label, result.classification [ix].value); } אנו הולכים לשמור הן את ערכי הרעש והן את השיעול במשתנים שונים ולהשוות את ערכי הרעש. אם ערך הרעש יורד מתחת 0.50 זה אומר שערך השיעול הוא יותר מ- 0.50 וזה ישמיע את הקול. החלף את קוד המקור של לולאה () בזה: עבור (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = result.classification [ix].value; if (נתונים <0.50) {Serial.print ("זוהה שיעול"); אזעקה(); }} לאחר ביצוע השינויים, העלה את הקוד ל- Arduino שלך. פתח את הצג הטורי ב- 115200 baud.

אז כך ניתן לבנות מכונת זיהוי שיעול, זו לא שיטה יעילה במיוחד לאתר חשוד ל- COVID19 אך היא יכולה לעבוד יפה באיזורים הומי אדם.

שלב 7: קוד

אנא מצא את הקובץ המצורף, ואם אהבתם אל תשכחו להצביע לי בתחרות למטה.

מוּמלָץ: