מאמר זה מתאר כיצד להכניס ולהפעיל את מודל MobileNetV3 על הפלטפורמה המובנית NXP i.MX8MP כדי להשיג את הפונקציה של זיהוי דיגיטלי כתוב ביד. מהיבוא של ערכות נתונים, הכשרה מודל ואימות ל TensorFlow Lite כוונטיזציה והפצה, הוא מראה באופן מלא את תהליך השימוש של כלי eIQ פורטל. באמצעות המקרה הזה, הקוראים יכולים ללמוד במהירות כיצד ליישם את ההשלכות הקצה של מודלים קלים למידה עמוקה על פלטפורמה ARM ברמה תעשייתית. ייבוא נתונים אם אין לך ערכת נתונים, באפשרותך ללחוץ ישירות על "ייבא ערכת נתונים" ולבחור את ערכת הנתונים המוצעת בכלי. (אם יש לך ערכת נתונים משלך, באפשרותך ללחוץ על "יצור פרויקט ריק" כדי לייבא אותה ישירות.) נייר זה משתמש במסד הנתונים שסופק על-ידי הכלי.השתמש בכלי כדי להוריד את מסד הנתונים מ- TensorFlow, כפי שמוצג להלן. באפשרותך לבחור את קבוצות הנתונים המוצעות מתוך התפריט הנפילה למטה בפינה השמאלית העליונה. אלה הן כל קבוצות הנתונים הנפוצות ב- TensorFlow. קבוצת הנתונים של MNIST מכילה 60,000 ספרות כתוב ביד בתור קבוצת ההכשרה ו-10,000 ספרות כתוב ביד בתור קבוצת האימות. cifar10: It contains color images of 10 classes, with 50,000 images as the training set and 10,000 images as the validation set. horses_or_humans: horses_or_humans: It has 2 classes, humans and horses. There are 1,027 images of humans and 1,027 images of horses respectively. tf_flowers: It has 5 classes, with a total of 3,670 images of all kinds of flowers. כמו כן, יש תפריט "סוג בעיה" בפינה השמאלית העליונה, המייצג את סוג המשימה. כפי שמוצג להלן, גרסה זו של הכלי מספקת רק שני סוגים, אחד הוא דירוג תמונה והשני הוא זיהוי אובייקטים. במשימה זיהוי אובייקטים, יש רק קבוצת נתונים אחת, קוקו/2017. קבוצת נתונים זו יכולה לזהות 80 סוגים של זיהוי אובייקטים, עם 118,287 תמונות כסדרת ההכשרה, 5,000 תמונות כסדרת אימות, 20,288 תמונות כסדרת הבדיקה. לאחר שבחרת את קבוצת הנתונים, לחץ על לחצן "IMPORT", בחר את תיקיית שמור, וממתין לייבוא. בחר את Save Directory. לחכות עד שהנתונים יובאו. לאחר שההובלה הושלמה, ניתן להציג את קבוצת הנתונים של MNIST. בצד שמאל מופיע מספר כל תמונה ואת תווית התמונה. בצד ימין מופיע כל תמונה במערך הנתונים. מודל אימון After importing the dataset, the next step is to select a model. As shown below, click the ''SELECT MODEL'' button in the figure. The interface for selecting a model is as shown below. In this interface, three different options are shown on the left, and their functions are as follows: תיקון המודל: להוריד את המודל ששימש לאחרונה. מודלים בסיסיים: בחר את המודלים הבסיסיים המוצעים. דגמים משתמשים: בחר את הדגמים שביצעת. בצד הימני מוצגים מודלים עם פונקציות שונות, כגון מודלים לדירוג, מודלים לדירוג תמונה ומודלים לזיהוי אובייקטים. מסמך זה משתמש במודל הבסיס שסופק על ידי eIQ Portal, לכן בחר "BASE MODEL" כפי שמוצג בתמונה הבאה. התמונה למטה מציגה מספר מודלים בסיסיים שסופקו על-ידי הכלי.מאמר זה משתמש במודל mobilenet_v3. לאחר שתבחר את המודל, נכנס לשלב ההכשרה של המודל. הממשק שלה הוא כפי שמוצג להלן. בצד השמאלי מראה את הפרמטרים שיש להתאים במהלך תהליך ההכשרה, כולל שיעור הלמידה, גודל החבילה, ועידן, וכו ' ניתן להתאים בהתאם לצורך. הצד הימני יכול להציג מידע רלוונטי כגון הדיוק וערך האובדן במהלך תהליך ההכשרה. הפרמטרים עבור אימון זה הם כפי שמוצג למטה. לאחר בחירה, לחץ על "התחל אימון". ניתן לראות באופן אינטואיטיבי את הדיוק והערך של המודל בצד ימין. לאחר השלמת ההכשרה למודל, כפי שמוצג בתמונה הבאה, ניתן להגדיר טווחים שונים כדי להציג את המידע של השלבים. מודל Validation לאחר סיום ההכשרה, הדגם צריך להיות מאושר. בחר "VALIDATE" כדי להיכנס לשלב אימות הדגם. בממשק אימות המודל, עליך גם להגדיר פרמטרים של אימות, כולל סף Softmax וכמה פרמטרים של כמות. הפרמטרים שנקבעו במסמך זה הם כדלקמן.אחרי ההגדרה, לחץ על "Validate" כפי שמוצג למטה. לאחר השלמת האימות, המוטרף והדיוק של המודל יופיעו בממשק, כפי שמוצג להלן. מודל ההמרה לאחר השלמת ההכשרה והאימות של המודל, על מנת להפעיל את המודל ב- OKMX8MP, יש להמיר את המודל לקובץ בפורמט .tflite. לכן, יש להמיר את המודל. לחץ על "DEPLOY" כדי להזין את ממשק ההמרה. בחר את סוג הייצוא מן התפריט השמאלי - יד נופל - למטה. במסמך זה, פורמט הייצוא הוא פורמט TensorFlow Lite. באותו זמן, למטרות קלות, סוגי הנתונים של הכניסה והיציאה שניהם מוגדרים ל- int8. הפרמטרים מוגדרים כפי שמוצג להלן. לאחר הגדרת הפרמטרים, בחר "EXPORT MODEL" כדי לייצא את המודל בפורמט .tflite, ולאחר מכן פורט את המודל בפורמט זה ל-i.MX8MP. מודל תחזית לפני תחזית המודל, יש להכין את הקבצים הבאים. קובץ Mobilen_v3.tflite קבצי תמונה כתובים ביד צריכים להיות צפויים. קובץ התסריט של Python לטעון את המודל ואת התמונה מראש - עיבוד. בין אלה, את קובץ .tflite ניתן לייצא בהצלחה לאחר אימות מודל. אתה יכול לבחור מספר קבצי דיגיטלי כתוב ביד מהתקן הנתונים, או אתה יכול לכתוב אותם ביד ולאחר מכן להמיר אותם לתמונות 28x28 שחור - רקע לבן - תווים. כתיבת תסריט Python: import numpy as np from PIL import Image import tflite_runtime.interpreter as tflite – – – – – – – – – – – – – – – – – – – – – MODEL_PATH = "/home/root/mobilenet_v3.tflite" IMAGE_PATHS = [ "/home/root/1_0.jpg", ''/home/root/1_1.jpg", "/home/root/1_2.jpg", "/home/root/1_3.jpg", ''/home/root/1_4.jpg", "/home/root/1_5.jpg", ''/home/root/1_6.jpg", "/home/root/1_7.jpg", "/home/root/1_8.jpg", "/home/root/1_9.jpg", "/home/root/2_0.jpg", ''/home/root/2_1.jpg", "/home/root/2_2.jpg", "/home/root/2_3.jpg", ''/home/root/2_4.jpg", "/home/root/2_5.jpg", ''/home/root/2_6.jpg", "/home/root/2_7.jpg", "/home/root/2_8.jpg", "/home/root/2_9.jpg", "/home/root/3_0.jpg", ''/home/root/3_1.jpg", "/home/root/3_2.jpg", "/home/root/3_3.jpg", ''/home/root/3_4.jpg", "/home/root/3_5.jpg", ''/home/root/3_6.jpg", "/home/root/3_7.jpg", "/home/root/3_8.jpg", "/home/root/3_9.jpg", ] -------- להעלות את המודל -------- תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום תרגום מודל מידע כניסה input_shape = input_details[0]['shape'] # [1, H, W, C] גובה, רוחב, ערוצים = input_shape[1], input_shape[2], input_shape[3] input_dtype = input_details[0]['dtype'] # np.float32 或 np.int8 Quantization parameter (if int8) סולם, zero_point = input_details[0]['כמות']` – – – – – – – – – – – – – – – – – – – – for img_path in IMAGE_PATHS: # Open the picture and turn to RGB (3 channels) img = Image.open(img_path).convert('RGB') img = img.resize((width, height)) # Convert to numpy array img_array = np.array(img, dtype=np.float32) # If the training data is black on a white background, it can be reversed #img_array = 255 - img_array # Normalized to 0 ~ 1 img_array = img_array / 255.0 # Adjust the shape to [1, H, W, 3] img_array = img_array.reshape(1, height, width, channels) # If the model is a quantized int8, then transform if input_dtype == np.int8: img_array = img_array / scale + zero_point img_array = np.round(img_array).astype(np.int8) # Set the input interpreter.set_tensor(input_details[0]['index'], img_array) # reasoning interpreter.invoke() # Get output output_data = interpreter.get_tensor(output_details[0]['index']) predicted_label = np.argmax(output_data) print(f''picture{img_path} prediction {predicted_label}") העתק את כל שלושת הקבצים ל- i.MX8MP, כפי שמוצג בתמונה הבאה. הקלד את הפקודה הבאה כדי לבצע תחזיות: python3 demo.py התוצאה של היציאה היא כדלקמן: על פי תוצאות היציאה, ניתן לראות כי תווית התמונה של 3_9.jpg צריכה להיות 9, בעוד המודל מצפה 7, וכל התמונות האחרות צפויות להיות נורמליות. בהתבסס על התוצאות של התחזיות, ניתן לראות כי המודל מאומן הפעם יש דיוק גבוה ועדיין מתפקד היטב כאשר מעובד על i.MX8MP.