6.0 KiB
קרא למזהה האובייקטים שלך ממכשיר ה-IoT שלך - Wio Terminal
לאחר שמזהה האובייקטים שלך פורסם, ניתן להשתמש בו ממכשיר ה-IoT שלך.
העתק את פרויקט מסווג התמונות
רוב מזהה המלאי שלך דומה למסווג התמונות שיצרת בשיעור קודם.
משימה - העתק את פרויקט מסווג התמונות
-
חבר את ה-ArduCam שלך ל-Wio Terminal, בהתאם לשלבים מ-שיעור 2 של פרויקט הייצור.
ייתכן שתרצה גם לקבע את המצלמה במיקום קבוע, למשל, על ידי תליית הכבל מעל קופסה או פחית, או קיבוע המצלמה לקופסה עם דבק דו-צדדי.
-
צור פרויקט חדש לחלוטין עבור Wio Terminal באמצעות PlatformIO. קרא לפרויקט הזה
stock-counter
. -
שחזר את השלבים מ-שיעור 2 של פרויקט הייצור כדי לצלם תמונות מהמצלמה.
-
שחזר את השלבים מ-שיעור 2 של פרויקט הייצור כדי לקרוא למסווג התמונות. רוב הקוד הזה ישמש מחדש לזיהוי אובייקטים.
שנה את הקוד ממסווג למזהה תמונות
הקוד שבו השתמשת לסיווג תמונות דומה מאוד לקוד לזיהוי אובייקטים. ההבדל העיקרי הוא ה-URL שנקרא, אותו קיבלת מ-Custom Vision, ותוצאות הקריאה.
משימה - שנה את הקוד ממסווג למזהה תמונות
-
הוסף את הוראת ה-include הבאה לראש קובץ
main.cpp
:#include <vector>
-
שנה את שם הפונקציה
classifyImage
ל-detectStock
, גם את שם הפונקציה וגם את הקריאה בפונקציהbuttonPressed
. -
מעל הפונקציה
detectStock
, הכרז על סף לסינון כל זיהוי עם הסתברות נמוכה:const float threshold = 0.3f;
בניגוד למסווג תמונות שמחזיר רק תוצאה אחת לכל תג, מזהה האובייקטים יחזיר מספר תוצאות, ולכן יש לסנן כל תוצאה עם הסתברות נמוכה.
-
מעל הפונקציה
detectStock
, הכרז על פונקציה לעיבוד התחזיות:void processPredictions(std::vector<JsonVariant> &predictions) { for(JsonVariant prediction : predictions) { String tag = prediction["tagName"].as<String>(); float probability = prediction["probability"].as<float>(); char buff[32]; sprintf(buff, "%s:\t%.2f%%", tag.c_str(), probability * 100.0); Serial.println(buff); } }
פונקציה זו מקבלת רשימת תחזיות ומדפיסה אותן לצג הסדרתי.
-
בפונקציה
detectStock
, החלף את תוכן הלולאהfor
שמסתובבת דרך התחזיות עם הבאה:std::vector<JsonVariant> passed_predictions; for(JsonVariant prediction : predictions) { float probability = prediction["probability"].as<float>(); if (probability > threshold) { passed_predictions.push_back(prediction); } } processPredictions(passed_predictions);
הלולאה עוברת דרך התחזיות, משווה את ההסתברות לסף. כל התחזיות עם הסתברות גבוהה מהסף מתווספות ל-
list
ומועברות לפונקציהprocessPredictions
. -
העלה והרץ את הקוד שלך. כוון את המצלמה לאובייקטים על מדף ולחץ על כפתור C. תראה את הפלט בצג הסדרתי:
Connecting to WiFi.. Connected! Image captured Image read to buffer with length 17416 tomato paste: 35.84% tomato paste: 35.87% tomato paste: 34.11% tomato paste: 35.16%
💁 ייתכן שתצטרך להתאים את ה-
threshold
לערך מתאים לתמונות שלך.תוכל לראות את התמונה שצולמה, ואת הערכים הללו בלשונית Predictions ב-Custom Vision.
💁 תוכל למצוא את הקוד הזה בתיקיית code-detect/wio-terminal.
😀 תוכנית ספירת המלאי שלך הצליחה!
כתב ויתור:
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית Co-op Translator. למרות שאנו שואפים לדיוק, יש להיות מודעים לכך שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.