Šajā rakstā ir aprakstīts, kā portēt un palaist MobileNetV3 modeli uz NXP i.MX8MP iebūvētās platformas, lai sasniegtu roku rakstītas ciparu atpazīšanas funkciju. No datu kopu importēšanas, modeļu apmācības un validācijas līdz TensorFlow Lite kvantificēšanai un izvietošanai, tas pilnībā demonstrē eIQ Portāla rīka lietošanas procesu. Importēt datus Pirms modeļa apmācības jums vispirms ir jāsagatavo datu kopa.Ja jums nav datu kopas, jūs varat tieši noklikšķināt uz "Importēt datu kopu" un izvēlēties datu kopu, kas sniegta instrumentā. (Ja jums ir sava datu kopa, jūs varat noklikšķināt uz "Radīt tukšu projektu", lai to tieši importētu.) Izmantojiet rīku, lai ielādētu datu kopu no TensorFlow, kā parādīts zemāk. Jūs varat izvēlēties norādītās datu kopas no lejupielādes izvēlnes augšējā kreisajā stūrī.Tās ir visas datu kopas, ko parasti izmanto TensorFlow.Šis papīrs izmanto mnist datu kopu. Mnist datu kopai ir 60 000 rakstītu ciparu kā apmācības kopai un 10 000 rakstītu ciparu kā validācijas kopai. 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. Kā parādīts zemāk, šī rīka versija nodrošina tikai divus veidus, viens ir attēla klasifikācija un otrs ir objekta atklāšana. Objekta atklāšanas uzdevumā ir tikai viens datu kopums, kokos/2017. Šis datu kopums var atklāt 80 objekta atpazīšanas veidus, ar 118,287 attēliem kā apmācības kopumu, 5000 attēliem kā validācijas kopumu un 20,288 attēliem kā testa kopumu. Pēc datu kopas izvēles noklikšķiniet uz pogas "IMPORT", atlasiet glabāšanas direktoriju un pagaidiet importēšanu. Izvēlieties glabāšanas adresi. Pagaidiet, līdz datu kopums tiek importēts. Pēc tam, kad imports ir pabeigts, jūs varat apskatīt datu kopu. Kreisajā pusē tiek parādīts katra attēla skaits un attēla etiķetes. Labajā pusē tiek parādīts katrs attēls datu kopā. Jūs varat apskatīt detalizētu informāciju, izvēloties attēlu. Apmācības modelis Pēc datu kopas importēšanas nākamais solis ir izvēlēties modeli. kā parādīts zemāk, noklikšķiniet uz pogas "SELECT MODEL" attēlā. Interfeiss modeļa izvēlei ir redzams zemāk. Šajā saskarnē kreisajā pusē ir parādītas trīs dažādas iespējas, un to funkcijas ir šādas: RESTORE MODEL: ielādējiet pēdējo reizi izmantoto modeli. BASE MODELS: Izvēlieties piedāvātos bāzes modeļus. Lietotāju modeļi: Izvēlieties veidotos modeļus. Labajā pusē ir parādīti modeļi ar dažādām funkcijām, piemēram, klasifikācijas modeļi, attēla segmentācijas modeļi un objektu noteikšanas modeļi. Šajā dokumentā tiek izmantots eIQ portāla nodrošinātais bāzes modelis, tāpēc izvēlieties "BASE MODEL", kā parādīts zemāk. Zemāk esošajā attēlā ir parādīti vairāki pamatmodeli, ko nodrošina šis rīks.Šis dokuments izmanto mobilenet_v3 modeli. Dažādu modeļu struktūras var apskatīt, izmantojot sākumlapas "MODEL TOOL". Pēc modeļa izvēles ievadiet modeļa apmācības posmu. Tās saskarne ir kā parādīta zemāk. kreisajā pusē parādīti parametri, kas jāpielāgo apmācības procesa laikā, ieskaitot mācīšanās ātrumu, partiju lielumu un laikposmus utt. To var pielāgot pēc vajadzības. labajā pusē var parādīt atbilstošu informāciju, piemēram, precizitāti un zaudējumu vērtību apmācības procesa laikā. Šīs apmācības parametri ir redzami zemāk. Pēc izvēles noklikšķiniet uz "Sākt apmācību". Precizitāti un zaudējumu vērtību no modeļa labajā pusē var intuitīvi apskatīt. Pēc tam, kad modelis apmācība ir pabeigta, kā parādīts attēlā zemāk, jūs varat iestatīt dažādus diapazonus, lai apskatītu informāciju par soļiem. Validācijas modelis Pēc tam, kad modeļa apmācība ir pabeigta, modelis ir jāvalidē. Izvēlieties "VALIDATE", lai ievadītu modeļa validācijas posmu. Modelēšanas validācijas saskarnē ir jānosaka arī validācijas parametri, tostarp Softmax slieksnis un daži kvantificēšanas parametri. Šajā dokumentā norādītie parametri ir šādi. Pēc iestatīšanas noklikšķiniet uz "Validēt", kā parādīts zemāk. Kad validācija ir pabeigta, modeļa neskaidrības matrica un precizitāte tiks parādīta saskarnē, kā parādīts zemāk. Konversijas modelis Pēc tam, kad modeļa apmācība un validācija ir pabeigta, lai varētu palaist modeli uz OKMX8MP, modelis ir jāpārvērš failā .tflite formātā. Tādēļ modelis ir jāpārvērš. Noklikšķiniet uz "DEPLOY", lai ievadītu konversijas saskarni. Izvēlieties eksporta veidu no kreisās - rokas lejupielādes - lejupielādes izvēlnes. Šajā dokumentā eksporta formāts ir TensorFlow Lite formāts. Tajā pašā laikā vieglajiem nolūkiem gan ievades, gan izejas datu veidi ir iestatīti uz int8. Pēc parametru iestatīšanas atlasiet "EXPORT MODEL", lai eksportētu modeli.tflite formātā, un pēc tam portējiet modeli šajā formātā uz i.MX8MP. Modelēšanas prognoze Pirms modeļa prognozēšanas ir nepieciešams sagatavot šādus failus. Mobilen_v3.tflite fails Rakstiem rakstītie ciparu attēlu faili tiek prognozēti. Python skriptu fails, lai ielādētu modeli un attēla iepriekšēju apstrādi. Starp tiem.tflite failu var veiksmīgi eksportēt pēc modeļa validācijas. Jūs varat izvēlēties vairākus digitālos attēlu failus no datu kopas, vai arī jūs varat tos rakstīt ar roku un pēc tam pārvērst tos 28x28 melnā - fona baltā - rakstzīmju attēlos. Šis dokuments izmanto šādus 30 attēlus prognozēšanai, kas nosaukti kā "group number_label". Izmantojiet Python skriptu: import numpy as np from PIL import Image import tflite_runtime.interpreter as tflite -------- Konfigurācija -------- 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", ] -------- Lejupielādēt modeli --------- `interpreter = tflite.Interpreter(model_path=MODEL_PATH) interpreter.allocate_tensors() input_details = interpreter.get_input_details() output_details = interpreter.get_output_details() Ievades informācijas modelis input_shape = input_details[0]['shape'] # [1, H, W, C] augstums, platums, kanāli = input_shape[1], input_shape[2], input_shape[3] input_dtype = input_details[0]['dtype'] # np.float32 vai np.int8 Kvantizācijas parametrs (ja int8) skala, zero_point = input_details[0]['kvantizācija']` -------- Parādīt diskusiju -------- 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}") Kopējiet visus trīs failus uz i.MX8MP, kā parādīts tālāk. Ievadiet šādu komandu, lai veiktu prognozes: python3 demo.py Izejas rezultāts ir šāds: Saskaņā ar izejas rezultātiem var redzēt, ka 3_9.jpg attēla etiķetei jābūt 9, bet modelis prognozē 7, un visi pārējie attēli tiek prognozēti kā normāli. Pamatojoties uz prognozēšanas rezultātiem, var redzēt, ka šoreiz apmācītajam modelim ir augsta precizitāte un joprojām darbojas labi, ja tiek transplantēts uz i.MX8MP.