疑難排解
每個條目都以「症狀 → 原因 → 解決方案」的形式呈現。症狀標題是確切的錯誤訊息——請在本頁中搜尋(Ctrl-F),以找到您看到的訊息。每個條目都經過驗證,以確保與目前的原始碼一致,或在 DevKit 上進行重現。
如果您不確定從何開始,請跳至 當您遇到問題時:診斷。。
安裝與環境設定
1. pyneat is not importable. Either Neat is not installed, or the venv is not activated.
pyneat 虛擬環境未啟用,或者您正在執行的環境中未安裝 wheel 套件。
在執行任何 Python 程式碼之前,請先啟動 DevKit 環境:
source ~/pyneat/bin/activate
2. GST 外掛程式載入失敗:undefined symbol: _ZN16simaaidispatcher14DispatcherBase14submitPrepared...
Neat 執行階段共用函式庫不在動態載入器路徑中,因此 GStreamer 外掛程式無法在載入時解析執行階段符號。
在啟動前,請將執行階段目錄置於 LD_LIBRARY_PATH。
export LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu/neat/runtime:$LD_LIBRARY_PATH
3. 缺少模型封存檔 — sima-cli modelzoo 尚未執行。
您程式碼中參考的 .tar.gz 模型封存檔(或 SIMA_YOLO_TAR / SIMA_RESNET50_TAR / SIMA_MODEL_TAR)在磁碟上不存在。
請從 Model Zoo 下載。
sima-cli modelzoo get yolo_v8s # or resnet_50, etc.
建立
4. 無法找到 find_package(SimaNeat CONFIG) 封包。
CMake 無法找到 SimaNeatConfig.cmake(已安裝於 lib/cmake/SimaNeat/)。在原生 DevKit 安裝中,它位於預設的系統路徑中;但在 SDK 交叉編譯中,sysroot 並未位於 CMAKE_PREFIX_PATH 中。
匯出 SYSROOT,並讓您的 CMakeLists 將其新增到前置路徑中(您好,這是 Neat 範本。 這樣做):
if(DEFINED ENV{SYSROOT} AND NOT "$ENV{SYSROOT}" STREQUAL "")
list(APPEND CMAKE_PREFIX_PATH "$ENV{SYSROOT}/usr/lib/aarch64-linux-gnu")
endif()
find_package(SimaNeat REQUIRED CONFIG)
載入模型並進行設定。
5. failed to read image: <path>
OpenCV(cv2.imread / cv::imread)傳回 null 值——表示檔案不存在、無法讀取,或不是可解碼的影像。
在建構輸入張量之前,請驗證路徑,並確認該檔案是否為有效的 JPEG/PNG 格式。
6. reason=topk must be > 0(來自 boxdecode)
偵測模型的 ModelOptions.top_k 參數設定為 0;框檢測階段需要一個正數上限。
設定一個正數 top_k(教學影片中使用 100):
opt.top_k = 100
(訊息來自 EV74 封包解碼外掛程式。)
7. preproc_upsample_not_supported
原始影像的尺寸小於模型的輸入解析度,因此預處理步驟必須進行升頻採樣,但較舊的 EV74 預處理韌體無法執行此操作(它僅支援降頻採樣)。
請提供一張與模型輸入大小相等或更大的原始影像(例如,對於 YOLOv8,至少為 640×640),或者將 neat-ev74-firmware 更新為包含升頻採樣核心的建置版本。
(此訊息來自 EV74 預處理外掛程式/韌體。)
8. 低 score_threshold → 後處理延遲峰值
檢測閾值越低,通過閾值篩選的候選框數量就越多,而且非最大值抑制 (NMS) 的計算成本會隨著存留的框的數量大致呈平方級數增長。
僅將閾值降低到足以捕捉到弱檢測值的程度,並使用 top_k 來限制最壞的情況。請參閱 讀取偵測框。
執行推論。
9. misconfig.media_caps … Internal data stream error … reason not-negotiated (-4)
對於原始影像輸入,預處理階段並未啟用,或者輸入類型未聲明,因此無法在應用程式來源 (appsrc) 和第一階段之間進行協商。
在 ModelOptions 中宣告影像輸入和預處理設定:
opt.preprocess.kind = pyneat.InputKind.Image
opt.preprocess.preset = pyneat.NormalizePreset.COCO_YOLO
10. No channel available (all candidate channel opens failed)
EV74 派遣器嘗試排程一個內核,但已載入的韌體並未實作該內核——通常是因為 neat-runtime 和 neat-ev74-firmware 不是相同的版本(內部雜湊值不符),例如部分更新。
一起安裝匹配的 neat-* 套件(哈希值相同);確認在執行階段和韌體中顯示的哈希值是否相同。請參閱 相容性 → 版本相符的集合。
(此訊息來自 EV74 派遣器。)
11. frame=N rtsp_timeout
RTSP 拉取逾時——URL 錯誤或串流未傳輸影格。
驗證 RTSP URL 是否可連線且正在積極地進行串流;檢查傳輸方式(TCP 或 UDP)。請參閱 播放 RTSP 串流。。
12. CameraInput strict zero-copy requires external-buffer-mode
CameraInputOptions::allow_cpu_fallback 預設為 false,因此 Neat 需要端到端 SiMaAI/裝置零拷貝支援。或者 libcamerasrc 沒有宣告通用的 external-buffer-mode 屬性,或者已安裝的記憶體函式庫無法將其設定匯出為 DMA-BUFs。
在安裝相容的相機和記憶體套件時,請務必維持嚴格的零複製。如果您必須在沒有 DMA-BUF 匯出的情況下使用相機堆疊,請明確選擇相容性橋接:
simaai::neat::CameraInputOptions camera;
camera.allow_cpu_fallback = true;
自適應模式仍然將下游的 CVU/MLA 階段的資料傳輸到 SiMaAI 記憶體。只有在上游相機緩衝區尚未被 EV74 使用時,才會在相機橋接器處進行複製。
13. misconfig.media_caps … libcamerasrc … not-negotiated (-4)
您所要求的相機設定與相機堆疊能夠產生的模式不符,或者板載疊加層/驅動程式未正確地設定相機。
驗證外部影像是否具有相同的格式、解析度和幀率。 Neat:
devkit$gst-launch-1.0 -e libcamerasrc ! \ 'video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1' ! \ identity eos-after=30 ! fakesink如果上述方法無效,請先檢查覆蓋層、纜線、感測器驅動程式或相機模式。使用 Modalix DevKit MIPI 相機介面指南 來確認 .dtbo 和 libcamera 的驗證路徑。如果驗證通過,請將其與您的 CameraInputOptions 進行比較。