6.0 KiB
סיווג תמונה - חומרה וירטואלית של IoT ו-Raspberry Pi
בחלק זה של השיעור, תשלחו את התמונה שצולמה על ידי המצלמה לשירות Custom Vision כדי לסווג אותה.
שליחת תמונות ל-Custom Vision
לשירות Custom Vision יש SDK של Python שניתן להשתמש בו לסיווג תמונות.
משימה - שליחת תמונות ל-Custom Vision
-
פתחו את תיקיית
fruit-quality-detector
ב-VS Code. אם אתם משתמשים במכשיר IoT וירטואלי, ודאו שהסביבה הווירטואלית פועלת בטרמינל. -
ה-SDK של Python לשליחת תמונות ל-Custom Vision זמין כחבילת Pip. התקינו אותו באמצעות הפקודה הבאה:
pip3 install azure-cognitiveservices-vision-customvision
-
הוסיפו את הצהרות הייבוא הבאות בראש קובץ
app.py
:from msrest.authentication import ApiKeyCredentials from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient
זה מביא כמה מודולים מספריות Custom Vision, אחד לאימות עם מפתח התחזית, ואחד שמספק מחלקת לקוח תחזיות שיכולה לקרוא ל-Custom Vision.
-
הוסיפו את הקוד הבא לסוף הקובץ:
prediction_url = '<prediction_url>' prediction_key = '<prediction key>'
החליפו את
<prediction_url>
בכתובת ה-URL שהעתקתם מדיאלוג Prediction URL מוקדם יותר בשיעור זה. החליפו את<prediction key>
במפתח התחזית שהעתקתם מאותו דיאלוג. -
כתובת ה-URL של התחזית שסופקה על ידי דיאלוג Prediction URL מיועדת לשימוש כאשר קוראים לנקודת הקצה של REST ישירות. ה-SDK של Python משתמש בחלקים שונים של ה-URL במקומות שונים. הוסיפו את הקוד הבא כדי לפרק את ה-URL לחלקים הנדרשים:
parts = prediction_url.split('/') endpoint = 'https://' + parts[2] project_id = parts[6] iteration_name = parts[9]
זה מפרק את ה-URL, ומחלץ את נקודת הקצה
https://<location>.api.cognitive.microsoft.com
, את מזהה הפרויקט, ואת שם האיטרציה שפורסמה. -
צרו אובייקט תחזית כדי לבצע את התחזית באמצעות הקוד הבא:
prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key}) predictor = CustomVisionPredictionClient(endpoint, prediction_credentials)
prediction_credentials
עוטף את מפתח התחזית. אלו משמשים לאחר מכן ליצירת אובייקט לקוח תחזיות שמצביע על נקודת הקצה. -
שלחו את התמונה ל-Custom Vision באמצעות הקוד הבא:
image.seek(0) results = predictor.classify_image(project_id, iteration_name, image)
זה מחזיר את התמונה להתחלה, ואז שולח אותה ללקוח התחזיות.
-
לבסוף, הציגו את התוצאות באמצעות הקוד הבא:
for prediction in results.predictions: print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%')
זה יעבור דרך כל התחזיות שהוחזרו ויציג אותן בטרמינל. ההסתברויות המוחזרות הן מספרים עשרוניים בין 0 ל-1, כאשר 0 מייצג סיכוי של 0% להתאמה לתג, ו-1 מייצג סיכוי של 100%.
💁 מסווגי תמונות יחזירו את האחוזים עבור כל התגים שהיו בשימוש. לכל תג תהיה הסתברות שהתמונה תואמת לתג זה.
-
הריצו את הקוד שלכם, כאשר המצלמה מצביעה על פרי כלשהו, או על סט תמונות מתאים, או פרי שנראה במצלמת הרשת שלכם אם אתם משתמשים בחומרת IoT וירטואלית. תוכלו לראות את הפלט בקונסולה:
(.venv) ➜ fruit-quality-detector python app.py ripe: 56.84% unripe: 43.16%
תוכלו לראות את התמונה שצולמה, ואת הערכים הללו בלשונית Predictions ב-Custom Vision.
💁 תוכלו למצוא את הקוד הזה בתיקיית code-classify/pi או code-classify/virtual-iot-device.
😀 תוכנית סיווג איכות הפירות שלכם הייתה הצלחה!
כתב ויתור:
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית Co-op Translator. למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.