疑難排解
每個條目都以「症狀 → 原因 → 解決方案」的形式呈現。症狀標題是確切的錯誤訊息——請在本頁中搜尋(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 通道。其中一個可能原因是部分更新後,Scheduler、Runner、Kernels 或韌體套件組不相符。
請依照安裝或更新 Neat Library安裝完整 Core 套件組與選定的 Scheduler 相依套件。請檢查執行階段套件配對,而不是比較不同元件的 Git 雜湊值或強制安裝個別韌體套件。
11. frame=N rtsp_timeout
RTSP 拉取逾時——URL 錯誤或串流未傳輸影格。
驗證 RTSP URL 是否可連線且正在積極地進行串流;檢查傳輸方式(TCP 或 UDP)。請參閱 播放 RTSP 串流。。
12. Camera buffer is not one forwardable DMA-BUF and copying is disabled
CameraInputOptions::allow_cpu_fallback 預設為 false,因此 Neat 會直接轉送相機自身的 DMA-BUF,且從不複製。相機堆疊傳遞的影格並非各平面緊密相連的單一 DMA-BUF(例如每個 fd 一個平面,或非 DMA-BUF 記憶體)。
請搭配平台的 libcamera 套件維持嚴格的零複製。如果您必須在無法將每個影格以單一 DMA-BUF 傳遞的相機堆疊上執行,請明確選擇相容性複製:
simaai::neat::CameraInputOptions camera;
camera.allow_cpu_fallback = true;
自適應模式仍然會將 DMA-BUF 交給下游的 CVU/MLA 階段。只有在相機影格並非各平面緊密相連的單一 DMA-BUF 時,才會複製 到 CMA DMA-BUF 中。
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 進行比較。
14. 相機拍攝的畫面呈現出綠色、紫色或過於強烈的色調。
目前的畫面是以錯誤的像素格式或色彩轉換方式進行解讀。最常見的錯誤是將 NV12 格式的相機畫面視為 RGB/BGR 格式的位元組。如果相同的色調在 Neat 之前就已經出現,那麼問題很可能出在相機 ISP 的調整或 libcamera 管線。
請確保相機鏡頭蓋和模型預處理格式保持一致:
- 請求推薦模型的路徑,格式為
camera.format = "NV12"。 - 設定
preprocess.color_convert.input_format = PreprocessColorFormat::NV12。 - 在正式發布版本中,請避免使用 CPU 進行
videoconvert/videoscale; - 執行一個簡短的
gst-launch-1.0 libcamerasrc ... ! videoconvert ! jpegenc僅進行簡單測 試,以確認是否已存在著色效果。 Neat.
15. MIPI 攝影機教學中的 frame=N output_timeout。
在教學課程的逾時設定結束之前,沒有任何輸出樣本傳送到應用程式。在「相機到模型」的圖中,這可能表示相機沒有傳輸畫面、Caps 協商失敗、模型路徑仍在啟動中,或者下游階段(例如 BoxDecode)沒有產生輸出。
首先驗證僅使用相機的路徑。然後重新執行教學,並設定較長的逾時時間,以及啟用後端輸出:
devkit$python3 share/sima-neat/tutorials/023_run_mipi_camera_model/run_mipi_camera_model.py \ --model /path/to/model.tar.gz --frames 2 --decode none \ --pull-timeout-ms 15000 --print-backend生產流程應包含 libcamerasrc、neatcamerabridge(當啟用回退機制時)、neatkernelrunner、neatprocessmla 和 appsink。對於 BoxDecode 路由,還請確認 --decode 標記和閾值與模型封存檔相符。