[FRDM-IMX95] i.MX 95 カメラ+AI - YOLOv8mの例 (日本語ブログ)

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

[FRDM-IMX95] i.MX 95 カメラ+AI - YOLOv8mの例 (日本語ブログ)

shigenobukatagi
NXP Employee
NXP Employee
0 0 103

はじめに

FRDM-IMX95ボードを使って、カメラで取得した画像をAIアクセラレータ(NPU)に渡し、物体認識をさせてみます。使うモデルはYOLOv8mです。
[FRDM-IMX95] i.MX 95 カメラアプリケーションの導入 (日本語ブログ)の続きですので、カメラの動作確認ができている前提でご覧ください。

(作業時間:15分) *LinuxイメージがFRDM-IMX95に書き込み、カメラの動作が確認できている前提

 

Yoloについて

You Only Look Once : 1枚の画像全体を1度だけCNNにかけて物体認識をするため非常に高速なアルゴリズムだそうです。物体認識としては非常にポピュラーですね。

 

目次

 

1. eIQ Neutron用へのモデル変換

Tensorflow Liteで提供されているモデルを、i.MX 95内蔵のNPU(=eIQ Neutron)用に変換する必要があります。変換にはNXPが提供するeIQ Neutron SDKを使う必要があります。また、変換に使用したeIQ Neutron SDKに含まれるNeutron firmware / Neutron driver / TensorFlow neutron delegateを、FRDM-IMX95へコピーする必要があります。
詳細はeIQ Neutron SDKのdoc/NeutronSDKUserGuide.mdをご参照ください。
今回はLinux L6.18.2_1.0.0とeIQ Neutron SDK v3.0.1の組み合わせを使用しています。

 

1.1 SDKの準備

まずはeIQ Neutron SDKをダウンロードします。Windows版、Linux版の2種類があります。私はLinux版をWSL2で動かして確認しています。

$ mkdir eiq-neutron-sdk-3.0.1
$ cd eiq-neutron-sdk-3.0.1
$ unzip /path/to/eiq-neutron-sdk-3.0.1.zip
$ ls bin/
neutron-converter  tflite-profiler  tflite-quantizer

のように、展開先のbinの下に、今回使うneutron-converterがあればOKです。

 

1.2 モデルの準備、TFliteへの変換

YOLOv8はUltralytics社がパッケージをリリースしており、NXPではModel zooにてi.MX 8M Plus, i.MX 93向けの手順を用意しています。モデルの準備は、Model zooを参照するのが簡単です。

$ python -m venv venv
$ source venv/bin/activate
(venv) $ pip install ultralytics

pip install ultralyticsは環境によっては1度エラーが出るかもしれません。エラーがでても、何回か繰り返す(筆者の場合は計2回)と最後まで完了しました。完了したら、次のコマンドを実施ください。

(venv) $ yolo export model=yolov8m.pt imgsz=320 format=tflite int8

YoloはPytorchで提供されていますが、eIQ Neutronで動かすためにはTensorflow Lite(TFlite)形式にする必要があり、これはYoloが提供しているコンバータを使っていることになります。実行後、yolov8m_saved_modelディレクトリに、TFlite形式のファイルが生成されます。

$ ls yolov8m_saved_model/
assets          metadata.yaml   variables              yolov8m_float16.tflite  yolov8m_full_integer_quant.tflite  yolov8m_integer_quant.tflite
fingerprint.pb  saved_model.pb  yolo-converted.tflite  yolov8m_float32.tflite  yolov8m_int8.tflite

 

1.3 ラベルファイルの作成

このモデルはCOCOデータセットを使ってトレーニングされており、80種類の物体が認識対象になっています。Yoloのモデルが出力した結果が何なのかは、別に用意した80種類の対象物が書いてあるラベルファイルを参照する必要があります。以下にソースとなるファイルがあります。

./venv/lib/python3.12/site-packages/ultralytics/cfg/datasets/coco.yaml

(注: pythonのバージョンはお使いの環境によって変わる可能性があります)

shigenobukatagi_0-1776388033195.png

ラベルファイルは、先頭の行から対象物が1行ごとに書いてあるテキストですので、以下のようにcoco.yamlのヘッダ部分、フッタ部分を削除して、80行のテキストファイル labels_yolov8.txt を作成ください。

shigenobukatagi_1-1776388107849.png

shigenobukatagi_2-1776388231530.png

 

1.4 モデルの変換

1.1で準備したSDKのディレクトリに移行し、以下コマンドを実行することでeIQ Neutronで実行できるモデルに変換します。

$ cd yolov8m_saved_model/
$ /path/to/eiq-neutron-sdk-3.0.1/bin/neutron-converter --input yolov8m_full_integer_quant.tflite --output yolov8m_int8_neutron.tflite --target imx95

 

1.5 モデル、ラベルファイルをターゲットにコピー

パスは後ほど作成するソースコードで指定できるのでどこでも構わないですが、TFLiteの例がある場所に置くようにします。

$ scp yolov8m_int8_neutron.tflite labels_yolov8.txt root@<IP addr>:/usr/bin/tensorflow-lite-2.19.0/examples

 

2. Pythonコード

以下のコードで、カメラ入力に対してYolov8mでの認識を行い、検出された物体を緑の枠(バウンディングボックス)で囲むという処理を行います。

  1. カメラの入力セットアップ
  2. 320x160にリサイズしたイメージデータをYoloで推論、物体の検出とバウンディングボックスの座標を受け取る
  3. バウンディングボックスの座標を、ディスプレイに表示させるフレームデータに合致するように計算し直し、合成させてディスプレイ出力させる

という流れです。2ー3をwhileループでフレーム毎実施しています。

#!/usr/bin/env python3
import os
import cv2
import numpy as np
import time
import tflite_runtime.interpreter as tflite

# =========================
# 設定
# =========================
MODEL_PATH = "/usr/bin/tensorflow-lite-2.19.0/examples/yolov8m_int8_neutron.tflite"
LABEL_PATH = "/usr/bin/tensorflow-lite-2.19.0/examples/labels_yolov8.txt"  # COCO 80 クラス

CONF_TH = 0.60
IOU_TH = 0.45
MAX_DET = 50
MIN_BOX_W = 4
MIN_BOX_H = 4
GST_PIPELINE = (
    "libcamerasrc camera-name=/base/soc/bus@42000000/i2c@42540000/os08a20_mipi@36 ! "
    "video/x-raw,format=YUY2,framerate=30/1,width=3840,height=2160 ! "
    "imxvideoconvert_g2d rotation=4 ! "
    "video/x-raw,width=1280,height=720,format=BGRA ! "
    "appsink drop=true max-buffers=1"
)

os.environ["LIBCAMERA_IPA_MODULE_PATH"] = "/usr/lib/libcamera/ipa-nxp-neo-uguzzi/"
os.environ["LIBCAMERA_PIPELINES_MATCH_LIST"] = "nxp/neo,imx8-isi,uvc"
# Neutron 使用時は XNNPACK を無効化
os.environ["TFLITE_DISABLE_XNNPACK"] = "1"

DELEGATE_LIB = "/usr/lib/libneutron_delegate.so"

# =========================
# ユーティリティ
# =========================
def load_labels(path):
    with open(path, "r", encoding="utf-8") as f:
        return [l.strip() for l in f]

def bbox_iou(box, boxes):
    x1 = np.maximum(box[0], boxes[:, 0])
    y1 = np.maximum(box[1], boxes[:, 1])
    x2 = np.minimum(box[2], boxes[:, 2])
    y2 = np.minimum(box[3], boxes[:, 3])

    inter_w = np.maximum(0, x2 - x1)
    inter_h = np.maximum(0, y2 - y1)
    inter = inter_w * inter_h

    area1 = (box[2] - box[0]) * (box[3] - box[1])
    area2 = (boxes[:, 2] - boxes[:, 0]) * (boxes[:, 3] - boxes[:, 1])
    union = area1 + area2 - inter + 1e-6
    return inter / union

def nms(boxes, scores, iou_th):
    idxs = np.argsort(scores)[::-1]
    keep = []
    while len(idxs) > 0:
        i = idxs[0]
        keep.append(i)
        if len(idxs) == 1:
            break
        ious = bbox_iou(boxes[i], boxes[idxs[1:]])
        idxs = idxs[1:][ious < iou_th]
    return keep

def sigmoid(x):
    return 1.0 / (1.0 + np.exp(-x))

# =========================
# TFLite Interpreter (CPU)
# =========================
delegate = tflite.load_delegate(DELEGATE_LIB)
interpreter = tflite.Interpreter(
    model_path=MODEL_PATH,
    experimental_delegates=[delegate],
)
interpreter.allocate_tensors()

input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()

print("Input details:", input_details)
print("Output details:", output_details)

input_index = input_details[0]["index"]
input_shape = input_details[0]["shape"]  # [1, H, W, 3]
_, in_h, in_w, _ = input_shape
input_dtype = input_details[0]["dtype"]

output_index = output_details[0]["index"]
out_qparams = output_details[0]["quantization_parameters"]
out_scale = out_qparams["scales"][0] if len(out_qparams["scales"]) > 0 else 1.0
out_zero = out_qparams["zero_points"][0] if len(out_qparams["zero_points"]) > 0 else 0
out_dtype = output_details[0]["dtype"]

labels = load_labels(LABEL_PATH)

# 入力量子化パラメータ(必要な場合)
in_qparams = input_details[0]["quantization_parameters"]
in_scale = in_qparams["scales"][0] if len(in_qparams["scales"]) > 0 else 1.0
in_zero = in_qparams["zero_points"][0] if len(in_qparams["zero_points"]) > 0 else 0

# =========================
# カメラ初期化
# =========================
cap = cv2.VideoCapture(GST_PIPELINE, cv2.CAP_GSTREAMER)
if not cap.isOpened():
    raise RuntimeError("Failed to open camera")

prev_time = time.time()
fps = 0.0
frame_id = 0

print("Press 'q' to quit")

# ループの前で一度だけ確保
canvas = np.full((in_h, in_w, 3), 114, dtype=np.uint8)
input_data = np.empty((1, in_h, in_w, 3), dtype=input_dtype)

while True:
    ret, frame_bgra = cap.read()
    if not ret:
        print("Failed to read frame")
        break

    frame_id += 1

    # FPS
    now = time.time()
    dt = now - prev_time
    if dt > 0:
        fps = 1.0 / dt
    prev_time = now
    
    # BGRA -> BGR (表示用の基本フォーマット)
    frame_bgr = cv2.cvtColor(frame_bgra, cv2.COLOR_BGRA2BGR)
    h0, w0 = frame_bgr.shape[:2]

    # =========================
    # 前処理(letterbox)
    # =========================
    scale = min(in_w / w0, in_h / h0)
    nw, nh = int(w0 * scale), int(h0 * scale)

    resized = cv2.resize(frame_bgr, (nw, nh))

    canvas[:] = 114
    top = (in_h - nh) // 2
    left = (in_w - nw) // 2
    canvas[top:top + nh, left:left + nw] = resized

    img_rgb = canvas

    # 入力テンソル作成
    if input_dtype == np.uint8:
        input_data[0, ...] = img_rgb
    else:
        # int8 モデルの場合
        img_f = img_rgb.astype(np.float32) / 255.0
        input_data[0, ...] = (img_f / in_scale + in_zero).astype(np.int8)

    # =========================
    # 推論
    # =========================
    interpreter.set_tensor(input_index, input_data)

    interpreter.invoke()

    out_raw = interpreter.get_tensor(output_index)[0]  # shape: (84, 2100) 期待

    # 逆量子化
    if np.issubdtype(out_dtype, np.integer):
        out_f = (out_raw.astype(np.float32) - out_zero) * out_scale
    else:
        out_f = out_raw.astype(np.float32)

    # shape 正規化: (84, 2100) → (2100, 84)
    if out_f.ndim == 3:
        if out_f.shape[0] == 1:
            out_f = out_f[0]
    if out_f.ndim == 2 and out_f.shape[0] in (84, 85):
        out = out_f.reshape(out_f.shape[0], -1).transpose(1, 0)
    elif out_f.ndim == 2 and out_f.shape[1] in (84, 85):
        out = out_f
    else:
        out = out_f.reshape(-1, out_f.shape[-1])

    num_det, num_ch = out.shape

    boxes = []
    scores = []
    classes = []

    # =========================
    # 後処理
    # =========================
    # out: (num_det, 84) を仮定 [cx, cy, w, h, 80クラスlogits]
    if num_ch != 84:
        boxes = []
        scores = []
        classes = []
    else:
        cx = out[:, 0]
        cy = out[:, 1]
        w  = out[:, 2]
        h  = out[:, 3]

        # すべての検出に対して一括で sigmoid & argmax
        cls_logits = out[:, 4:]               # (N, 80)
        cls_probs  = 1.0 / (1.0 + np.exp(-cls_logits))  # sigmoid 全体
        cls_id     = np.argmax(cls_probs, axis=1)       # (N,)
        conf       = cls_probs[np.arange(num_det), cls_id]

        # 信頼度しきい値で一括フィルタ
        mask = conf >= CONF_TH
        if not np.any(mask):
            boxes = []
            scores = []
            classes = []
        else:
            cx = cx[mask]
            cy = cy[mask]
            w  = w[mask]
            h  = h[mask]
            conf = conf[mask]
            cls_id = cls_id[mask]

            # 0〜1 正規化座標 → 入力解像度座標
            x1 = (cx - w / 2.0) * in_w
            y1 = (cy - h / 2.0) * in_h
            x2 = (cx + w / 2.0) * in_w
            y2 = (cy + h / 2.0) * in_h

            # 元画像座標へ戻す(letterbox 補正)
            x1 = (x1 - left) / scale
            y1 = (y1 - top)  / scale
            x2 = (x2 - left) / scale
            y2 = (y2 - top)  / scale

            # 最小サイズで一括フィルタ
            bw = x2 - x1
            bh = y2 - y1
            size_mask = (bw >= MIN_BOX_W) & (bh >= MIN_BOX_H)

            if not np.any(size_mask):
                boxes = []
                scores = []
                classes = []
            else:
                x1 = x1[size_mask]
                y1 = y1[size_mask]
                x2 = x2[size_mask]
                y2 = y2[size_mask]
                conf = conf[size_mask]
                cls_id = cls_id[size_mask]

                boxes  = np.stack([x1, y1, x2, y2], axis=1).astype(np.float32)
                scores = conf.astype(np.float32)
                classes = cls_id.astype(np.int32)

    if isinstance(boxes, np.ndarray):
        has_det = boxes.shape[0] > 0
    else:
        has_det = len(boxes) > 0

    if has_det:
        if not isinstance(boxes, np.ndarray):
            boxes  = np.array(boxes,  dtype=np.float32)
        if not isinstance(scores, np.ndarray):
            scores = np.array(scores, dtype=np.float32)

        keep = nms(boxes, scores, IOU_TH)
        keep = sorted(keep, key=lambda i: scores[i], reverse=True)[:MAX_DET]

        for i in keep:
            x1, y1, x2, y2 = boxes[i]
            cls_id = int(classes[i])
            conf = scores[i]
            label = labels[cls_id] if 0 <= cls_id < len(labels) else f"id{cls_id}"

            x1 = int(max(0, min(w0 - 1, x1)))
            y1 = int(max(0, min(h0 - 1, y1)))
            x2 = int(max(0, min(w0 - 1, x2)))
            y2 = int(max(0, min(h0 - 1, y2)))

            cv2.rectangle(frame_bgr, (x1, y1), (x2, y2), (0, 255, 0), 2)
            cv2.putText(
                frame_bgr,
                f"{label}:{conf:.2f}",
                (x1, y1 - 5),
                cv2.FONT_HERSHEY_SIMPLEX,
                0.6,
                (0, 255, 0),
                2,
            )

    cv2.putText(
        frame_bgr,
        f"FPS: {fps:.1f}",
        (10, 30),
        cv2.FONT_HERSHEY_SIMPLEX,
        0.8,
        (0, 255, 255),
        2,
    )

    cv2.imshow("i.MX95 CPU (YOLOv8 via TFLite + OpenCV)", frame_bgr)
    if (cv2.waitKey(1) & 0xFF) == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

こちらをrun-yolo-npu.pyとしてFRDM-IMX95へ保存してください。

 

3. 実機動作

root@imx95-15x15-lpddr4x-frdm:~# python3 run-yolo.py

(在“我的视频”中查看)

 

おわりに

物体認識としてよく使われるYoloを、カメラのライブ画像に対して実施してみました。
カメラの入力サイズ、フォーマットをYOLOv8mの入力に合わせたり、OpenCVで扱えるフォーマットに変換したりなど、それなりに調整しなければならないことはありますが、この記事を参考にして頂ければすぐに動かすことができるかと思います。

*この記事には、AI生成コードをベースに投稿者が内容を確認した内容が含まれます。

 

=========================

本投稿の「Comment」欄にコメントをいただいても、現在返信に対応しておりません。
お手数をおかけしますが、お問い合わせの際には「NXPへの技術質問 問い合わせ方法 (日本語ブログ)」をご参照ください。
(既に弊社NXP代理店、もしくはNXPとお付き合いのある方は、直接担当者へご質問いただいてもかまいません。)

%3CLINGO-SUB%20id%3D%22lingo-sub-2352597%22%20slang%3D%22ja-JP%22%20mode%3D%22CREATE%22%3E%5BFRDM-IMX95%5D%20i.MX%2095%20%E7%9B%B8%E6%9C%BA%20%2B%20AI%20-%20YOLOv8m%20%E7%A4%BA%E4%BE%8B%EF%BC%88%E6%97%A5%E6%9C%AC%E5%8D%9A%E5%AE%A2%EF%BC%89%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2352597%22%20slang%3D%22ja-JP%22%20mode%3D%22CREATE%22%3E%3CH3%20id%3D%22toc-hId-2030993814%22%20id%3D%22toc-hId-2031202073%22%3E%3CSTRONG%3E%E4%BB%8B%E7%BB%8D%3C%2FSTRONG%3E%3C%2FH3%3E%0A%3CP%3E%E6%88%91%E4%BB%AC%E5%B0%86%E4%BD%BF%E7%94%A8%3CA%20href%3D%22https%3A%2F%2Fwww.nxp.jp%2Fdesign%2Fdesign-center%2Fdevelopment-boards-and-designs%2FFRDM-IMX95%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3EFRDM-IMX95%3C%2FA%3E%E5%BC%80%E5%8F%91%E6%9D%BF%E5%B0%86%E6%91%84%E5%83%8F%E5%A4%B4%E9%87%87%E9%9B%86%E7%9A%84%E5%9B%BE%E5%83%8F%E4%BC%A0%E8%BE%93%E5%88%B0%20AI%20%E5%8A%A0%E9%80%9F%E5%99%A8%EF%BC%88NPU%EF%BC%89%E8%BF%9B%E8%A1%8C%E7%9B%AE%E6%A0%87%E8%AF%86%E5%88%AB%E3%80%82%E6%88%91%E4%BB%AC%E5%B0%86%E4%BD%BF%E7%94%A8%E7%9A%84%E6%A8%A1%E5%9E%8B%E6%98%AF%20YOLOv8m%E3%80%82%3CBR%20%2F%3E%E8%BF%99%E6%98%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2FNXP-Tech-Blog%2FFRDM-IMX95-i-MX-95-%25E3%2582%25AB%25E3%2583%25A1%25E3%2583%25A9%25E3%2582%25A2%25E3%2583%2597%25E3%2583%25AA%25E3%2582%25B1%25E3%2583%25BC%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%25B3%25E3%2581%25AE%25E5%25B0%258E%25E5%2585%25A5-%25E6%2597%25A5%25E6%259C%25AC%25E8%25AA%259E%25E3%2583%2596%25E3%2583%25AD%25E3%2582%25B0%2Fba-p%2F2350748%22%20target%3D%22_blank%22%3E%5BFRDM-IMX95%5D%20i.MX%2095%20%E7%9B%B8%E6%9C%BA%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%AE%89%E8%A3%85%EF%BC%88%E6%97%A5%E8%AF%AD%E5%8D%9A%E5%AE%A2%EF%BC%89%3C%2FA%3E%E7%9A%84%E7%BB%AD%E7%AF%87%3CSPAN%3E%EF%BC%8C%E5%9B%A0%E6%AD%A4%3C%2FSPAN%3E%E8%AF%B7%E5%81%87%E8%AE%BE%E6%82%A8%E5%B7%B2%E7%BB%8F%E7%A1%AE%E8%AE%A4%E7%9B%B8%E6%9C%BA%E5%B7%A5%E4%BD%9C%E6%AD%A3%E5%B8%B8%E5%90%8E%E5%86%8D%E7%BB%A7%E7%BB%AD%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-olk-copy-source%3D%22MessageBody%22%3E%EF%BC%88%E9%A2%84%E8%AE%A1%E6%97%B6%E9%97%B4%EF%BC%9A%3C%2FSPAN%3E%20%3CSPAN%3E15%20%E5%88%86%E9%92%9F%EF%BC%89*%E5%81%87%E8%AE%BE%20Linux%20%E9%95%9C%E5%83%8F%E5%B7%B2%E5%86%99%E5%85%A5%20FRDM-IMX95%20%E5%B9%B6%E4%B8%94%E7%9B%B8%E6%9C%BA%E8%BF%90%E8%A1%8C%E5%B7%B2%E7%A1%AE%E8%AE%A4%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CH4%20id%3D%22toc-hId--1573412008%22%20id%3D%22toc-hId--1573203749%22%3E%3CU%3E%3CSTRONG%3E%E5%85%B3%E4%BA%8E%E4%BC%98%E6%B4%9B%3C%2FSTRONG%3E%3C%2FU%3E%3C%2FH4%3E%0A%3CP%3E%3CSTRONG%3E%E5%8F%AA%E9%9C%80%3C%2FSTRONG%3E%3CSTRONG%3E%E7%9C%8B%3C%2FSTRONG%3E%3CSTRONG%3E%E4%B8%80%E6%AC%A1%3C%2FSTRONG%3E%EF%BC%9A%E6%8D%AE%E8%AF%B4%E8%BF%99%E6%98%AF%E4%B8%80%E7%A7%8D%E9%80%9F%E5%BA%A6%E6%9E%81%E5%BF%AB%E7%9A%84%E7%AE%97%E6%B3%95%3CSTRONG%3E%EF%BC%8C%3C%2FSTRONG%3E%E5%9B%A0%E4%B8%BA%E5%AE%83%E5%8F%AA%E9%9C%80%E5%AF%B9%E6%95%B4%E5%BC%A0%E5%9B%BE%E5%83%8F%E8%BF%90%E8%A1%8C%E4%B8%80%E6%AC%A1%E5%8D%B7%E7%A7%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%EF%BC%88CNN%EF%BC%89%E5%8D%B3%E5%8F%AF%E5%AE%8C%E6%88%90%E7%89%A9%E4%BD%93%E8%AF%86%E5%88%AB%E3%80%82%E8%BF%99%E6%98%AF%E4%B8%80%E7%A7%8D%E9%9D%9E%E5%B8%B8%E6%B5%81%E8%A1%8C%E7%9A%84%E7%89%A9%E4%BD%93%E8%AF%86%E5%88%AB%E6%96%B9%E6%B3%95%E3%80%82%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CH3%20id%3D%22toc-hId--1583915112%22%20id%3D%22toc-hId--1583706853%22%3E%E7%9B%AE%E5%BD%95%3C%2FH3%3E%0A%3CUL%3E%0A%3CLI%3E%3CA%20class%3D%22smoothScroll%22%20href%3D%22%23id1%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3E1.%20eIQ%20Neutron%20%E7%9A%84%E6%A8%A1%E5%9E%8B%E8%BD%AC%E6%8D%A2%3C%2FA%3E%0A%3CUL%3E%0A%3CLI%3E%3CA%20class%3D%22smoothScroll%22%20href%3D%22%23id1-1%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3E1.1%20%E5%87%86%E5%A4%87%20SDK%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%3E%3CA%20class%3D%22smoothScroll%22%20href%3D%22%23id1-2%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3E1.2%20%E6%A8%A1%E5%9E%8B%E5%87%86%E5%A4%87%E5%92%8C%E8%BD%AC%E6%8D%A2%E4%B8%BA%20TFlite%20%E6%A0%BC%E5%BC%8F%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%3E%3CA%20class%3D%22smoothScroll%22%20href%3D%22%23id1-3%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3E1.3%20%E5%88%9B%E5%BB%BA%E6%A0%87%E7%AD%BE%E6%96%87%E4%BB%B6%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%3E%3CA%20class%3D%22smoothScroll%22%20href%3D%22%23id1-4%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3E1.4%20%E6%A8%A1%E5%9E%8B%E8%BD%AC%E6%8D%A2%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%3E%3CA%20class%3D%22smoothScroll%22%20href%3D%22%23id1-5%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3E1.5%20%E5%B0%86%E6%A8%A1%E5%9E%8B%E5%92%8C%E6%A0%87%E7%AD%BE%E6%96%87%E4%BB%B6%E5%A4%8D%E5%88%B6%E5%88%B0%E7%9B%AE%E6%A0%87%E4%BD%8D%E7%BD%AE%E3%80%82%3C%2FA%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3C%2FLI%3E%0A%3CLI%3E%3CA%20class%3D%22smoothScroll%22%20href%3D%22%23id2%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3E2.%20Python%20%E4%BB%A3%E7%A0%81%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%3E%3CA%20class%3D%22smoothScroll%22%20href%3D%22%23id3%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3E3.%20%E8%AE%BE%E5%A4%87%E5%AE%9E%E9%99%85%E8%BF%90%E8%A1%8C%E6%83%85%E5%86%B5%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%3E%3CA%20class%3D%22smoothScroll%22%20href%3D%22%23id-fin%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3E%E7%BB%BC%E4%B8%8A%E6%89%80%E8%BF%B0%3C%2FA%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CBR%20%2F%3E%0A%3CDIV%20id%3D%22id1%22%20class%3D%22pt1%22%3E%0A%3CH3%20id%3D%22toc-hId-903597721%22%20id%3D%22toc-hId-903805980%22%3E%3CSTRONG%3E1.%20eIQ%20Neutron%20%E7%9A%84%E6%A8%A1%E5%9E%8B%E8%BD%AC%E6%8D%A2%3C%2FSTRONG%3E%3C%2FH3%3E%0A%3C%2FDIV%3E%0A%3CP%3E%E6%82%A8%E9%9C%80%E8%A6%81%E5%B0%86%20TensorFlow%20Lite%20%E4%B8%AD%E6%8F%90%E4%BE%9B%E7%9A%84%E6%A8%A1%E5%9E%8B%E8%BD%AC%E6%8D%A2%E4%B8%BA%E9%80%82%E7%94%A8%E4%BA%8E%20i.MX%2095%20%E5%86%85%E7%BD%AE%20NPU%EF%BC%88%E5%8D%B3%20eIQ%20Neutron%EF%BC%89%E7%9A%84%E6%A0%BC%E5%BC%8F%E3%80%82%E6%AD%A4%E8%BD%AC%E6%8D%A2%E9%9C%80%E8%A6%81%E4%BD%BF%E7%94%A8%20NXP%20%E6%8F%90%E4%BE%9B%E7%9A%84%3CA%20href%3D%22https%3A%2F%2Fwww.nxp.jp%2Fdesign%2Fdesign-center%2Fsoftware%2Feiq-ai-development-environment%2Feiq-toolkit-for-end-to-end-model-development-and-deployment%3AEIQ-TOOLKIT%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noreferrer%22%3EeIQ%20Neutron%20SDK%3C%2FA%3E%20%E3%80%82%E6%AD%A4%E5%A4%96%EF%BC%8C%E6%82%A8%E8%BF%98%E9%9C%80%E8%A6%81%E5%B0%86%20eIQ%20Neutron%20SDK%20%E4%B8%AD%E5%8C%85%E5%90%AB%E7%9A%84%20Neutron%20%E5%9B%BA%E4%BB%B6%E3%80%81Neutron%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E5%92%8C%20TensorFlow%20Neutron%20%E5%A7%94%E6%89%98%E5%A4%8D%E5%88%B6%E5%88%B0%20FRDM-IMX95%20%E4%B8%8A%E8%BF%9B%E8%A1%8C%E8%BD%AC%E6%8D%A2%E3%80%82%3CBR%20%2F%3E%E8%AF%A6%E6%83%85%E8%AF%B7%E5%8F%82%E9%98%85%20eIQ%20Neutron%20SDK%20%E6%96%87%E6%A1%A3%E4%B8%AD%E7%9A%84%20doc%2FNeutronSDKUserGuide.md%E3%80%82%3CBR%20%2F%3E%E8%BF%99%E6%AC%A1%E6%88%91%E4%BB%AC%E5%B0%86%E4%BD%BF%E7%94%A8%20Linux%20L6.18.2_1.0.0%20%E5%92%8C%20eIQ%E3%80%82%E6%88%91%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AF%20Neutron%20SDK%20v3.0.1%E3%80%82%3C%2FP%3E%0A%3CH4%20id%3D%22toc-hId-1594159195%22%20id%3D%22toc-hId-1594367454%22%3E%26nbsp%3B%3C%2FH4%3E%0A%3CDIV%20id%3D%22id1-1%22%20class%3D%22pt1%22%3E%0A%3CH4%20id%3D%22toc-hId--213295268%22%20id%3D%22toc-hId--213087009%22%3E%3CU%3E%3CSTRONG%3E1.1%20%E5%87%86%E5%A4%87%20SDK%3C%2FSTRONG%3E%3C%2FU%3E%3C%2FH4%3E%0A%3C%2FDIV%3E%0A%3CP%3E%E9%A6%96%E5%85%88%EF%BC%8C%E4%B8%8B%E8%BD%BD%3CA%20href%3D%22https%3A%2F%2Fwww.nxp.jp%2Fdesign%2Fdesign-center%2Fsoftware%2Feiq-ai-development-environment%2Feiq-toolkit-for-end-to-end-model-development-and-deployment%3AEIQ-TOOLKIT%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3EeIQ%20Neutron%20SDK%3C%2FA%3E%20%E3%80%82%E5%AE%83%E6%9C%89%E4%B8%A4%E4%B8%AA%E7%89%88%E6%9C%AC%EF%BC%9AWindows%20%E5%92%8C%20Linux%E3%80%82%E6%88%91%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AF%20WSL2%20%E4%B8%8A%E7%9A%84%20Linux%20%E7%89%88%E6%9C%AC%E8%BF%9B%E8%A1%8C%E6%B5%8B%E8%AF%95%E3%80%82%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%24%20mkdir%20eiq-neutron-sdk-3.0.1%0A%24%20cd%20eiq-neutron-sdk-3.0.1%0A%24%20unzip%20%2Fpath%2Fto%2Feiq-neutron-sdk-3.0.1.zip%0A%24%20ls%20bin%2F%0Aneutron-converter%20%20tflite-profiler%20%20tflite-quantizer%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%E5%A6%82%E4%B8%8A%E6%89%80%E7%A4%BA%EF%BC%8C%E5%A6%82%E6%9E%9C%E6%88%91%E4%BB%AC%E4%BD%BF%E7%94%A8%E7%9A%84%E4%B8%AD%E5%AD%90%E8%BD%AC%E6%8D%A2%E5%99%A8%E4%BD%8D%E4%BA%8E%E7%9B%AE%E6%A0%87%E6%96%87%E4%BB%B6%E5%A4%B9%E7%9A%84%20bin%20%E7%9B%AE%E5%BD%95%E4%B8%8B%EF%BC%8C%E4%B9%9F%E6%98%AF%E5%8F%AF%E4%BB%A5%E7%9A%84%E3%80%82%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CDIV%20id%3D%22id1-2%22%20class%3D%22pt1%22%3E%0A%3CH4%20id%3D%22toc-hId--2020749731%22%20id%3D%22toc-hId--2020541472%22%3E%3CU%3E%3CSTRONG%3E1.2%20%E6%A8%A1%E5%9E%8B%E5%87%86%E5%A4%87%E5%92%8C%E8%BD%AC%E6%8D%A2%E4%B8%BA%20TFlite%20%E6%A0%BC%E5%BC%8F%3C%2FSTRONG%3E%3C%2FU%3E%3C%2FH4%3E%0A%3C%2FDIV%3E%0A%3CP%3EYOLOv8%20%E6%98%AF%20Ultralytics%20%E5%85%AC%E5%8F%B8%E5%8F%91%E5%B8%83%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85%EF%BC%8CNXP%20%E5%9C%A8%20Model%20Zoo%20%E4%B8%AD%E6%8F%90%E4%BE%9B%E4%BA%86%20i.MX%208M%20Plus%20%E5%92%8C%20i.MX%2093%20%E7%9A%84%E7%9B%B8%E5%85%B3%E8%AF%B4%E6%98%8E%E3%80%82%E5%8F%82%E8%80%83%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FNXP%2Feiq-model-zoo%2Ftree%2Fmain%2Ftasks%2Fvision%2Fobject-detection%2Fyolov8%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3EModel%20Zoo%3C%2FA%3E%E5%8F%AF%E4%BB%A5%E6%9C%80%E8%BD%BB%E6%9D%BE%E5%9C%B0%E5%87%86%E5%A4%87%E6%A8%A1%E5%9E%8B%E3%80%82%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%24%20python%20-m%20venv%20venv%0A%24%20source%20venv%2Fbin%2Factivate%0A(venv)%20%24%20pip%20install%20ultralytics%0A%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%E6%A0%B9%E6%8D%AE%E6%82%A8%E7%9A%84%E7%8E%AF%E5%A2%83%EF%BC%8C%60pip%20install%20ultralytics%60%20%E5%91%BD%E4%BB%A4%E5%8F%AF%E8%83%BD%E4%BC%9A%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E9%94%99%E8%AF%AF%E3%80%82%E5%8D%B3%E4%BD%BF%E9%81%87%E5%88%B0%E9%94%99%E8%AF%AF%EF%BC%8C%E9%87%8D%E5%A4%8D%E6%AD%A4%E8%BF%87%E7%A8%8B%E5%87%A0%E6%AC%A1%EF%BC%88%E6%88%91%E8%BF%99%E9%87%8C%E9%87%8D%E5%A4%8D%E4%BA%86%E4%B8%A4%E6%AC%A1%EF%BC%89%E5%BA%94%E8%AF%A5%E4%B9%9F%E8%83%BD%E5%AE%8C%E6%88%90%E3%80%82%E5%AE%8C%E6%88%90%E5%90%8E%EF%BC%8C%E6%89%A7%E8%A1%8C%E4%BB%A5%E4%B8%8B%E5%91%BD%E4%BB%A4%E3%80%82%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E(venv)%20%24%20yolo%20export%20model%3Dyolov8m.pt%20imgsz%3D320%20format%3Dtflite%20int8%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3EYOLO%20%E4%BD%BF%E7%94%A8%E4%BA%86%20PyTorch%EF%BC%8C%E4%BD%86%E8%A6%81%E5%9C%A8%20eIQ%20Neutron%20%E4%B8%8A%E8%BF%90%E8%A1%8C%E5%AE%83%EF%BC%8C%E9%9C%80%E8%A6%81%E5%B0%86%E5%85%B6%E8%BD%AC%E6%8D%A2%E4%B8%BA%20Tensorflow%20Lite%20(TFlite)%20%E6%A0%BC%E5%BC%8F%EF%BC%8C%E8%BF%99%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%20YOLO%20%E6%8F%90%E4%BE%9B%E7%9A%84%E8%BD%AC%E6%8D%A2%E5%99%A8%E5%AE%8C%E6%88%90%E3%80%82%E6%89%A7%E8%A1%8C%E5%90%8E%EF%BC%8C%E5%B0%86%E5%9C%A8%20yolov8m_saved_model%20%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%94%9F%E6%88%90%E4%B8%80%E4%B8%AA%20TFlite%20%E6%96%87%E4%BB%B6%E3%80%82%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%24%20ls%20yolov8m_saved_model%2F%0Aassets%20%20%20%20%20%20%20%20%20%20metadata.yaml%20%20%20variables%20%20%20%20%20%20%20%20%20%20%20%20%20%20yolov8m_float16.tflite%20%20yolov8m_full_integer_quant.tflite%20%20yolov8m_integer_quant.tflite%0Afingerprint.pb%20%20saved_model.pb%20%20yolo-converted.tflite%20%20yolov8m_float32.tflite%20%20yolov8m_int8.tflite%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CBR%20%2F%3E%0A%3CDIV%20id%3D%22id1-3%22%20class%3D%22pt1%22%3E%0A%3CH4%20id%3D%22toc-hId-466763102%22%20id%3D%22toc-hId-466971361%22%3E%3CU%3E%3CSTRONG%3E1.3%20%E5%88%9B%E5%BB%BA%E6%A0%87%E7%AD%BE%E6%96%87%E4%BB%B6%3C%2FSTRONG%3E%3C%2FU%3E%3C%2FH4%3E%0A%3C%2FDIV%3E%0A%3CP%3E%E8%AF%A5%E6%A8%A1%E5%9E%8B%E4%BD%BF%E7%94%A8%20COCO%20%E6%95%B0%E6%8D%AE%E9%9B%86%E8%BF%9B%E8%A1%8C%E8%AE%AD%E7%BB%83%EF%BC%8C%E8%83%BD%E5%A4%9F%E8%AF%86%E5%88%AB%2080%20%E7%A7%8D%E4%B8%8D%E5%90%8C%E7%9A%84%E7%89%A9%E4%BD%93%E3%80%82%E8%A6%81%E4%BA%86%E8%A7%A3%20YOLO%20%E6%A8%A1%E5%9E%8B%E7%9A%84%E8%BE%93%E5%87%BA%E7%BB%93%E6%9E%9C%EF%BC%8C%E6%82%A8%E9%9C%80%E8%A6%81%E5%8F%82%E8%80%83%E4%B8%80%E4%B8%AA%E5%8D%95%E7%8B%AC%E7%9A%84%E6%A0%87%E7%AD%BE%E6%96%87%E4%BB%B6%EF%BC%8C%E5%85%B6%E4%B8%AD%E5%8C%85%E5%90%AB%E4%BA%86%E8%BF%99%2080%20%E4%B8%AA%E7%89%A9%E4%BD%93%E7%9A%84%E5%90%8D%E7%A7%B0%E3%80%82%E6%BA%90%E6%96%87%E4%BB%B6%E5%8F%AF%E5%9C%A8%E4%B8%8B%E6%96%B9%E6%89%BE%E5%88%B0%E3%80%82%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E.%2Fvenv%2Flib%2Fpython3.12%2Fsite-packages%2Fultralytics%2Fcfg%2Fdatasets%2Fcoco.yaml%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%EF%BC%88%E6%B3%A8%EF%BC%9APython%20%E7%89%88%E6%9C%AC%E5%8F%AF%E8%83%BD%E5%9B%A0%E6%82%A8%E7%9A%84%E7%8E%AF%E5%A2%83%E8%80%8C%E5%BC%82%E3%80%82%EF%BC%89%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22shigenobukatagi_0-1776388033195.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22shigenobukatagi_0-1776388033195.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F382684i8777048E0EE2EA5D%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22shigenobukatagi_0-1776388033195.png%22%20alt%3D%22shigenobukatagi_0-1776388033195.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%E6%A0%87%E7%AD%BE%E6%96%87%E4%BB%B6%E6%98%AF%E4%B8%80%E4%B8%AA%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%EF%BC%8C%E5%85%B6%E4%B8%AD%E6%AF%8F%E4%B8%AA%E5%AF%B9%E8%B1%A1%E9%83%BD%E5%88%97%E5%9C%A8%E5%8D%95%E7%8B%AC%E7%9A%84%E4%B8%80%E8%A1%8C%E4%B8%8A%EF%BC%8C%E4%BB%8E%E7%AC%AC%E4%B8%80%E8%A1%8C%E5%BC%80%E5%A7%8B%E3%80%82%E5%9B%A0%E6%AD%A4%EF%BC%8C%E8%AF%B7%E5%88%A0%E9%99%A4%20coco.yaml%20%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E9%A1%B5%E7%9C%89%E5%92%8C%E9%A1%B5%E8%84%9A%E9%83%A8%E5%88%86%EF%BC%88%E5%A6%82%E4%B8%8B%E6%89%80%E7%A4%BA%EF%BC%89%EF%BC%8C%E4%BB%A5%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%90%8D%E4%B8%BA%20labels_yolov8.txt%20%E7%9A%84%2080%20%E8%A1%8C%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22shigenobukatagi_1-1776388107849.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22shigenobukatagi_1-1776388107849.png%22%20style%3D%22width%3A%20314px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F382685iD2BB72E8D6383D5A%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22shigenobukatagi_1-1776388107849.png%22%20alt%3D%22shigenobukatagi_1-1776388107849.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22shigenobukatagi_2-1776388231530.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22shigenobukatagi_2-1776388231530.png%22%20style%3D%22width%3A%20334px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F382686iED68991C479A5D53%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22shigenobukatagi_2-1776388231530.png%22%20alt%3D%22shigenobukatagi_2-1776388231530.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CH4%20id%3D%22toc-hId--1340691361%22%20id%3D%22toc-hId--1340483102%22%3E%26nbsp%3B%3C%2FH4%3E%0A%3CDIV%20id%3D%22id1-4%22%20class%3D%22pt1%22%3E%0A%3CH4%20id%3D%22toc-hId-1146821472%22%20id%3D%22toc-hId-1147029731%22%3E%3CU%3E%3CSTRONG%3E1.4%20%E6%A8%A1%E5%9E%8B%E8%BD%AC%E6%8D%A2%3C%2FSTRONG%3E%3C%2FU%3E%3C%2FH4%3E%0A%3C%2FDIV%3E%0A%3CP%3E%E5%AF%BC%E8%88%AA%E5%88%B0%E6%AD%A5%E9%AA%A4%201.1%20%E4%B8%AD%E5%87%86%E5%A4%87%E7%9A%84%20SDK%20%E7%9B%AE%E5%BD%95%EF%BC%8C%E5%B9%B6%E6%89%A7%E8%A1%8C%E4%BB%A5%E4%B8%8B%E5%91%BD%E4%BB%A4%E5%B0%86%E6%A8%A1%E5%9E%8B%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%8F%AF%E5%9C%A8%20eIQ%20Neutron%20%E4%B8%8A%E8%BF%90%E8%A1%8C%E7%9A%84%E6%A8%A1%E5%9E%8B%E3%80%82%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%24%20cd%20yolov8m_saved_model%2F%0A%24%20%2Fpath%2Fto%2Feiq-neutron-sdk-3.0.1%2Fbin%2Fneutron-converter%20--input%20yolov8m_full_integer_quant.tflite%20--output%20yolov8m_int8_neutron.tflite%20--target%20imx95%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CBR%20%2F%3E%0A%3CDIV%20id%3D%22id1-5%22%20class%3D%22pt1%22%3E%0A%3CH4%20id%3D%22toc-hId-570237608%22%20id%3D%22toc-hId-570445867%22%3E1.5%3CU%3E%3CSTRONG%3E%E5%B0%86%3C%2FSTRONG%3E%3C%2FU%3E%3CU%3E%3CSTRONG%3E%E6%A8%A1%E5%9E%8B%E5%92%8C%E6%A0%87%E7%AD%BE%E6%96%87%E4%BB%B6%3C%2FSTRONG%3E%3C%2FU%3E%E5%A4%8D%E5%88%B6%E5%88%B0%E7%9B%AE%E6%A0%87%E4%BD%8D%E7%BD%AE%E3%80%82%3C%2FH4%3E%0A%3C%2FDIV%3E%0A%3CP%3E%E8%B7%AF%E5%BE%84%E5%8F%AF%E4%BB%A5%E6%94%BE%E5%9C%A8%E4%BB%BB%E4%BD%95%E4%BD%8D%E7%BD%AE%EF%BC%8C%E7%A8%8D%E5%90%8E%E4%BC%9A%E5%9C%A8%E6%BA%90%E4%BB%A3%E7%A0%81%E4%B8%AD%E6%8C%87%E5%AE%9A%EF%BC%8C%E4%BD%86%E8%AF%B7%E5%B0%86%E5%85%B6%E6%94%BE%E5%9C%A8%E4%B8%8E%20TFLite%20%E7%A4%BA%E4%BE%8B%E7%9B%B8%E5%90%8C%E7%9A%84%E4%BD%8D%E7%BD%AE%E3%80%82%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%24%20scp%20yolov8m_int8_neutron.tflite%20labels_yolov8.txt%20root%40%3CIP%20addr%3D%22%22%3E%3A%2Fusr%2Fbin%2Ftensorflow-lite-2.19.0%2Fexamples%3C%2FIP%3E%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CBR%20%2F%3E%0A%3CDIV%20id%3D%22id2%22%20class%3D%22pt1%22%3E%0A%3CH3%20id%3D%22toc-hId--1366299574%22%20id%3D%22toc-hId--1366091315%22%3E%3CSTRONG%3E2.%20Python%20%E4%BB%A3%E7%A0%81%3C%2FSTRONG%3E%3C%2FH3%3E%0A%3C%2FDIV%3E%0A%3CP%3E%E4%BB%A5%E4%B8%8B%E4%BB%A3%E7%A0%81%E4%BD%BF%E7%94%A8%20Yolov8m%20%E5%AF%B9%E6%91%84%E5%83%8F%E5%A4%B4%E8%BE%93%E5%85%A5%E8%BF%9B%E8%A1%8C%E8%AF%86%E5%88%AB%EF%BC%8C%E5%B9%B6%E7%94%A8%E7%BB%BF%E8%89%B2%E8%BE%B9%E7%95%8C%E6%A1%86%E6%A1%86%E5%87%BA%E6%A3%80%E6%B5%8B%E5%88%B0%E7%9A%84%E5%AF%B9%E8%B1%A1%E3%80%82%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3E%E6%91%84%E5%83%8F%E5%A4%B4%E8%BE%93%E5%85%A5%E8%AE%BE%E7%BD%AE%3C%2FLI%3E%0A%3CLI%3E%E4%BD%BF%E7%94%A8%20YOLO%20%E5%AF%B9%E8%B0%83%E6%95%B4%E5%A4%A7%E5%B0%8F%E4%B8%BA%20320x160%20%E7%9A%84%E5%9B%BE%E5%83%8F%E6%95%B0%E6%8D%AE%E8%BF%9B%E8%A1%8C%E6%8E%A8%E6%96%AD%EF%BC%8C%E5%B9%B6%E8%8E%B7%E5%BE%97%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B%E5%92%8C%E8%BE%B9%E7%95%8C%E6%A1%86%E5%9D%90%E6%A0%87%E3%80%82%3C%2FLI%3E%0A%3CLI%3E%E9%87%8D%E6%96%B0%E8%AE%A1%E7%AE%97%E8%BE%B9%E7%95%8C%E6%A1%86%E5%9D%90%E6%A0%87%E4%BB%A5%E5%8C%B9%E9%85%8D%E8%A6%81%E5%9C%A8%E5%B1%8F%E5%B9%95%E4%B8%8A%E6%98%BE%E7%A4%BA%E7%9A%84%E5%B8%A7%E6%95%B0%E6%8D%AE%EF%BC%8C%E7%84%B6%E5%90%8E%E5%B0%86%E5%AE%83%E4%BB%AC%E7%BB%84%E5%90%88%E8%B5%B7%E6%9D%A5%E5%B9%B6%E8%BE%93%E5%87%BA%E5%88%B0%E6%98%BE%E7%A4%BA%E5%99%A8%E3%80%82%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%E8%BF%99%E5%B0%B1%E6%98%AF%E5%A4%A7%E8%87%B4%E6%B5%81%E7%A8%8B%E3%80%82%E6%AD%A5%E9%AA%A4%202%20%E5%92%8C%203%20%E4%BD%BF%E7%94%A8%20while%20%E5%BE%AA%E7%8E%AF%E9%80%90%E5%B8%A7%E6%89%A7%E8%A1%8C%E3%80%82%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%23!%2Fusr%2Fbin%2Fenv%20python3%0Aimport%20os%0Aimport%20cv2%0Aimport%20numpy%20as%20np%0Aimport%20time%0Aimport%20tflite_runtime.interpreter%20as%20tflite%0A%0A%23%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%23%20%E8%A8%AD%E5%AE%9A%0A%23%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0AMODEL_PATH%20%3D%20%22%2Fusr%2Fbin%2Ftensorflow-lite-2.19.0%2Fexamples%2Fyolov8m_int8_neutron.tflite%22%0ALABEL_PATH%20%3D%20%22%2Fusr%2Fbin%2Ftensorflow-lite-2.19.0%2Fexamples%2Flabels_yolov8.txt%22%20%20%23%20COCO%2080%20%E3%82%AF%E3%83%A9%E3%82%B9%0A%0ACONF_TH%20%3D%200.60%0AIOU_TH%20%3D%200.45%0AMAX_DET%20%3D%2050%0AMIN_BOX_W%20%3D%204%0AMIN_BOX_H%20%3D%204%0AGST_PIPELINE%20%3D%20(%0A%20%20%20%20%22libcamerasrc%20camera-name%3D%2Fbase%2Fsoc%2Fbus%4042000000%2Fi2c%4042540000%2Fos08a20_mipi%4036%20!%20%22%0A%20%20%20%20%22video%2Fx-raw%2Cformat%3DYUY2%2Cframerate%3D30%2F1%2Cwidth%3D3840%2Cheight%3D2160%20!%20%22%0A%20%20%20%20%22imxvideoconvert_g2d%20rotation%3D4%20!%20%22%0A%20%20%20%20%22video%2Fx-raw%2Cwidth%3D1280%2Cheight%3D720%2Cformat%3DBGRA%20!%20%22%0A%20%20%20%20%22appsink%20drop%3Dtrue%20max-buffers%3D1%22%0A)%0A%0Aos.environ%5B%22LIBCAMERA_IPA_MODULE_PATH%22%5D%20%3D%20%22%2Fusr%2Flib%2Flibcamera%2Fipa-nxp-neo-uguzzi%2F%22%0Aos.environ%5B%22LIBCAMERA_PIPELINES_MATCH_LIST%22%5D%20%3D%20%22nxp%2Fneo%2Cimx8-isi%2Cuvc%22%0A%23%20Neutron%20%E4%BD%BF%E7%94%A8%E6%99%82%E3%81%AF%20XNNPACK%20%E3%82%92%E7%84%A1%E5%8A%B9%E5%8C%96%0Aos.environ%5B%22TFLITE_DISABLE_XNNPACK%22%5D%20%3D%20%221%22%0A%0ADELEGATE_LIB%20%3D%20%22%2Fusr%2Flib%2Flibneutron_delegate.so%22%0A%0A%23%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%23%20%E3%83%A6%E3%83%BC%E3%83%86%E3%82%A3%E3%83%AA%E3%83%86%E3%82%A3%0A%23%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0Adef%20load_labels(path)%3A%0A%20%20%20%20with%20open(path%2C%20%22r%22%2C%20encoding%3D%22utf-8%22)%20as%20f%3A%0A%20%20%20%20%20%20%20%20return%20%5Bl.strip()%20for%20l%20in%20f%5D%0A%0Adef%20bbox_iou(box%2C%20boxes)%3A%0A%20%20%20%20x1%20%3D%20np.maximum(box%5B0%5D%2C%20boxes%5B%3A%2C%200%5D)%0A%20%20%20%20y1%20%3D%20np.maximum(box%5B1%5D%2C%20boxes%5B%3A%2C%201%5D)%0A%20%20%20%20x2%20%3D%20np.minimum(box%5B2%5D%2C%20boxes%5B%3A%2C%202%5D)%0A%20%20%20%20y2%20%3D%20np.minimum(box%5B3%5D%2C%20boxes%5B%3A%2C%203%5D)%0A%0A%20%20%20%20inter_w%20%3D%20np.maximum(0%2C%20x2%20-%20x1)%0A%20%20%20%20inter_h%20%3D%20np.maximum(0%2C%20y2%20-%20y1)%0A%20%20%20%20inter%20%3D%20inter_w%20*%20inter_h%0A%0A%20%20%20%20area1%20%3D%20(box%5B2%5D%20-%20box%5B0%5D)%20*%20(box%5B3%5D%20-%20box%5B1%5D)%0A%20%20%20%20area2%20%3D%20(boxes%5B%3A%2C%202%5D%20-%20boxes%5B%3A%2C%200%5D)%20*%20(boxes%5B%3A%2C%203%5D%20-%20boxes%5B%3A%2C%201%5D)%0A%20%20%20%20union%20%3D%20area1%20%2B%20area2%20-%20inter%20%2B%201e-6%0A%20%20%20%20return%20inter%20%2F%20union%0A%0Adef%20nms(boxes%2C%20scores%2C%20iou_th)%3A%0A%20%20%20%20idxs%20%3D%20np.argsort(scores)%5B%3A%3A-1%5D%0A%20%20%20%20keep%20%3D%20%5B%5D%0A%20%20%20%20while%20len(idxs)%20%26gt%3B%200%3A%0A%20%20%20%20%20%20%20%20i%20%3D%20idxs%5B0%5D%0A%20%20%20%20%20%20%20%20keep.append(i)%0A%20%20%20%20%20%20%20%20if%20len(idxs)%20%3D%3D%201%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20break%0A%20%20%20%20%20%20%20%20ious%20%3D%20bbox_iou(boxes%5Bi%5D%2C%20boxes%5Bidxs%5B1%3A%5D%5D)%0A%20%20%20%20%20%20%20%20idxs%20%3D%20idxs%5B1%3A%5D%5Bious%20%26lt%3B%20iou_th%5D%0A%20%20%20%20return%20keep%0A%0Adef%20sigmoid(x)%3A%0A%20%20%20%20return%201.0%20%2F%20(1.0%20%2B%20np.exp(-x))%0A%0A%23%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%23%20TFLite%20Interpreter%20(CPU)%0A%23%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0Adelegate%20%3D%20tflite.load_delegate(DELEGATE_LIB)%0Ainterpreter%20%3D%20tflite.Interpreter(%0A%20%20%20%20model_path%3DMODEL_PATH%2C%0A%20%20%20%20experimental_delegates%3D%5Bdelegate%5D%2C%0A)%0Ainterpreter.allocate_tensors()%0A%0Ainput_details%20%3D%20interpreter.get_input_details()%0Aoutput_details%20%3D%20interpreter.get_output_details()%0A%0Aprint(%22Input%20details%3A%22%2C%20input_details)%0Aprint(%22Output%20details%3A%22%2C%20output_details)%0A%0Ainput_index%20%3D%20input_details%5B0%5D%5B%22index%22%5D%0Ainput_shape%20%3D%20input_details%5B0%5D%5B%22shape%22%5D%20%20%23%20%5B1%2C%20H%2C%20W%2C%203%5D%0A_%2C%20in_h%2C%20in_w%2C%20_%20%3D%20input_shape%0Ainput_dtype%20%3D%20input_details%5B0%5D%5B%22dtype%22%5D%0A%0Aoutput_index%20%3D%20output_details%5B0%5D%5B%22index%22%5D%0Aout_qparams%20%3D%20output_details%5B0%5D%5B%22quantization_parameters%22%5D%0Aout_scale%20%3D%20out_qparams%5B%22scales%22%5D%5B0%5D%20if%20len(out_qparams%5B%22scales%22%5D)%20%26gt%3B%200%20else%201.0%0Aout_zero%20%3D%20out_qparams%5B%22zero_points%22%5D%5B0%5D%20if%20len(out_qparams%5B%22zero_points%22%5D)%20%26gt%3B%200%20else%200%0Aout_dtype%20%3D%20output_details%5B0%5D%5B%22dtype%22%5D%0A%0Alabels%20%3D%20load_labels(LABEL_PATH)%0A%0A%23%20%E5%85%A5%E5%8A%9B%E9%87%8F%E5%AD%90%E5%8C%96%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%EF%BC%88%E5%BF%85%E8%A6%81%E3%81%AA%E5%A0%B4%E5%90%88%EF%BC%89%0Ain_qparams%20%3D%20input_details%5B0%5D%5B%22quantization_parameters%22%5D%0Ain_scale%20%3D%20in_qparams%5B%22scales%22%5D%5B0%5D%20if%20len(in_qparams%5B%22scales%22%5D)%20%26gt%3B%200%20else%201.0%0Ain_zero%20%3D%20in_qparams%5B%22zero_points%22%5D%5B0%5D%20if%20len(in_qparams%5B%22zero_points%22%5D)%20%26gt%3B%200%20else%200%0A%0A%23%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%23%20%E3%82%AB%E3%83%A1%E3%83%A9%E5%88%9D%E6%9C%9F%E5%8C%96%0A%23%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0Acap%20%3D%20cv2.VideoCapture(GST_PIPELINE%2C%20cv2.CAP_GSTREAMER)%0Aif%20not%20cap.isOpened()%3A%0A%20%20%20%20raise%20RuntimeError(%22Failed%20to%20open%20camera%22)%0A%0Aprev_time%20%3D%20time.time()%0Afps%20%3D%200.0%0Aframe_id%20%3D%200%0A%0Aprint(%22Press%20'q'%20to%20quit%22)%0A%0A%23%20%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AE%E5%89%8D%E3%81%A7%E4%B8%80%E5%BA%A6%E3%81%A0%E3%81%91%E7%A2%BA%E4%BF%9D%0Acanvas%20%3D%20np.full((in_h%2C%20in_w%2C%203)%2C%20114%2C%20dtype%3Dnp.uint8)%0Ainput_data%20%3D%20np.empty((1%2C%20in_h%2C%20in_w%2C%203)%2C%20dtype%3Dinput_dtype)%0A%0Awhile%20True%3A%0A%20%20%20%20ret%2C%20frame_bgra%20%3D%20cap.read()%0A%20%20%20%20if%20not%20ret%3A%0A%20%20%20%20%20%20%20%20print(%22Failed%20to%20read%20frame%22)%0A%20%20%20%20%20%20%20%20break%0A%0A%20%20%20%20frame_id%20%2B%3D%201%0A%0A%20%20%20%20%23%20FPS%0A%20%20%20%20now%20%3D%20time.time()%0A%20%20%20%20dt%20%3D%20now%20-%20prev_time%0A%20%20%20%20if%20dt%20%26gt%3B%200%3A%0A%20%20%20%20%20%20%20%20fps%20%3D%201.0%20%2F%20dt%0A%20%20%20%20prev_time%20%3D%20now%0A%20%20%20%20%0A%20%20%20%20%23%20BGRA%20-%26gt%3B%20BGR%20%EF%BC%88%E8%A1%A8%E7%A4%BA%E7%94%A8%E3%81%AE%E5%9F%BA%E6%9C%AC%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%EF%BC%89%0A%20%20%20%20frame_bgr%20%3D%20cv2.cvtColor(frame_bgra%2C%20cv2.COLOR_BGRA2BGR)%0A%20%20%20%20h0%2C%20w0%20%3D%20frame_bgr.shape%5B%3A2%5D%0A%0A%20%20%20%20%23%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%20%20%20%20%23%20%E5%89%8D%E5%87%A6%E7%90%86%EF%BC%88letterbox%EF%BC%89%0A%20%20%20%20%23%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%20%20%20%20scale%20%3D%20min(in_w%20%2F%20w0%2C%20in_h%20%2F%20h0)%0A%20%20%20%20nw%2C%20nh%20%3D%20int(w0%20*%20scale)%2C%20int(h0%20*%20scale)%0A%0A%20%20%20%20resized%20%3D%20cv2.resize(frame_bgr%2C%20(nw%2C%20nh))%0A%0A%20%20%20%20canvas%5B%3A%5D%20%3D%20114%0A%20%20%20%20top%20%3D%20(in_h%20-%20nh)%20%2F%2F%202%0A%20%20%20%20left%20%3D%20(in_w%20-%20nw)%20%2F%2F%202%0A%20%20%20%20canvas%5Btop%3Atop%20%2B%20nh%2C%20left%3Aleft%20%2B%20nw%5D%20%3D%20resized%0A%0A%20%20%20%20img_rgb%20%3D%20canvas%0A%0A%20%20%20%20%23%20%E5%85%A5%E5%8A%9B%E3%83%86%E3%83%B3%E3%82%BD%E3%83%AB%E4%BD%9C%E6%88%90%0A%20%20%20%20if%20input_dtype%20%3D%3D%20np.uint8%3A%0A%20%20%20%20%20%20%20%20input_data%5B0%2C%20...%5D%20%3D%20img_rgb%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%23%20int8%20%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E5%A0%B4%E5%90%88%0A%20%20%20%20%20%20%20%20img_f%20%3D%20img_rgb.astype(np.float32)%20%2F%20255.0%0A%20%20%20%20%20%20%20%20input_data%5B0%2C%20...%5D%20%3D%20(img_f%20%2F%20in_scale%20%2B%20in_zero).astype(np.int8)%0A%0A%20%20%20%20%23%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%20%20%20%20%23%20%E6%8E%A8%E8%AB%96%0A%20%20%20%20%23%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%20%20%20%20interpreter.set_tensor(input_index%2C%20input_data)%0A%0A%20%20%20%20interpreter.invoke()%0A%0A%20%20%20%20out_raw%20%3D%20interpreter.get_tensor(output_index)%5B0%5D%20%20%23%20shape%3A%20(84%2C%202100)%20%E6%9C%9F%E5%BE%85%0A%0A%20%20%20%20%23%20%E9%80%86%E9%87%8F%E5%AD%90%E5%8C%96%0A%20%20%20%20if%20np.issubdtype(out_dtype%2C%20np.integer)%3A%0A%20%20%20%20%20%20%20%20out_f%20%3D%20(out_raw.astype(np.float32)%20-%20out_zero)%20*%20out_scale%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20out_f%20%3D%20out_raw.astype(np.float32)%0A%0A%20%20%20%20%23%20shape%20%E6%AD%A3%E8%A6%8F%E5%8C%96%3A%20(84%2C%202100)%20%E2%86%92%20(2100%2C%2084)%0A%20%20%20%20if%20out_f.ndim%20%3D%3D%203%3A%0A%20%20%20%20%20%20%20%20if%20out_f.shape%5B0%5D%20%3D%3D%201%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20out_f%20%3D%20out_f%5B0%5D%0A%20%20%20%20if%20out_f.ndim%20%3D%3D%202%20and%20out_f.shape%5B0%5D%20in%20(84%2C%2085)%3A%0A%20%20%20%20%20%20%20%20out%20%3D%20out_f.reshape(out_f.shape%5B0%5D%2C%20-1).transpose(1%2C%200)%0A%20%20%20%20elif%20out_f.ndim%20%3D%3D%202%20and%20out_f.shape%5B1%5D%20in%20(84%2C%2085)%3A%0A%20%20%20%20%20%20%20%20out%20%3D%20out_f%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20out%20%3D%20out_f.reshape(-1%2C%20out_f.shape%5B-1%5D)%0A%0A%20%20%20%20num_det%2C%20num_ch%20%3D%20out.shape%0A%0A%20%20%20%20boxes%20%3D%20%5B%5D%0A%20%20%20%20scores%20%3D%20%5B%5D%0A%20%20%20%20classes%20%3D%20%5B%5D%0A%0A%20%20%20%20%23%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%20%20%20%20%23%20%E5%BE%8C%E5%87%A6%E7%90%86%0A%20%20%20%20%23%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%20%20%20%20%23%20out%3A%20(num_det%2C%2084)%20%E3%82%92%E4%BB%AE%E5%AE%9A%20%5Bcx%2C%20cy%2C%20w%2C%20h%2C%2080%E3%82%AF%E3%83%A9%E3%82%B9logits%5D%0A%20%20%20%20if%20num_ch%20!%3D%2084%3A%0A%20%20%20%20%20%20%20%20boxes%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20scores%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20classes%20%3D%20%5B%5D%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20cx%20%3D%20out%5B%3A%2C%200%5D%0A%20%20%20%20%20%20%20%20cy%20%3D%20out%5B%3A%2C%201%5D%0A%20%20%20%20%20%20%20%20w%20%20%3D%20out%5B%3A%2C%202%5D%0A%20%20%20%20%20%20%20%20h%20%20%3D%20out%5B%3A%2C%203%5D%0A%0A%20%20%20%20%20%20%20%20%23%20%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E6%A4%9C%E5%87%BA%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E4%B8%80%E6%8B%AC%E3%81%A7%20sigmoid%20%26amp%3B%20argmax%0A%20%20%20%20%20%20%20%20cls_logits%20%3D%20out%5B%3A%2C%204%3A%5D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20(N%2C%2080)%0A%20%20%20%20%20%20%20%20cls_probs%20%20%3D%201.0%20%2F%20(1.0%20%2B%20np.exp(-cls_logits))%20%20%23%20sigmoid%20%E5%85%A8%E4%BD%93%0A%20%20%20%20%20%20%20%20cls_id%20%20%20%20%20%3D%20np.argmax(cls_probs%2C%20axis%3D1)%20%20%20%20%20%20%20%23%20(N%2C)%0A%20%20%20%20%20%20%20%20conf%20%20%20%20%20%20%20%3D%20cls_probs%5Bnp.arange(num_det)%2C%20cls_id%5D%0A%0A%20%20%20%20%20%20%20%20%23%20%E4%BF%A1%E9%A0%BC%E5%BA%A6%E3%81%97%E3%81%8D%E3%81%84%E5%80%A4%E3%81%A7%E4%B8%80%E6%8B%AC%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%0A%20%20%20%20%20%20%20%20mask%20%3D%20conf%20%26gt%3B%3D%20CONF_TH%0A%20%20%20%20%20%20%20%20if%20not%20np.any(mask)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20boxes%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20scores%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20classes%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20cx%20%3D%20cx%5Bmask%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20cy%20%3D%20cy%5Bmask%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20w%20%20%3D%20w%5Bmask%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20h%20%20%3D%20h%5Bmask%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20conf%20%3D%20conf%5Bmask%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20cls_id%20%3D%20cls_id%5Bmask%5D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%200%E3%80%9C1%20%E6%AD%A3%E8%A6%8F%E5%8C%96%E5%BA%A7%E6%A8%99%20%E2%86%92%20%E5%85%A5%E5%8A%9B%E8%A7%A3%E5%83%8F%E5%BA%A6%E5%BA%A7%E6%A8%99%0A%20%20%20%20%20%20%20%20%20%20%20%20x1%20%3D%20(cx%20-%20w%20%2F%202.0)%20*%20in_w%0A%20%20%20%20%20%20%20%20%20%20%20%20y1%20%3D%20(cy%20-%20h%20%2F%202.0)%20*%20in_h%0A%20%20%20%20%20%20%20%20%20%20%20%20x2%20%3D%20(cx%20%2B%20w%20%2F%202.0)%20*%20in_w%0A%20%20%20%20%20%20%20%20%20%20%20%20y2%20%3D%20(cy%20%2B%20h%20%2F%202.0)%20*%20in_h%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E5%85%83%E7%94%BB%E5%83%8F%E5%BA%A7%E6%A8%99%E3%81%B8%E6%88%BB%E3%81%99%EF%BC%88letterbox%20%E8%A3%9C%E6%AD%A3%EF%BC%89%0A%20%20%20%20%20%20%20%20%20%20%20%20x1%20%3D%20(x1%20-%20left)%20%2F%20scale%0A%20%20%20%20%20%20%20%20%20%20%20%20y1%20%3D%20(y1%20-%20top)%20%20%2F%20scale%0A%20%20%20%20%20%20%20%20%20%20%20%20x2%20%3D%20(x2%20-%20left)%20%2F%20scale%0A%20%20%20%20%20%20%20%20%20%20%20%20y2%20%3D%20(y2%20-%20top)%20%20%2F%20scale%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E6%9C%80%E5%B0%8F%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%A7%E4%B8%80%E6%8B%AC%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%0A%20%20%20%20%20%20%20%20%20%20%20%20bw%20%3D%20x2%20-%20x1%0A%20%20%20%20%20%20%20%20%20%20%20%20bh%20%3D%20y2%20-%20y1%0A%20%20%20%20%20%20%20%20%20%20%20%20size_mask%20%3D%20(bw%20%26gt%3B%3D%20MIN_BOX_W)%20%26amp%3B%20(bh%20%26gt%3B%3D%20MIN_BOX_H)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20not%20np.any(size_mask)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20boxes%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scores%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20classes%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20x1%20%3D%20x1%5Bsize_mask%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20y1%20%3D%20y1%5Bsize_mask%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20x2%20%3D%20x2%5Bsize_mask%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20y2%20%3D%20y2%5Bsize_mask%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20conf%20%3D%20conf%5Bsize_mask%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cls_id%20%3D%20cls_id%5Bsize_mask%5D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20boxes%20%20%3D%20np.stack(%5Bx1%2C%20y1%2C%20x2%2C%20y2%5D%2C%20axis%3D1).astype(np.float32)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scores%20%3D%20conf.astype(np.float32)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20classes%20%3D%20cls_id.astype(np.int32)%0A%0A%20%20%20%20if%20isinstance(boxes%2C%20np.ndarray)%3A%0A%20%20%20%20%20%20%20%20has_det%20%3D%20boxes.shape%5B0%5D%20%26gt%3B%200%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20has_det%20%3D%20len(boxes)%20%26gt%3B%200%0A%0A%20%20%20%20if%20has_det%3A%0A%20%20%20%20%20%20%20%20if%20not%20isinstance(boxes%2C%20np.ndarray)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20boxes%20%20%3D%20np.array(boxes%2C%20%20dtype%3Dnp.float32)%0A%20%20%20%20%20%20%20%20if%20not%20isinstance(scores%2C%20np.ndarray)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20scores%20%3D%20np.array(scores%2C%20dtype%3Dnp.float32)%0A%0A%20%20%20%20%20%20%20%20keep%20%3D%20nms(boxes%2C%20scores%2C%20IOU_TH)%0A%20%20%20%20%20%20%20%20keep%20%3D%20sorted(keep%2C%20key%3Dlambda%20i%3A%20scores%5Bi%5D%2C%20reverse%3DTrue)%5B%3AMAX_DET%5D%0A%0A%20%20%20%20%20%20%20%20for%20i%20in%20keep%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20x1%2C%20y1%2C%20x2%2C%20y2%20%3D%20boxes%5Bi%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20cls_id%20%3D%20int(classes%5Bi%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20conf%20%3D%20scores%5Bi%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20label%20%3D%20labels%5Bcls_id%5D%20if%200%20%26lt%3B%3D%20cls_id%20%26lt%3B%20len(labels)%20else%20f%22id%7Bcls_id%7D%22%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20x1%20%3D%20int(max(0%2C%20min(w0%20-%201%2C%20x1)))%0A%20%20%20%20%20%20%20%20%20%20%20%20y1%20%3D%20int(max(0%2C%20min(h0%20-%201%2C%20y1)))%0A%20%20%20%20%20%20%20%20%20%20%20%20x2%20%3D%20int(max(0%2C%20min(w0%20-%201%2C%20x2)))%0A%20%20%20%20%20%20%20%20%20%20%20%20y2%20%3D%20int(max(0%2C%20min(h0%20-%201%2C%20y2)))%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20cv2.rectangle(frame_bgr%2C%20(x1%2C%20y1)%2C%20(x2%2C%20y2)%2C%20(0%2C%20255%2C%200)%2C%202)%0A%20%20%20%20%20%20%20%20%20%20%20%20cv2.putText(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20frame_bgr%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%7Blabel%7D%3A%7Bconf%3A.2f%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(x1%2C%20y1%20-%205)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cv2.FONT_HERSHEY_SIMPLEX%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%200.6%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(0%2C%20255%2C%200)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%202%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20)%0A%0A%20%20%20%20cv2.putText(%0A%20%20%20%20%20%20%20%20frame_bgr%2C%0A%20%20%20%20%20%20%20%20f%22FPS%3A%20%7Bfps%3A.1f%7D%22%2C%0A%20%20%20%20%20%20%20%20(10%2C%2030)%2C%0A%20%20%20%20%20%20%20%20cv2.FONT_HERSHEY_SIMPLEX%2C%0A%20%20%20%20%20%20%20%200.8%2C%0A%20%20%20%20%20%20%20%20(0%2C%20255%2C%20255)%2C%0A%20%20%20%20%20%20%20%202%2C%0A%20%20%20%20)%0A%0A%20%20%20%20cv2.imshow(%22i.MX95%20CPU%20(YOLOv8%20via%20TFLite%20%2B%20OpenCV)%22%2C%20frame_bgr)%0A%20%20%20%20if%20(cv2.waitKey(1)%20%26amp%3B%200xFF)%20%3D%3D%20ord(%22q%22)%3A%0A%20%20%20%20%20%20%20%20break%0A%0Acap.release()%0Acv2.destroyAllWindows()%0A%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%E8%AF%B7%E5%B0%86%E6%AD%A4%E6%96%87%E4%BB%B6%E4%BF%9D%E5%AD%98%E4%B8%BA%20run-yolo-npu.py%20%E5%88%B0%20FRDM-IMX95%E3%80%82%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CDIV%20id%3D%22id3%22%20class%3D%22pt1%22%3E%0A%3CH3%20id%3D%22toc-hId-1121213259%22%20id%3D%22toc-hId-1121421518%22%3E%3CSTRONG%3E3.%20%E8%AE%BE%E5%A4%87%E5%AE%9E%E9%99%85%E8%BF%90%E8%A1%8C%E6%83%85%E5%86%B5%3C%2FSTRONG%3E%3C%2FH3%3E%0A%3C%2FDIV%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Eroot%40imx95-15x15-lpddr4x-frdm%3A~%23%20python3%20run-yolo.py%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%3C%2FP%3E%3CDIV%20class%3D%22lia-vid-container%20video-embed-center%22%3E%3CDIV%20id%3D%22lia-vid-6393284267112w670h514r992%22%20class%3D%22lia-video-brightcove-player-container%22%3E%3CVIDEO-JS%20data-video-id%3D%226393284267112%22%20data-account%3D%226153537070001%22%20data-player%3D%22default%22%20data-embed%3D%22default%22%20class%3D%22vjs-fluid%22%20controls%3D%22%22%20data-application-id%3D%22%22%20style%3D%22width%3A%20100%25%3B%20height%3A%20100%25%3B%22%3E%3C%2FVIDEO-JS%3E%3C%2FDIV%3E%3CSCRIPT%20src%3D%22https%3A%2F%2Fplayers.brightcove.net%2F6153537070001%2Fdefault_default%2Findex.min.js%22%3E%3C%2FSCRIPT%3E%3CSCRIPT%3E(function()%20%7B%20%20var%20wrapper%20%3D%20document.getElementById('lia-vid-6393284267112w670h514r992')%3B%20%20var%20videoEl%20%3D%20wrapper%20%3F%20wrapper.querySelector('video-js')%20%3A%20null%3B%20%20if%20(videoEl)%20%7B%20%20%20%20%20if%20(window.videojs)%20%7B%20%20%20%20%20%20%20window.videojs(videoEl).ready(function()%20%7B%20%20%20%20%20%20%20%20%20this.on('loadedmetadata'%2C%20function()%20%7B%20%20%20%20%20%20%20%20%20%20%20this.el().querySelectorAll('.vjs-load-progress%20div%5Bdata-start%5D').forEach(function(bar)%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20bar.setAttribute('role'%2C%20'presentation')%3B%20%20%20%20%20%20%20%20%20%20%20%20%20bar.setAttribute('aria-hidden'%2C%20'true')%3B%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%20%20%20%20%20%20%20%20%20%7D)%3B%20%20%20%20%20%20%20%7D)%3B%20%20%20%20%20%7D%20%20%7D%7D)()%3B%3C%2FSCRIPT%3E%3CA%20class%3D%22video-embed-link%22%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fvideo%2Fgallerypage%2Fvideo-id%2F6393284267112%22%20target%3D%22_blank%22%3E%EF%BC%88%E5%9C%A8%E2%80%9C%E6%88%91%E7%9A%84%E8%A7%86%E9%A2%91%E2%80%9D%E4%B8%AD%E6%9F%A5%E7%9C%8B%EF%BC%89%3C%2FA%3E%3C%2FDIV%3E%3CP%3E%3C%2FP%3E%0A%3CH4%20id%3D%22toc-hId--557158485%22%20id%3D%22toc-hId--556950226%22%3E%26nbsp%3B%3C%2FH4%3E%0A%3CDIV%20id%3D%22id-fin%22%20class%3D%22pt1%22%3E%0A%3CH3%20id%3D%22toc-hId-1801271629%22%20id%3D%22toc-hId-1801479888%22%3E%3CSTRONG%3E%E7%BB%BC%E4%B8%8A%E6%89%80%E8%BF%B0%3C%2FSTRONG%3E%3C%2FH3%3E%0A%3C%2FDIV%3E%0A%3CP%3E%E6%88%91%E5%B0%9D%E8%AF%95%E5%B0%86%E5%B8%B8%E7%94%A8%E7%9A%84%E7%89%A9%E4%BD%93%E8%AF%86%E5%88%AB%E7%AE%97%E6%B3%95%20YOLO%20%E5%BA%94%E7%94%A8%E4%BA%8E%E5%AE%9E%E6%97%B6%E6%91%84%E5%83%8F%E6%9C%BA%E6%8B%8D%E6%91%84%E7%9A%84%E8%A7%86%E9%A2%91%E3%80%82%3CBR%20%2F%3E%E8%99%BD%E7%84%B6%E6%82%A8%E9%9C%80%E8%A6%81%E8%BF%9B%E8%A1%8C%E4%B8%80%E4%BA%9B%E8%B0%83%E6%95%B4%EF%BC%8C%E4%BE%8B%E5%A6%82%E5%B0%86%E6%91%84%E5%83%8F%E5%A4%B4%E7%9A%84%E8%BE%93%E5%85%A5%E5%A4%A7%E5%B0%8F%E5%92%8C%E6%A0%BC%E5%BC%8F%E4%B8%8E%20YOLOv8m%20%E7%9A%84%E8%BE%93%E5%85%A5%E7%9B%B8%E5%8C%B9%E9%85%8D%EF%BC%8C%E5%B9%B6%E5%B0%86%E5%85%B6%E8%BD%AC%E6%8D%A2%E4%B8%BA%20OpenCV%20%E5%8F%AF%E4%BB%A5%E5%A4%84%E7%90%86%E7%9A%84%E6%A0%BC%E5%BC%8F%EF%BC%8C%E4%BD%86%E5%8F%82%E8%80%83%E6%9C%AC%E6%96%87%EF%BC%8C%E6%82%A8%E5%BA%94%E8%AF%A5%E8%83%BD%E5%A4%9F%E5%BE%88%E5%BF%AB%E5%9C%B0%E4%BD%BF%E5%85%B6%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-teams%3D%22true%22%3E*%E6%9C%AC%E6%96%87%E5%8C%85%E5%90%AB%E4%BD%9C%E8%80%85%E6%A0%B9%E6%8D%AE%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E7%94%9F%E6%88%90%E7%9A%84%E4%BB%A3%E7%A0%81%E5%AE%A1%E6%A0%B8%E7%9A%84%E5%86%85%E5%AE%B9%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%E6%88%91%E4%BB%AC%E7%9B%AE%E5%89%8D%E6%97%A0%E6%B3%95%20%E5%9B%9E%E5%A4%8D%3C%2FSPAN%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%20%3C%2FSPAN%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%E6%AD%A4%E5%B8%96%E5%AD%90%E2%80%9C%3C%2FSPAN%3E%3CSPAN%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%20%E8%AF%84%E8%AE%BA%E2%80%9D%E9%83%A8%E5%88%86%E7%95%99%E4%B8%8B%E7%9A%84%E8%AF%84%E8%AE%BA%E3%80%82%20%E5%AF%B9%E4%BA%8E%E7%94%B1%E6%AD%A4%E9%80%A0%E6%88%90%E7%9A%84%E4%B8%8D%E4%BE%BF%EF%BC%8C%E6%88%91%E4%BB%AC%E6%B7%B1%E8%A1%A8%E6%AD%89%E6%84%8F%EF%BC%8C%E4%BD%86%20%E5%9C%A8%E8%BF%9B%E8%A1%8C%E5%92%A8%E8%AF%A2%E6%97%B6%EF%BC%8C%20%E8%AF%B7%3C%2FSPAN%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%20%E5%8F%82%E8%80%83%E2%80%9C%3C%2FSPAN%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2FNXP-Tech-Blog%2FNXP%25E3%2581%25B8%25E3%2581%25AE%25E6%258A%2580%25E8%25A1%2593%25E8%25B3%25AA%25E5%2595%258F-%25E5%2595%258F%25E3%2581%2584%25E5%2590%2588%25E3%2582%258F%25E3%2581%259B%25E6%2596%25B9%25E6%25B3%2595-%25E6%2597%25A5%25E6%259C%25AC%25E8%25AA%259E%25E3%2583%2596%25E3%2583%25AD%25E3%2582%25B0%2Fba-p%2F2153299%22%20target%3D%22_blank%22%20data-hyperlinktype%3D%220%22%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%20NXP%3C%2FSPAN%3E%3C%2FA%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2FNXP-Tech-Blog%2FNXP%25E3%2581%25B8%25E3%2581%25AE%25E6%258A%2580%25E8%25A1%2593%25E8%25B3%25AA%25E5%2595%258F-%25E5%2595%258F%25E3%2581%2584%25E5%2590%2588%25E3%2582%258F%25E3%2581%259B%25E6%2596%25B9%25E6%25B3%2595-%25E6%2597%25A5%25E6%259C%25AC%25E8%25AA%259E%25E3%2583%2596%25E3%2583%25AD%25E3%2582%25B0%2Fba-p%2F2153299%22%20target%3D%22_blank%22%20data-hyperlinktype%3D%220%22%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%20%E6%8A%80%E6%9C%AF%E9%97%AE%E9%A2%98%3C%2FSPAN%3E%3C%2FA%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2FNXP-Tech-Blog%2FNXP%25E3%2581%25B8%25E3%2581%25AE%25E6%258A%2580%25E8%25A1%2593%25E8%25B3%25AA%25E5%2595%258F-%25E5%2595%258F%25E3%2581%2584%25E5%2590%2588%25E3%2582%258F%25E3%2581%259B%25E6%2596%25B9%25E6%25B3%2595-%25E6%2597%25A5%25E6%259C%25AC%25E8%25AA%259E%25E3%2583%2596%25E3%2583%25AD%25E3%2582%25B0%2Fba-p%2F2153299%22%20target%3D%22_blank%22%20data-hyperlinktype%3D%220%22%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%20-%3C%2FSPAN%3E%3C%2FA%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2FNXP-Tech-Blog%2FNXP%25E3%2581%25B8%25E3%2581%25AE%25E6%258A%2580%25E8%25A1%2593%25E8%25B3%25AA%25E5%2595%258F-%25E5%2595%258F%25E3%2581%2584%25E5%2590%2588%25E3%2582%258F%25E3%2581%259B%25E6%2596%25B9%25E6%25B3%2595-%25E6%2597%25A5%25E6%259C%25AC%25E8%25AA%259E%25E3%2583%2596%25E3%2583%25AD%25E3%2582%25B0%2Fba-p%2F2153299%22%20target%3D%22_blank%22%20data-hyperlinktype%3D%220%22%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%20%E5%A6%82%E4%BD%95%E8%81%94%E7%B3%BB%E6%88%91%E4%BB%AC%3C%2FSPAN%3E%3C%2FA%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2FNXP-Tech-Blog%2FNXP%25E3%2581%25B8%25E3%2581%25AE%25E6%258A%2580%25E8%25A1%2593%25E8%25B3%25AA%25E5%2595%258F-%25E5%2595%258F%25E3%2581%2584%25E5%2590%2588%25E3%2582%258F%25E3%2581%259B%25E6%2596%25B9%25E6%25B3%2595-%25E6%2597%25A5%25E6%259C%25AC%25E8%25AA%259E%25E3%2583%2596%25E3%2583%25AD%25E3%2582%25B0%2Fba-p%2F2153299%22%20target%3D%22_blank%22%20data-hyperlinktype%3D%220%22%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%20%EF%BC%88%3C%2FSPAN%3E%3C%2FA%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2FNXP-Tech-Blog%2FNXP%25E3%2581%25B8%25E3%2581%25AE%25E6%258A%2580%25E8%25A1%2593%25E8%25B3%25AA%25E5%2595%258F-%25E5%2595%258F%25E3%2581%2584%25E5%2590%2588%25E3%2582%258F%25E3%2581%259B%25E6%2596%25B9%25E6%25B3%2595-%25E6%2597%25A5%25E6%259C%25AC%25E8%25AA%259E%25E3%2583%2596%25E3%2583%25AD%25E3%2582%25B0%2Fba-p%2F2153299%22%20target%3D%22_blank%22%20data-hyperlinktype%3D%220%22%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%20%E6%97%A5%E8%AF%AD%E5%8D%9A%E5%AE%A2%3C%2FSPAN%3E%3C%2FA%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2FNXP-Tech-Blog%2FNXP%25E3%2581%25B8%25E3%2581%25AE%25E6%258A%2580%25E8%25A1%2593%25E8%25B3%25AA%25E5%2595%258F-%25E5%2595%258F%25E3%2581%2584%25E5%2590%2588%25E3%2582%258F%25E3%2581%259B%25E6%2596%25B9%25E6%25B3%2595-%25E6%2597%25A5%25E6%259C%25AC%25E8%25AA%259E%25E3%2583%2596%25E3%2583%25AD%25E3%2582%25B0%2Fba-p%2F2153299%22%20target%3D%22_blank%22%20data-hyperlinktype%3D%220%22%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%20%EF%BC%89%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%20%E2%80%9D%20%E3%80%82%3C%2FSPAN%3E%3CSPAN%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%20%EF%BC%88%E5%A6%82%E6%9E%9C%E6%82%A8%E5%B7%B2%E7%BB%8F%E6%98%AF%3C%2FSPAN%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%20%3C%2FSPAN%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%E6%81%A9%E6%99%BA%E6%B5%A6%E7%9A%84%3C%2FSPAN%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%20%E5%88%86%E9%94%80%E5%95%86%E6%88%96%3C%2FSPAN%3E%3CSPAN%20data-contrast%3D%22none%22%20data-usefontface%3D%22false%22%3E%20%E4%B8%8E%20%E6%81%A9%E6%99%BA%E6%B5%A6%20%E6%9C%89%E5%90%88%E4%BD%9C%E5%85%B3%E7%B3%BB%20%EF%BC%8C%E6%82%A8%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%E5%92%A8%E8%AF%A2%E6%82%A8%E7%9A%84%E4%BB%A3%E8%A1%A8%E3%80%82%EF%BC%89%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-2352597%22%20slang%3D%22ja-JP%22%20mode%3D%22CREATE%22%3E%3CP%3E%E8%AE%A9%E6%88%91%E4%BB%AC%E5%B0%9D%E8%AF%95%E5%9C%A8%3CA%20href%3D%22https%3A%2F%2Fwww.nxp.jp%2Fdesign%2Fdesign-center%2Fdevelopment-boards-and-designs%2FFRDM-IMX95%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3EFRDM-IMX95%3C%2FA%3E%E4%B8%8A%E8%BF%90%E8%A1%8C%20YOLO%EF%BC%8C%E8%BF%99%E6%98%AF%E4%B8%80%E6%AC%BE%E6%B5%81%E8%A1%8C%E7%9A%84%E5%9F%BA%E4%BA%8E%20AI%20%E7%9A%84%E5%AF%B9%E8%B1%A1%E8%AF%86%E5%88%AB%E5%B7%A5%E5%85%B7%E3%80%82%3C%2FP%3E%0A%3CP%3E%E6%88%91%E5%B0%86%E4%BD%BF%E7%94%A8%E7%9A%84%E6%A8%A1%E5%9E%8B%E6%98%AFYOLOv8m%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-olk-copy-source%3D%22MessageBody%22%3E%EF%BC%88%E9%A2%84%E8%AE%A1%E6%97%B6%E9%97%B4%EF%BC%9A30%3C%2FSPAN%3E%3CSPAN%3E%E5%88%86%E9%92%9F%EF%BC%89*%E5%81%87%E8%AE%BE%20Linux%20%E9%95%9C%E5%83%8F%E5%B7%B2%E5%86%99%E5%85%A5%20FRDM-IMX95%20%E5%B9%B6%E4%B8%94%E7%9B%B8%E6%9C%BA%E8%BF%90%E8%A1%8C%E5%B7%B2%E7%A1%AE%E8%AE%A4%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2352597%22%20slang%3D%22ja-JP%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3Ei.MX%20%E5%A4%84%E7%90%86%E5%99%A8%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3E%E6%8A%80%E6%9C%AF%E8%81%9A%E7%84%A6%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3E%E6%97%A5%E6%9C%AC%E5%8D%9A%E5%AE%A2%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E