Ez a cikk részletezi, hogyan lehet portálni és futtatni a MobileNetV3 modellt az NXP i.MX8MP beágyazott platformon a kézzel írott digitális felismerés funkciójának elérése érdekében. Az adatkészletek importjától, a modellképzéstől és a validálástól a TensorFlow Lite mennyiségezéséig és telepítéséig teljes mértékben bemutatja az eIQ Portal eszköz használatának folyamatát. Az adatgyűjtés importálása Ha nincs adatkészleted, közvetlenül kattintson a "Import dataset" gombra, és válassza ki az eszközben megadott adatkészletet. (Ha saját adatkészleted van, kattintson a "Create a blank project" gombra, hogy közvetlenül importálja.) Ez a dokumentum az eszköz által biztosított adatkészletet használja. Az eszközzel töltse le az adatkészletet a TensorFlow-ból, az alábbiak szerint. Kiválaszthatja a megadott adatkészleteket a bal felső sarokban található csepegtető menüből. Ezek mind a TensorFlowban gyakran használt adatkészletek. Ez a papír a mnist adatkészletet használja. A mnist adatkészlet 60 000 kézzel írott számjegyet tartalmaz a képzési készletként és 10 000 kézzel írott számjegyet a hitelesítési készletként. 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. Továbbá, van egy "Problem típus" csepp - lefelé menü a bal felső sarokban, amely a feladat típusát képviseli. Mint az alábbiakban látható, az eszköz ezen verziója csak két típust kínál, az egyik a képosztályozás és a másik az objektumfelismerés. Az objektumfelismerési feladatban csak egy adatkészlet, coco/2017. Ez az adatkészlet 80 típusú objektumfelismerést képes észlelni, 118,287 képet a képzési készletként, 5000 képet a validációs készletként és 20,288 képet a tesztkészletként. Az adatkészlet kiválasztása után kattintson az "IMPORT" gombra, válassza ki a mentési könyvtárat, és várja meg az importálást. Válassza ki a Save címkét. Várja meg, amíg az adatkészlet importálásra kerül. Az importálás befejezése után megtekintheti az adatkészletet. A bal oldalon az egyes képek száma és a képcímkék jelennek meg. A jobb oldalon az adatkészlet minden egyes képe látható. A részletes információkat egy kép kiválasztásával tekintheti meg. Képzési modell Az adatkészlet importálása után a következő lépés a modell kiválasztása. Az alábbiakban látható módon kattintson a "SELECT MODEL" gombra a képen. A modell kiválasztásának felülete az alábbiak szerint látható. Ebben az interfészben a bal oldalon három különböző lehetőség látható, és funkcióik a következők: Modellek visszaállítása: A legutóbb használt modellt töltse le. Alapmodellek: Válassza ki a megadott alapmodelleket. Felhasználói modellek: Válassza ki az Ön által létrehozott modelleket. A jobb oldalon különböző funkciókkal rendelkező modellek jelennek meg, például osztályozási modellek, képszegmentációs modellek és objektumfelismerési modellek. Ez a dokumentum az eIQ Portal által biztosított alapmodellt használja, ezért válassza ki az alábbi ábrán látható „BÁZIMODEL” lehetőséget. Az alábbi ábra az eszköz által biztosított több alapmodellt mutatja. Ez a dokumentum a mobilenet_v3 modellt használja. A különböző modellek szerkezetét a kezdőlapon található „MODEL TOOL” segítségével lehet megtekinteni. A modell kiválasztása után adja meg a modell képzési szakaszát. Az interfész az alábbiak szerint látható. A bal oldalon a képzési folyamat során beállítandó paramétereket, beleértve a tanulási sebességet, a tételméretet és az évszakokat stb. Szükség szerint beállítható. A képzés paraméterei az alábbiak szerint jelennek meg. A kiválasztás után kattintson a "Start training" gombra. A jobb oldali modell pontossága és veszteségértéke intuitív módon megtekinthető. A modellképzés befejezése után, ahogy az az alábbi ábrán látható, különböző tartományokat állíthat be a lépések információinak megtekintéséhez. Validációs modell A modellképzés befejezése után a modellt validálni kell. Válassza ki az „VALIDATE” lehetőséget a modell validálási szakaszba való belépéshez. A modell-hitelesítési interfészben be kell állítania az érvényesítési paramétereket is, beleértve a Softmax küszöbértéket és néhány kvantitatív paramétert. A dokumentumban meghatározott paraméterek a következők. A beállítások beállítása után kattintson az "Validáljon" gombra az alábbiak szerint. A validálás befejezése után a modell zavaró mátrixát és pontosságát az interfészben jeleníti meg, az alábbiak szerint. Konverziós modell Miután a modellképzés és a validálás befejeződött, a modell futtatásához az OKMX8MP-en a modellt .tflite formátumú fájllá kell konvertálni. Ezért a modellt konvertálni kell. Kattintson a "DEPLOY" gombra a konverziós felület megadásához. Válassza ki az export típusát a bal oldali - kézi - lefelé menüből. Ebben a papíron az export formátum a TensorFlow Lite formátum. Ugyanakkor a könnyű célokra a bemeneti és kimeneti adattípusok mind int8-ra vannak beállítva. A paraméterek beállítása után válassza ki az „EXPORT MODEL” lehetőséget a modell exportálásához a .tflite formátumban, majd a modell portálása ebben a formátumban az i.MX8MP-re. Előrejelzés modell A modell előrejelzése előtt a következő fájlokat kell előkészíteni. Mobilen_v3.tflite fájl A kézi digitális képfájlokat megjósolni kell. A Python script fájl a modell betöltésére és a kép előzetes feldolgozására. Közülük a.tflite fájl sikeresen exportálható modell-hitelesítés után. Kiválaszthatja több kézzel írott digitális képfájlt az adatkészletből, vagy kézzel írhatja őket, majd átalakíthatja őket 28x28 fekete - háttérfehér - karakterképekké. Ez a papír a következő 30 képet használja előrejelzésre, a "group number_label" formájában. Írj egy Python scriptet: import numpy as np from PIL import Image import tflite_runtime.interpreter as tflite -------- Konfiguráció -------- 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", ] -------- Töltse fel a modellt --------- `interpreter = tflite.Interpreter(model_path=MODEL_PATH) interpreter.allocate_tensors() input_details = interpreter.get_input_details() output_details = interpreter.get_output_details() Bemeneti információk modellje input_shape = input_details[0]['shape'] # [1, H, W, C] magasság, szélesség, csatornák = input_shape[1], input_shape[2], input_shape[3] input_dtype = input_details[0]['dtype'] # np.float32 或 np.int8 Kvantitatív paraméter (ha int8) scale, zero_point = input_details[0]['kvantizáció']` -------- Előrejelzés -------- 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}") Másolja mindhárom fájlt az i.MX8MP-be, amint az az alábbi ábrán látható. Írja be a következő parancsot előrejelzések készítéséhez: python3 demo.py A kimeneti eredmény a következő: A kimeneti eredmények szerint látható, hogy a 3_9.jpg képcímkéjének 9, míg a modell előrejelzi a 7, és az összes többi képet normálisnak kell tekinteni. Az előrejelzés eredményei alapján látható, hogy az ez alkalommal képzett modell nagy pontossággal rendelkezik, és még mindig jól teljesít, ha átültetik az i.MX8MP-re.