跳至主要内容

使用者介面

Insight 是圍繞您在驗證視覺應用程式時執行的開發工作來組織的:檢查檔案、準備媒體、啟動來源、檢視輸出,以及監看執行階段的健康狀態。

工作區​

「工作區」檢視可讓您瀏覽 Insight 可見的專案檔案。在 Neat 開發環境中,這通常是 /workspace;在 SDK 之外,Insight 會退而使用目前的工作目錄。

使用「工作區」來:

  • 搜尋並瀏覽原始碼檔案、設定、模型成品與產生的輸出。
  • 預覽文字、程式碼、Markdown、影像,以及特定的二進位成品。
  • 無須手動解壓縮即可檢查 MPK 套件封存檔。
  • 檢視專門的開發成品,例如 MLA 統計資料、MPK 資訊清單與管線序列檔案。

當應用程式產生多個建置輸出與日誌時,「工作區」特別有用。它提供一種可透過瀏覽器存取的方式,讓您在同一個開發工作階段中檢查這些成品。

Insight 工作區檢視,顯示管線序列圖與工作區成品。

媒體來源​

「媒體來源」是您新增與管理應用程式測試所用媒體檔案的地方。選取 Import Media(匯入媒體)以開啟匯入對話方塊,然後從三種來源中擇一:

  • Local files(本機檔案):從電腦選擇或拖放一個或多個檔案。上傳的 H.264 MP4 會經過正規化以進行低延遲播放,並停用 B 影格,同時保留來源影格率。
  • Catalog(目錄):從 SiMa 精選的影片目錄匯入,以已知的素材進行可重複的測試。可依素材類型或名稱瀏覽、搜尋目錄、依解析度、影格率與編解碼器篩選、預覽影片,然後匯入一個變體,或選取並匯入多個符合條件的素材。
  • YouTube:貼上一般的 YouTube 影片 URL,驗證後即可顯示預覽,並選擇開始時間、片段長度與輸出設定檔。Insight 支援 1、3 或 5 分鐘的片段,規格為 1080p30、720p30 或 480p30。匯入的片段會轉換為適合 WebRTC 的 H.264,並停用 B 影格。不支援進行中的直播;請使用一般影片或已封存的直播。

從目錄與 YouTube 匯入需要網路存取。Insight 會在下載與準備媒體時顯示進度,然後將結果儲存到本機媒體庫。

支援的影片格式包括常見的容器格式,例如 mp4、mov、avi、mkv 與 webm。Insight 也能辨識 MJPEG 素材與 HEVC/H.265 媒體,以進行能感知編解碼器的串流。MJPEG 與 HEVC 媒體會被保留,以便以其原始編解碼器行為進行串流。

匯入媒體後,您可以篩選檔案清單、預覽選取的檔案、檢查其基本中繼資料,或刪除不再需要的檔案。請在設定串流來源之前使用「媒體來源」,以便了解有哪些檔案可用、Insight 偵測到哪種編解碼器,以及這些檔案是否可讀取。

影片檔案卡片會以資料夾的形式顯示媒體庫。選取資料夾列會開啟該資料夾,並列出其子資料夾與影片。每個資料夾列都會顯示其中包含多少個可串流的影片(包含子資料夾中的影片),而影片檔案標題旁則會針對您目前所在的資料夾顯示相同的計數。麵包屑導覽會顯示您目前所在的位置;點選其中任何一部分(包括影片),即可返回該層級。篩選功能會搜尋目前的資料夾及其下的所有內容,並以相對於目前資料夾的路徑顯示相符結果。Insight 無法串流的檔案會以灰色列出,並標示無法串流標籤,因此您仍可預覽或刪除它們;串流來源中的指派對話方塊則會隱藏這些檔案,並以灰色顯示沒有可串流影片的資料夾。資料夾名稱只是您自訂的一般標籤,例如 30FPS/ 或 120FPS-720p-h264/;Insight 絕不會從中讀取影片設定。在 Neat SDK 中,媒體庫位於 /workspace/.insight-media/,因此即使 SDK 重新啟動,媒體庫也會保留。上傳的檔案一律會放在媒體庫的最上層。

Insight 媒體來源檢視,顯示選取的影片預覽與媒體中繼資料。

「媒體來源」在單一檢視中結合了匯入、檔案選取、預覽、中繼資料檢查與刪除動作。匯入的目錄素材會儲存在 catalog/ 下,YouTube 片段則儲存在 youtube/ 下,讓您能辨識檔案是如何進入媒體庫的。

預覽相機​

連接到執行瀏覽器之電腦的網路攝影機或手機相機,可以在串流前先在此預覽。在 相機 下選取 啟用相機存取,並在瀏覽器詢問時允許存取;相機會列在按鈕下方。選取相機後,會以該相機的即時視訊取代所選檔案的預覽,並顯示相機名稱與瀏覽器回報的串流資訊:

  • Active stream(目前串流):相機目前傳送的解析度與幀率,以及這是相機本身的模式,還是經過瀏覽器裁切或縮放。
  • Camera capabilities(相機能力):相機回報的最大寬度、最大高度與最高幀率,各自分開顯示。這些是上限,而不是相機具有的模式:寬度與高度都回報 1920 的相機,不一定能以 1920×1920 擷取。

瀏覽器未回報的值不會顯示。瀏覽器不會回報像素格式,因此不會顯示像素格式。

預覽只在您的瀏覽器中執行。它不會指派串流槽位,也不會啟動或停止串流;若要串流該相機,請在「串流」中將它指派給槽位(請參閱下方的 使用網路攝影機作為來源)。若此瀏覽器分頁已在發布該相機,預覽會顯示該擷取畫面而不會再次開啟相機,因此串流的設定不會改變。選取其他相機或檔案、選取 Stop preview(停止預覽)、離開「媒體來源」或關閉分頁,都會釋放相機。

若無法預覽相機,面板會說明原因:

您看到的訊息處理方式
相機權限遭拒(Camera permission was denied)在瀏覽器設定中允許 Insight 網站存取相機,然後選取 Try again(重試)。
無法啟動相機(The camera could not be started)另一個應用程式正在使用相機。請關閉該應用程式,然後選取 Try again(重試)。
該相機已無法使用(That camera is no longer available),或相機已停止傳送視訊(The camera stopped sending video)相機已中斷連接。請重新連接,然後選取 Refresh cameras(重新整理相機)。
此頁面內嵌於不允許存取相機的框架中(This page is embedded in a frame that does not allow camera access)Insight 顯示在另一個頁面(例如編輯器分頁)中,而該頁面未將相機存取權傳遞給它。請在獨立的瀏覽器分頁中開啟 Insight。

串流來源​

「串流來源」檢視會將上傳的媒體檔案轉換為即時來源槽位。每個來源槽位都可以公開一個 RTSP URL:

rtsp://127.0.0.1:8554/src1
rtsp://127.0.0.1:8554/src2
rtsp://127.0.0.1:8554/src3

這些 URL 適用於與 Insight 在同一個 SDK 容器中執行的應用程式。若應用程式在 DevKit 或其他外部機器上執行,請使用 SDK 主機的 IP 位址,以及 neat --json 中對應的 rtsp.tcp 主機連接埠。

Insight 會依據指派的媒體選擇編解碼器與傳輸選項:

  • H.264 媒體透過 RTSP 以 H.264 串流。
  • HEVC/H.265 媒體透過 RTSP 以 H.265 串流。
  • MJPEG 媒體可透過 RTSP 以 MJPEG 串流,或透過 HTTP 以 multipart MJPEG 串流。

編解碼器由所選的媒體決定,無法在 UI 中手動變更。透過 RTSP 傳送的 MJPEG 會編碼為相容於 RTP 的 MJPEG,而 HTTP MJPEG 則可保留 MJPEG 影格,以進行類似攝影機的 HTTP 測試。

選取來源列的檔案欄位,即可開啟srcN 的來源對話方塊。其影片檔案分頁提供與「媒體來源」相同的資料夾瀏覽器;選擇一部影片,然後按指派,或按清除以取消指派。其相機分頁則改為指派您的其中一台相機,而串流 URL分頁會拉取網路串流(請參閱下文)。您可以啟動和停止個別的來源,自動將唯一的檔案指派給不同的來源插槽,批量啟動來源,停止所有串流,並複製串流 URL 以供應用程式或測試工具使用。

當您需要為物件偵測、分割、追蹤、分類或 GenAI 視覺應用程式提供可重複的輸入串流時,這個檢視很有用。

Insight 串流來源檢視,顯示已指派的來源槽位與來源預覽。

「串流來源」檢視可讓您將媒體檔案指派給來源槽位、啟動或停止串流、複製作用中的串流 URL,並在將所選來源接入應用程式之前先行預覽。

使用網路攝影機作為來源​

連接到執行瀏覽器之電腦的網路攝影機可以作為即時來源,讓您無須先將檔案複製到開發板,就能以真實相機測試應用程式。若要先檢查相機,請在「媒體來源」中預覽(請參閱上方的 預覽相機)。

  1. 選取來源槽位的檔案欄位,並將 srcN 的來源 對話方塊切換至 相機。
  2. 在該處或 Media Sources 的 相機 下選取 啟用相機存取。瀏覽器會要求相機權限;Insight 無法替您授權。允許存取後,相機會列在該分頁中。
  3. 選取相機、解析度 與 位元率 並按 指派,再選取 開始。該列顯示 [CAM] 標記(影片檔案顯示 [VID]),瀏覽器將相機發布至 Insight,槽位顯示 Live。
  4. 使用 複製 URL 取得 RTSP URL,並像檔案來源一樣讓應用程式使用此 URL。

解析度 預設要求相機提供 1920x1080、30 fps。也可改選 3840x2160 到 640x480、最高 60 fps 的其他尺寸與影格率,或 相機預設值。清單只會列出相機回報的最大尺寸與影格率範圍內的模式。不支援所選模式的相機會傳送最接近的模式。電腦或網路忙碌時,瀏覽器會維持尺寸並降低影格率。位元率 設定瀏覽器傳送相機的最高速率。自動 會依解析度調整,在 1920x1080、30 fps 時為 8.1 Mbps,也可改選 2 到 32 Mbps。Insight 會為串流 URL 重新編碼相機,因此串流的位元率可能不同。若要變更已指派相機的解析度或位元率,請再次開啟對話方塊,選擇其他 解析度 或 位元率,然後依序選取 指派 與 開始。

相機清單會隨相機的連接與中斷而更新。網路攝影機來源只發布視訊,格式為 H.264。

擷取進行中時,來源清單旁的預覽會顯示您的相機畫面。這不是開發板接收到的視訊,也不會呈現接收端應用程式所看到的延遲;若發布失敗,擷取會停止並清除預覽。

選取 Stop(停止)、拔除相機或關閉瀏覽器分頁都會結束串流,並將槽位恢復為 Idle。Stop All(全部停止)、Reset(重設)與 Auto Assign(自動指派)也會釋放所有網路攝影機,因為它們都會收回那些槽位:Reset 與 Auto Assign 也會清除相機選擇,因此之後請重新選取相機。網路攝影機發布期間,瀏覽器分頁必須保持開啟:它就是將視訊傳送到 Insight 的元件。基於同樣的原因,Insight 重新啟動後,網路攝影機來源絕不會恢復為 Live——請重新選取相機並再次啟動。

若啟動網路攝影機失敗,訊息會指出原因:

您看到的訊息處理方式
相機權限遭拒(Camera permission was denied)在瀏覽器設定中允許 Insight 網站存取相機,然後在「媒體來源」→ 相機下重新啟用相機存取。
該相機已無法使用(That camera is no longer available)相機已中斷連接。選取 Refresh cameras(重新整理相機)並重新選取它。
無法啟動相機(The camera could not be started)另一個應用程式正在使用相機。請關閉該應用程式後重試。
無法連線到網路攝影機發布端點(Could not reach the webcam publish endpoint)瀏覽器無法連線到發布接聽程式。請信任 webrtcWhip 端點的憑證(開啟其 URL 一次以接受憑證),並確認連接埠可連線(請參閱 連接埠與網路行為)。
網路攝影機發布遭拒(Webcam publish was rejected)Insight 無法接受該串流。請確認 webrtcWhip 連接埠可連線(請參閱 連接埠與網路行為),且您的瀏覽器信任 Insight 憑證。

瀏覽器只允許在其視為安全的頁面上存取相機。若 Enable camera access(啟用相機存取)沒有任何反應,請先透過 HTTPS 開啟 Insight 並信任其憑證;請參閱 安裝與升級。

外部串流​

任何 RTSP、WebRTC(WHIP)或 SRT 工具都可以直接發布到來源插槽,例如在主機上以 ffmpeg 擷取相機畫面:

ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -preset veryfast -tune zerolatency -g 30 -pix_fmt yuv420p \
-f rtsp -rtsp_transport tcp rtsp://<insight-host>:8554/src2

SDK 容器會對應 RTSP 連接埠(8554)和 WHIP 連接埠(webrtcWhip,8889);SRT 發布端必須在容器內或原生安裝於 DevKit 的環境中執行。

Insight 會在約兩秒內將此類插槽顯示為外部:該列變為唯讀,標籤會列出通訊協定、發布端位址,並在探測完成後列出解析度和幀率。當串流使用 Neat 管線無法解碼的編解碼器(H.264、H.265 或 MJPEG 以外的任何編解碼器)時,編解碼器欄位會變為琥珀色並顯示警告。「複製網址」仍可使用;無論使用何種發布通訊協定,應用程式都照常讀取 rtsp://…/srcN。

最先發布的一方會佔用插槽。在外部插槽上啟動檔案,或發布到 Insight 已在串流的插槽,都會遭到拒絕,而不會悄悄取代正在執行的串流。接管(外部列中的方形停止圖示)會在確認後中斷外部發布端(及其讀取端)的連線;插槽會回到閒置狀態,並保留先前的檔案指派。會自動重新連線的發布端可能會再次佔用閒置的插槽,因此若要將插槽改用於檔案,請先停止外部工具。

「來源預覽」面板可以用來源本身的幀率即時顯示外部插槽;預覽預設為關閉(依瀏覽器記住設定),關閉時不會進行任何解碼。選取另一個外部插槽後,會顯示「連線中」指示器,直到新串流的第一個畫面抵達為止。這段等待時間主要是等待發布端的下一個關鍵幀,因此對於打算預覽的串流,請將關鍵幀間隔設為約一秒(上例中在 30 fps 時使用 -g 30;編碼器的預設值通常為數秒)。在 SDK 容器內,容器外部的發布端和讀取端會以 Docker 橋接位址顯示,而非其實際 IP。

自動指派、批次啟動、全部停止和重設絕不會影響外部串流;結果訊息會列出略過的插槽。重設仍會清除每個插槽已儲存的指派,包括外部插槽。

 Insight 串流來源檢視畫面,其中有兩個外部插槽,其中一個被標記為使用不支援的編解碼器。

外部插槽會顯示發布端、其位址以及探測到的串流格式;當 Neat 管線無法解碼串流時,編解碼器欄位會變為琥珀色。

拉取的串流​

網路上已存在的串流(通常是 IP 攝影機)可以拉取到插槽中。按一下閒置插槽的檔案按鈕,將對話方塊切換到串流 URL,輸入攝影機的 rtsp:// 或 rtsps:// URL,若攝影機需要,也輸入其使用者名稱和密碼,然後按拉取。Insight 會設定 mediamtx 拉取該串流,並原封不動地轉送到 rtsp://…:8554/srcN;不會進行任何解碼或重新編碼,應用程式可以像讀取其他插槽一樣讀取此插槽。

畫面抵達後,該列會以藍綠色顯示已拉取,標籤會列出來源主機、解析度和幀率,編解碼器欄位則顯示編解碼器。在此之前,會顯示連線中…。如果無法連線到攝影機,該列會變為琥珀色的無法連線並顯示原因;mediamtx 會持續重試,攝影機恢復後,該列會自行回到已拉取。如果按下拉取時攝影機拒絕使用者名稱或密碼,對話方塊會顯示該訊息,插槽維持不變。只有當攝影機之後才開始拒絕認證資訊(例如一開始無法連線)時,該列才會以紅色顯示驗證失敗並維持此狀態:請按停止,然後以正確的認證資訊重新拉取。密碼只會保存在記憶體中;Insight 絕不會將其寫入磁碟、再次顯示或記錄到日誌,而且 Insight 重新啟動後不會還原已拉取的插槽。

按下該列的停止會解除拉取,插槽會回到閒置狀態,並保留先前的檔案指派。對已拉取的插槽指派檔案、啟動或接管都會遭到拒絕。全部停止和重設也會停止拉取,因為這些拉取是由 Insight 啟動的,並只讓外部串流繼續執行。自動指派和批次啟動會像略過外部插槽一樣略過已拉取的插槽,並在結果訊息中列出。

「來源預覽」面板對已拉取插槽的運作方式與外部插槽完全相同(預覽預設為關閉)。在此版本中,使用自我簽署憑證的 rtsps:// 攝影機會被回報為無法連線,並附上憑證訊息。

幀率​

來源預覽面板會在所選來源的檔案名稱下方顯示 FPS 控制項,設定影格速率後,來源列會在檔案名稱旁顯示該速率。指派影片後,控制項會顯示從檔案中偵測到的幀率。使用 − 和 + 按鈕以 5 為單位調整,或輸入 1 以上的任意整數。Native 會將來源恢復為檔案本身的幀率。來源以原生幀率串流時,檔案名稱旁的速率與轉碼版本提示會呈灰色。在檔案解析度下編碼器無法達到的速率(超過 H.264 或 H.265 的最高等級)會在來源啟動時遭到拒絕,並顯示說明該上限的訊息。

當數值與檔案的原生幀率不同時,啟動來源會先建立一個轉碼版本:依照與 Insight 媒體目錄相同的編碼規則(H.264 baseline 或 H.265 main、yuv420p、無 B 幀、一個參考幀、一秒的封閉式 GOP),以要求的固定幀率重新編碼的影片副本。該列會顯示編碼中,並在預覽面板中顯示進度列,接著變為即時並串流該轉碼版本。轉碼版本儲存在媒體目錄下的 .renditions/ 中,並記錄在 renditions.json 裡,因此下次啟動時(包括重新啟動 Insight 之後)會直接重複使用,而不會再次編碼。以內容不同的檔案取代來源檔案,會使其舊的轉碼版本失效。刪除來源檔案會一併移除其轉碼版本。位元組完全相同的檔案(例如以其他名稱存在的副本)會共用同一個轉碼版本,該版本會保留到其中最後一個檔案被刪除或取代為止。如果編碼失敗,來源檔案不會受到影響,也不會保留部分完成的轉碼版本。

Insight 一次只會編碼一個轉碼版本。在另一個轉碼版本編碼期間,預覽面板會顯示 Waiting for another rendition to finish encoding…,待另一個版本完成後便會立即開始編碼。編碼前,Insight 會檢查媒體目錄中的可用空間:需要轉碼版本的預期大小再加上 1 GB 的餘裕,否則啟動會失敗,並顯示說明所需空間的訊息。請清除轉碼版本或釋出空間,然後再次啟動來源。

MJPEG 來源無法變更幀率;其控制項會停用。

「串流來源」工具列中的清除轉碼版本會刪除所有快取的轉碼版本(播放中來源正在使用的除外);這些版本會在下次啟動時重新建立。

視訊檢視器​

視訊檢視器會顯示來自視訊轉送器的低延遲 WebRTC 串流。

對於頻道 N:

video: UDP 9000 + N
metadata: UDP 9100 + N

例如,頻道 0 使用視訊 UDP 9000 與中繼資料 UDP 9100;頻道 1 使用視訊 UDP 9001 與中繼資料 UDP 9101。

若傳送端在 DevKit 或其他外部機器上執行,請使用 neat --json 中對應的 videoUDP 與 metadataUDP 主機連接埠範圍。頻道的計算方式相同,但起始連接埠可能不同。

檢視器可以呈現常用視覺輸出(包括物件偵測、分類、姿勢估計、分割和追蹤)的中繼資料疊加層。每個中繼資料類型都有 Show Overlay 開關,可在不變更信賴度閾值或樣式的情況下隱藏輸出。姿勢估計也可分別顯示關節標記和地標名稱。與影格相關聯的資料也可顯示在每個頻道的獨立輔助面板中;第一個內建呈現器是 BlazePose 3D。多個輔助檢視會顯示為分頁,面板可以收合、展開或隱藏。通訊協定請參閱輔助視覺化。檢視器設定可調整信賴度閾值、ROI 顯示、追蹤歷史記錄和同步緩衝。當影格沒有某類型的中繼資料時(例如推論速度比影片慢),檢視器會繼續繪製該類型的最後一個疊加層,最長 200 毫秒;收到該類型的新訊息時(即使不含任何物件)就會取代它。中繼資料時間戳使用來源 PTS 毫秒,如果無法使用則會省略。

接收 JPEG(RTP 酬載類型 26)的頻道也以相同方式顯示。Insight 會將每個 JPEG 影格原封不動地轉送到瀏覽器,圖塊狀態會顯示 JPEG,疊加層也依循相同的時間戳。與 H.264 影格相同,每個影格都會保留 Video Sync Buffer 的時間,讓其疊加層先行送達。ROI 編輯器預覽目前尚不會顯示 JPEG 頻道,並會提示這類頻道只能在 Video Viewer 中檢視。

General 設定分頁提供 Orientation 設定:None、Mirror、Flip Vertical 或 Rotate 180°。此設定只會在檢視器中翻轉或旋轉畫面及其疊加層(包括標籤),適用於所有編解碼器。串流與中繼資料座標都不會改變。

全域設定與頻道設定​

檢視器設定分為兩個範圍。檢視器頁面的設定按鈕會開啟全域設定。圖塊狀態列最右側的按鈕會開啟該頻道的設定;對話方塊的標題會顯示頻道名稱。

頻道會沿用全域設定。若要為頻道設定自己的值,請開啟其設定,開啟該設定旁的 Own value,設定值後選取 Save。頻道自行設定的值優先於全域值。再次關閉 Own value 後,頻道會沿用全域值。類別顏色依項目分別處理:頻道對話方塊會將全域項目標示為 from global,而 Override 會將其中一個項目複製為該頻道的項目。

在全域對話方塊中,設定列末端的琥珀色警告圖示表示有頻道自行設定該設定的值;其工具提示會顯示頻道數量。選取該圖示即可列出這些頻道及其值。Use global value 會立即移除頻道自己的值,無需按 Save。Reset all channels to the global settings… 會在確認後移除所有頻道自己的值;ROI 會保留。

設定儲存在瀏覽器中。這些設定不會在不同的瀏覽器或電腦之間共用。

中繼資料顏色​

疊加層會從一個由 40 種顏色組成的共用調色盤中選取顏色,讓不同的識別對象在擁擠的畫面中仍能清楚區分。前 20 種顏色的區別最明顯;其餘 20 種只有在同時有超過 20 個識別對象需要顏色時才會使用:跨所有頻道的類別,或單一頻道上的軌跡或姿勢。每種中繼資料類型各自定義何謂識別對象:

中繼資料類型著色依據共用該顏色的部分
object-detection類別 label方框、標籤、置信度
segmentation類別 label遮罩、輪廓、方框、標籤
classification類別 label每一行標籤
tracking軌跡 id方框、標籤、歷史路徑
pose-estimation姿勢 id關鍵點、骨架、關鍵點名稱、方框、標籤

顏色會在識別對象首次出現時分配。類別標籤在所有頻道間共用一份分配,因此 bicycle 在每個圖塊上都是相同的顏色,person 在偵測、分割和分類中看起來也都相同。覆寫設定依中繼資料類型分別套用:物件偵測中針對 person 的項目不會改變分割或分類中 person 的顏色。軌跡與姿勢會依頻道分配,因為 id 只在單一串流內是唯一的;頻道重新連線時,它們的顏色會重新開始分配。識別對象在任一頻道的畫面上時會保有其顏色。當它離開畫面超過 5 秒後,其顏色可能會交給新的識別對象。當畫面上的識別對象多於調色盤可容納的數量時,新的識別對象會與最久未繪製的識別對象共用顏色,而不會從任何可見的對象奪走顏色。

沒有 id 的軌跡與姿勢會以單一中性色繪製。若傳送者希望每個人或每條軌跡使用不同顏色,就必須包含 id。

物件偵測與分割設定可包含選用的各類別覆寫項目。針對某個標籤的項目會固定該類別的顏色與線條樣式。標籤為 default 的項目會固定所有沒有自己項目之類別的顏色。若沒有任何項目,所有類別都會自動著色。

General 分頁中的 Line Width 用於設定所有疊加層線條的繪製寬度:偵測方框、分割輪廓、軌跡方框與路徑,以及姿勢骨架。預設為 3 px,可設定為 1 到 10 px。各類別項目的 Thin 或 Thick 仍會設定該類別本身的寬度。與其他設定相同,頻道可以使用自己的值。

中繼資料延遲​

只有在視訊畫面顯示時其中繼資料已抵達瀏覽器,疊加層才會繪製。檢視器會將視訊延後視訊同步緩衝的時間(預設為 300 ms),讓中繼資料有時間抵達。如果應用程式傳送中繼資料的時間晚於緩衝所允許的範圍,即使視訊和訊息速率看起來正常,其疊加層也會消失。

當最近的訊息中至少有一半在其畫面之後才抵達時,圖塊的狀態列會顯示 Metadata late 標籤。選取該標籤即可查看:

數值說明
Arrives after its frame畫面顯示後經過多久其中繼資料才抵達,由此瀏覽器測得。
Video sync buffer此頻道目前生效的緩衝。
Late messages最近的訊息中,因抵達太晚而無法繪製的比例。

面板提供兩種方式,將緩衝提高到足以涵蓋測得延遲的值:

按鈕作用
Raise for this channel to N ms只設定此頻道的視訊同步緩衝。其他頻道會保留其設定。
Raise globally to N ms設定全域視訊同步緩衝。此值適用於所有沒有自己值的頻道。如果此頻道原本有自己的值,該值會被移除。
Use global value (V ms)當全域視訊同步緩衝已足以涵蓋測得延遲時,會取代 Raise globally to N ms 顯示。移除此頻道自己的值;全域值不會變更。

所有受影響頻道的視訊都會延後增加的時間。檢視器絕不會自行變更緩衝,面板也絕不會降低全域緩衝。變更後,由於瀏覽器會逐步切換到較大的緩衝,檢視器會等待幾秒鐘再重新判斷延遲。

當延遲抵達的訊息少於十分之一時,標籤就會消失。如果所需的緩衝會超過上限 4000 ms,面板便不會提供按鈕:應用程式必須更早傳送其中繼資料。如果因中繼資料不屬於已顯示的畫面而無法測得延遲,面板會說明此情況,同樣不會提供按鈕。

典型的情況是應用程式原封不動地轉送編碼後的輸入串流,並在解碼與推論完成後才傳送中繼資料,因為其視訊不會等待推論。

使用視訊檢視器確認:

  • 應用程式正在將影片傳送到預期的頻道。
  • 中繼資料即將傳送到對應的中繼資料通道。
  • 疊圖會與影片畫面對齊。
  • 輔助檢視會隨對應的影片影格清除並更新。
  • 瀏覽器播放功能運作正常。

Insight 視訊檢視器,顯示四頻道 WebRTC 網格。

視訊檢視器一次可以顯示一個或多個頻道,並提供分頁與頻道選擇控制項,以進行較大規模的多串流測試。

周邊裝置​

Peripherals(周邊裝置)會列出連接到開發板的相機與麥克風,並顯示每個裝置回報的內容。由開發板上的 SiMa Sentinel 探索這些裝置;Insight 讀取 Sentinel 的目錄。探索只會讀取裝置資訊:它絕不會開啟裝置或從裝置串流,因此裝置仍可供您的應用程式使用。只有相機預覽與麥克風測試會開啟裝置,而且只在其執行期間。

選取的開發板​

Insight 會使用一個選取的開發板,顯示於頁首。選取它即可開啟開發板設定,您可以在其中變更開發板、測試連線,或信任重新燒錄之開發板的主機金鑰。「周邊裝置」與「統計資料」都會使用此選擇。

開發板依下列順序選定:

  • 您輸入的開發板:開啟開發板設定,並提供其位址、SSH 連接埠與使用者。Use default(使用預設值)會回到自動選擇。
  • 安裝在開發板上的 Insight:Insight 會檢查其所執行的開發板。
  • Neat SDK:以 sima-cli sdk setup --devkit <ip> 配對的 DevKit。

Insight 會使用執行它之帳戶的金鑰透過 SSH 連線。它絕不會要求或儲存密碼。若驗證失敗,頁面會顯示可在開發板上授權金鑰的 ssh-copy-id 指令。開發板重新燒錄後會出示新的 SSH 主機金鑰;在您比對指紋並選取 Trust new key(信任新金鑰)之前,Insight 會拒絕連線。

相機與模式​

選取 Refresh(重新整理)以掃描開發板:Insight 會要求 SiMa Sentinel 重新掃描並等待結果。Sentinel 會透過媒體圖與 ISP 找到 MIPI 相機,並透過 V4L2 找到 USB 相機。若 Sentinel 未安裝、未執行,或版本過舊而無法回報周邊裝置,頁面會說明這一點;請使用 sima-cli neat install sentinel 安裝或更新。對於每部相機,頁面會顯示其身分、連線、裝置識別碼,以及相機回報的像素格式與解析度。任何相機的解析度都不會顯示影格率:MIPI 相機的影格率取決於其正在執行的感測器模式,在相機執行前無從得知,因此頁面以相同方式對待所有相機。Insight 不會設定影格率。每個模式處於下列三種狀態之一,像素格式與解析度選單會依狀態將其項目分組:

狀態意義
Available(可用)對於 MIPI 相機,開發板的相機 overlay 支援該相機的感測器、ISP 能輸出此模式的尺寸,且其像素格式為 NV12。對於 USB 相機,SiMa Sentinel 回報此模式為 uvcvideo 驅動程式上的 MJPEG,也就是 Neat 的 USB 相機輸入所讀取的格式。
Unverified(未驗證)在 ISP 於執行階段採用感測器尺寸的開發板(Platform 3.0)上,受支援感測器的某個 NV12 尺寸,而 SiMa Sentinel 無法確認 libcamera 會精確地以該尺寸串流,因為 libcamera 可能從較大的模式裁切出它。可選取並預覽以進行確認;但絕不會被預先選取。
Unsupported(不支援)上述任一條件不成立。USB 相機的其他模式為 Unsupported(不支援),並附上 SiMa Sentinel 的原因(其他像素格式或其他驅動程式),而 Sentinel 未給出判定的模式,因 Sentinel 無法判斷而為 Unsupported(不支援);若 Sentinel 版本過舊而無法檢查 USB 相機,則每個 USB 模式都會是 Unsupported(不支援),並提示您更新。MIPI 相機的原因會指出是哪一項:感測器不在開發板的相機 overlay 中;ISP 無法輸出該尺寸;格式不是 NV12;或在 ISP 於執行階段採用感測器尺寸的開發板(Platform 3.0)上,尺寸寬於 libcamera 串流的寬度(IMX477 為 4032 像素)。若 Sentinel 版本過舊而無法回報開發板的相機 overlay,則在您更新之前,每個模式都會是 Unsupported(不支援)。

每個模式的狀態由 SiMa Sentinel 判定並附上原因;Insight 顯示該結果。若 Sentinel 版本過舊而無法判定,Insight 會對 Sentinel 目錄中 MIPI 相機的模式套用相同的規則。只有會回報 USB 相機驅動程式的 Sentinel 才會檢查 USB 相機;使用較舊的 Sentinel 時(包括會判定 MIPI 模式的版本),在您更新 Sentinel 之前,每個 USB 模式都會是 Unsupported(不支援)。overlay 檢查會將 Sentinel 在開發板裝置樹中連結到該相機的感測器,與安裝在 /boot 下的 overlay 所支援的感測器進行比對。NV12 條件是關於 Neat 的 CameraInput 的固定事實,它輸出 NV12;Insight 不會查詢開發板上的 Neat。每部偵測到的相機都會顯示 Connected(已連線)標籤及其狀態:只要有任一模式為 Available(可用)即為 Available,否則只要有任一模式為 Unverified(未驗證)即為 Unverified(未驗證),否則為 Unsupported(不支援);Unverified 或 Unsupported 相機的面板會說明原因。Insight 不會指出是否有其他程式正在使用相機。

展開相機名稱旁的 Camera ID(相機 ID),即可查看並複製 Neat 應用程式開啟相機時所用的 ID(MIPI 為 CameraInput,USB 為 UsbCameraInput)。

預覽相機​

選取 Start preview(開始預覽)即可看到相機所拍攝的畫面。Insight 會透過與開發板的現有連線,在開發板上執行 GStreamer 管線:它會擷取所選的模式(MIPI 相機使用 libcamerasrc,USB 相機使用 v4l2src),將其縮放至寬度最多 640 像素、最高 15 fps,並傳回 JPEG 影格,頁面會在影格抵達時加以顯示。除了 GStreamer 本身之外,開發板上不需要其他任何元件;若缺少 gst-launch-1.0,預覽會指出需要安裝的套件(gstreamer1.0-tools、gstreamer1.0-plugins-base、gstreamer1.0-plugins-good,MIPI 相機另需 gstreamer1.0-libcamera)。

預覽會佔用相機,因此在您停止預覽之前,您的應用程式無法開啟該相機。Insight 不會在已被其他程序使用的相機上啟動預覽,也絕不會替您停止該程序。當您選取 Stop(停止)、離開頁面、重新整理掃描或變更選取的開發板時,擷取就會停止。關閉瀏覽器也會停止擷取。若 Insight 停止或重新啟動,開發板上的管線會在其輸出連線關閉後,於下一個影格時結束;若網路在沒有任何提示的情況下中斷,管線可能會持續佔用相機,直到開發板的 SSH 連線逾時為止。若要清除仍佔用相機的預覽,請在頁面仍顯示該預覽時選取 Stop(停止)、等待該逾時,或結束開發板上的 gst-launch-1.0 程序。

MIPI 相機可預覽其 Available(可用)與 Unverified(未驗證)模式。在 ISP 於執行階段採用感測器尺寸的開發板(Platform 3.0)上,感測器列出的尺寸仍可能不是 libcamera 會輸出的尺寸;此時預覽會指出 libcamera 實際串流的尺寸,供您選擇。USB 相機可預覽它以 MJPG 或原始格式(例如 YUYV)列出的任何模式,無論該模式是否為 Available(可用)。當開發板具有穩定的 /dev/v4l/by-id 路徑時,Insight 會透過該路徑開啟相機;否則會先向 SiMa Sentinel 確認相機的 /dev/videoN 節點是否仍是同一部相機,若不是,則請您重新整理。

預覽執行時,其旁的模式會顯示相機的影格率,此影格率可能高於預覽的 15 fps。預覽會向相機要求所選模式的影格率。對於 USB 相機,顯示的是該模式的影格率。對於 MIPI 相機,顯示的是感測器在此模式下能提供的最高影格率,標示為「up to」(最高),Insight 會在第一個影格抵達後向 SiMa Sentinel 取得此值,因此會在畫面出現數秒後才顯示;若 Sentinel 無法回報,則不會顯示影格率。

Camera setup(相機設定)​

讀取開發板裝置樹的 Sentinel 也會回報開發板針對相機的設定方式。執行 Refresh(重新整理)後,開發板設定會顯示開發板的 Model(型號),以及一行 Camera setup(相機設定),列出開發板所載入、用於設定相機感測器的 overlay。若使用較舊的 Sentinel,則不會顯示這些詳細資料。

麥克風​

重新整理也會列出 SiMa Sentinel 回報的每個 ALSA 擷取裝置,無論是 USB 或板載裝置。對於每個麥克風,Insight 會顯示其名稱、用來開啟它的 ALSA 裝置名稱(例如 hw:CARD=Nano,DEV=0),以及(對於 USB 音訊裝置)它可擷取的取樣格式、聲道數、位元深度與取樣率。板載音效卡不會回報這些資訊,頁面會說明這一點。

探索絕不會開啟音效裝置:Sentinel 會讀取 /proc/asound 與 sysfs。USB 麥克風拔除後再插回同一個連接埠時,會保持相同的身分,即使其音效卡編號改變亦然;插到其他連接埠時,則視為不同的麥克風。

若要聆聽麥克風,請選取 Test microphone(測試麥克風)並說話;音量表會顯示麥克風收到的聲音。完成後選取 Stop recording(停止錄音)(測試會在 30 秒後自行停止),Insight 會在頁面中播放錄音。Stop playing(停止播放)會結束播放。若錄音一直低於約 -60 dBFS,頁面會說明未收到任何聲音;請檢查麥克風的靜音按鈕與增益。只有測試會開啟裝置,而且只在錄音期間開啟。錄音前,Insight 會重新讀取 Sentinel 的目錄,並只從 Sentinel 指定的裝置錄音;若自上次掃描以來開發板的裝置有所變更,頁面會要求您先重新整理。若另一個應用程式已開啟麥克風,測試會遭拒,且不會干擾該應用程式。Insight 不會設定音訊輸入:Core 沒有音訊輸入。

統計資料​

「統計資料」會從 Sentinel(simaai-sentinel 常駐程式)讀取開發板本身的遙測資料,讓您能將應用程式行為與裝置行為區分開來。掉格可能來自串流路徑,但也可能與開發板功耗、晶片溫度、CPU 負載或記憶體壓力相關。

「統計資料」作用於選取的開發板,此開發板是在「周邊裝置」頁面所使用的同一個 Board(開發板)面板中選定。

Sentinel 常駐程式​

頁面會先回報 Sentinel 是否已安裝並在該開發板上執行,以及其版本。若未安裝,請選取 Install Sentinel(安裝 Sentinel):Insight 會直接在開發板上執行 sima-cli neat install sentinel,這需要開發板上有 sima-cli 以及無密碼 sudo。若缺少其中任一項,頁面會改為列出應在開發板 shell 中執行的指令。已安裝且正在執行的常駐程式絕不會從此處重新安裝,因為安裝程式會重新啟動它,進而中斷進行中的追蹤。

遭拒或失敗的安裝會以安裝結果回報,而不是當作讀取失敗:頁面會說明安裝並未完成,並提供開發板本身說明原因的句子——沒有 sima-cli、沒有無密碼 sudo、安裝程式以非零值結束,或安裝完成後服務仍未啟動——並將安裝程式的輸出收在 Installer output(安裝程式輸出)之下。

即時指標​

DevKit 檢視的版面與 Sentinel 本身的終端機儀表板(simaai-sentinel ops)相同。狀態列會顯示讀數是否為即時,以及目前的 Sentinel 工作階段何時開始,也就是工作階段平均值與峰值所涵蓋的範圍。Export CSV(匯出 CSV)會下載 Sentinel 為此工作階段保留之每個樣本的所有指標(最近 240 個,約八分鐘;若需要更長時間,請在 Runs(執行記錄)下錄製追蹤),而 Pause updates(暫停更新)會停止輪詢。其下方有六個分頁:

  • Overview(概覽):最熱溫度感測器、開發板功耗、CPU 使用率、Linux 記憶體、加速器記憶體(MLA 與 EV74 堆疊)與網路流量的圖表,下方收合著 All metrics(所有指標),依 Sentinel 的順序列出每個指標。
  • Thermal(溫度):最熱感測器隨時間的變化,接著以小型圖表呈現各感測器群組(MLA、APU、CVU、TOP、Board)。
  • Power(功耗):以數字呈現目前、工作階段平均與工作階段峰值功耗;呈現時間窗內的開發板功耗並標示工作階段平均值;以及堆疊的電源軌,讓頂端邊緣即為開發板總功耗。開發板功耗與能量為估計值(SoM 穩壓器電源軌讀數的總和)。
  • System(系統):CPU & memory(CPU 與記憶體)以圖表呈現 CPU 使用率、平均負載、Linux 記憶體、MLA 記憶體、EV74 記憶體,以及兩者堆疊的加速器記憶體。Per-core CPU(各核心 CPU)是負載熱圖,每個核心一列、時間窗中每 10 秒一欄,使用單一藍色,並附上每個核心的一分鐘平均值與最忙碌的核心;平均值超出核心的限制時會轉為琥珀色或紅色。
  • Storage & Network(儲存與網路):eMMC 使用量、網路接收與傳送、eMMC 讀取與寫入,以及其指標。
  • Runs(執行記錄):錄製追蹤,以及開啟、比較或刪除已儲存的執行記錄。比較功能會針對每筆選取的執行記錄,在它們共同涵蓋的時間範圍內疊加一個序列(總功耗、溫度最大值、CPU、負載、RAM、MLA 記憶體或 EV74 記憶體),並採用符合這些執行記錄的刻度,同時列出每筆執行記錄的最小值、平均值、中位數、P95、最大值、相對於基準的變化,以及能量;逐指標的比較則收合在其下方。

圖表使用固定刻度(百分比 0-100、溫度 40-90 °C,其他項目則上限為高於其峰值的整數),顯示 Sentinel 定義的警告與嚴重層級,並在您將游標停留時讀出該時間點的每個序列。顏色代表狀態:圖表在讀數超過警告或嚴重層級前為藍色,之後轉為琥珀色或紅色。當分頁中有指標超過門檻時,該分頁名稱會被標示。開發板無法量測的指標會顯示為破折號,絕不顯示為零。

圖表涵蓋 Sentinel 保留的整個時間窗,即 240 個樣本(約八分鐘):第一次讀取開發板時,以及輪詢暫停超過一分鐘後,Insight 會從 Sentinel 本身的快取取得這些樣本,然後在分頁開啟且可見時每兩秒新增一個樣本。當瀏覽器分頁被隱藏或離開此檢視時,輪詢也會停止。

若開發板在您檢視時停止回應,輪詢會停止,但面板會保留,顯示最後讀取的值以及開發板本身對失敗原因的說明,而不會清空頁面。選取不同的開發板則是另一回事:這會先清除所有內容,因此絕不會在另一個開發板的名稱下顯示某個開發板的數值。

追蹤與執行記錄​

追蹤會記錄某個工作負載期間的每個樣本。為其命名,可選擇加入備註與標籤,然後選取 Start trace(開始追蹤);Stop trace(停止追蹤)會將其儲存為開發板上的一筆執行記錄。Sentinel 一次只記錄一個追蹤,並會拒絕已儲存執行記錄已使用的名稱。已儲存的執行記錄會列出其狀態、開始時間、持續時間、Sentinel 在該執行期間量測到的能量,以及樣本數,且在常駐程式重新啟動後仍會保留。開啟執行記錄即可查看其摘要:它記錄的每個指標,連同當時生效的標籤、單位、群組與門檻,以及該執行記錄各樣本中的最小值、最大值與平均值。在執行期間任一時間點超過警告或嚴重門檻的指標會被標示。只擷取到一個樣本的執行記錄會以該樣本的時間點呈現,而不是從該時間點到其本身的範圍,且其平均值、最小值與最大值會標示為同一個單一值。執行記錄的中繼資料(名稱、備註、取樣間隔、Sentinel 版本,以及執行所在的開發板)位於其下方。

勾選執行記錄時會顯示工具列,列出已選取的數量以及可對其執行的動作。選取二至八筆並選取 Compare(比較),即可將指標排成列、執行記錄排成欄。Sentinel 會以一筆基準執行記錄來衡量比較結果,該基準會連同每筆執行記錄的備註一起標示在標頭中;其他每個儲存格都會顯示該指標在該執行中的平均值,旁邊附上相對於基準的百分比變化。小到無法顯示的變化會顯示為「<0.01%」,而不是顯示為完全沒有變化。

當儲存格以「—」取代變化值時,表示 Sentinel 未提供變化值,而表格會說明適用的是哪一個原因,而不是讓同一個破折號代表所有原因。將游標停留、以 Tab 鍵移至或點按「—」,即可在旁邊看到原因;螢幕閱讀器會連同破折號一起讀出原因。原因如下:

  • Sentinel 不會為其發布變化值。 執行總計(持續時間、能量與樣本數)會按每筆執行記錄回報,不附百分比。
  • 基準量測值為 0,而從 0 開始無法計算百分比變化。 基準確實量測了該指標;只是無法從零計算百分比。這在閒置基準的各核心 CPU 使用率中很常見,而這也往往是變化最大的地方:某個核心在基準中平均為 0%、在另一筆執行記錄中為 5.9%,此處會顯示「—」,因此請比較兩個值,而不是看變化值。
  • 基準執行記錄沒有該指標的值。 這是基準從未量測該指標的唯一情況。
  • 此執行記錄沒有該指標的值。 若某筆執行記錄有列出,但 Sentinel 沒有為其產生任何摘要,則整欄都會如此顯示,並在表格上方特別註明。

執行總計會以此檢視其他部分所用的單位顯示:Sentinel 以毫秒回報的持續時間會以秒顯示,能量則以焦耳顯示。

若某筆執行記錄在選取狀態下於開發板上被刪除,它的列會從清單中消失,也就不再有可用來取消選取的核取方塊,因此每次比較都會因它而失敗。Insight 會指出 Sentinel 已不再列出的任何已選取執行記錄,並提供將其從選取中移除的選項。

開啟與比較執行記錄有大小上限。Insight 最多從開發板讀取 12 MiB 的 Sentinel 回應,而已儲存的執行記錄會包含其記錄的每個樣本,每兩秒一個。長度超過約三小時的執行記錄無法開啟,長度合計超過約三小時的多筆執行記錄也無法一起比較。此時 Insight 會說明回應過大而無法讀取。對於想要開啟或比較的執行記錄,請錄製較短的追蹤。

比較會以一份逗號分隔的名稱清單要求其執行記錄,因此追蹤名稱不能包含逗號:該要求會被解讀為開發板上不存在的兩筆執行記錄,並以一筆沒有人選取的執行記錄名稱失敗。Insight 會在您開始追蹤時拒絕這類名稱,並指出任何名稱中帶有逗號的已儲存執行記錄,而不是讓 Compare(比較)因它而失敗。

來自您已離開之開發板的值​

讀取開發板需要一次 SSH 往返,因此回應可能會在您選取另一個開發板之後才抵達。選取新的開發板會取消所有仍在從前一個開發板傳來途中的內容:新的開發板會立即接受檢查,而來自舊開發板的延遲回應會被捨棄,不會顯示為新開發板的值。Stop trace(停止追蹤)會指出其追蹤是從哪個開發板讀取的,並會遭拒,而不會停止另一個開發板上的追蹤。當選取的開發板在其他地方(另一個瀏覽器分頁或 API 客戶端)被變更時,頁面上既有的值會標示其來源開發板,並提供重新讀取的方式。

Insight 主機​

在執行記錄下方,一個精簡面板會從 /api/metrics 回報 Insight 本身所執行的機器(SDK 容器,或安裝了 Insight 的開發板):CPU 負載、記憶體、磁碟,以及平台有提供時的溫度。它回答的問題與上方的開發板遙測不同,例如容器是否即將耗盡磁碟空間,而且每 15 秒讀取一次,而不是每兩秒。設定舊版 REMOTE_DEVKIT 組態時,此面板會改為回報該連線,並註明這一點。當端點回應中完全沒有讀數時,面板會直接說明,而不是列出各標籤並在旁顯示破折號。

NEAT 效能分析時間軸​

此分頁最後是效能分析時間軸,它會繪製 Insight 從執行中應用程式串流而來的效能分析事件中的數值欄位。它與 Sentinel 無關:它量測的是應用程式,而不是裝置。

GenAI Studio​

GenAI Studio 檢視可在開發板上執行語言、視覺和語音模型。它會與 Neat Apps 的 GenAI Studio 通訊,後者在開發板上以僅後端模式執行;Insight 會轉送所有呼叫,因此瀏覽器不會直接連線到開發板。

GenAI Studio 在開發板上執行。如下所述,可以在分頁中安裝、準備並啟動它;若要從開發板的 shell 啟動,請在 GenAI Studio 應用程式目錄中執行:

./run.sh

當分頁無法連線到或無法使用 GenAI Studio 時,只會顯示 Insight 所連線開發板(Insight 頁首中顯示的開發板)的設定頁面:在可用的 GenAI Studio 回應之前,不會顯示聊天、模型或設定。頁面列出三個步驟,各附簡短狀態:Install Neat Apps(NEAT_APPS_SKIP_DEPENDENCIES=1 sima-cli neat install apps,保留已安裝的 Core 和 Insight;從 develop 或 main 以外任何分支建置的 Insight 會安裝 apps@develop)、Prepare speech and search(執行一次 setup.sh:約 15 分鐘,開發板需要網際網路連線)以及 Start and connect(./run.sh,在此分頁收到 GenAI Studio 的回應後完成)。主要按鈕就是下一步要做的事:未安裝時為 Install GenAI Studio,已安裝但已停止時為 Start GenAI Studio,另有 Continue setup、失敗後的 Retry,以及 Stop setup 之後的 Resume setup。當 Insight 無法連線到開發板時,頁面會改為顯示開發板已中斷連線;請在 Board 選單中重新連線,再按 Try connection again。這些步驟在開發板上以單一工作執行,關閉頁面後仍會繼續,重新載入後會顯示目前進度。失敗的步驟會保持標示,並說明問題和處理方式;數分鐘沒有新輸出的步驟會提示此情況。每個步驟的記錄檔保存在開發板的 ~/.neat-insight/genai-setup/ 中。設定完成後,頁面會顯示 GenAI Studio is ready,按 Open Studio 即可開啟聊天。警告及其處理方式會收合在同一頁面中;修正設定的警告後,Run setup again 會重新執行 setup.sh 並重新啟動 GenAI Studio。Stop GenAI Studio 會在開發板上停止 GenAI Studio,從 shell 啟動的也一樣。Connection settings 只在 GenAI Studio 位址需要處理時出現:自訂位址、指向與 Insight 不同開發板的位址(頁面會提示此情況),或尚未設定位址。在 GenAI Studio 執行時,按 Settings 中 Connection 的 Manage installation 可開啟此頁面來更新、重新執行設定或停止它,按 Back to Studio 則返回聊天。若 GenAI Studio 是從與此 Insight 不同的頻道安裝,或是為比開發板上更舊的 Neat Library 建置,就會視為過期:分頁會顯示此狀況(即使 GenAI Studio 正在執行),按 Update GenAI Studio 會停止它、安裝相符的 Apps(先前的檔案會移至 /media/nvme/.prebuilt-apps-backup,已下載的模型會保留)、重新準備並啟動。若 GenAI Studio 是為同一系列中另一個 Neat Library 建置版本所建置,只會在安裝步驟下方列出警告。

設定前須將 NVMe 掛載至 /media/nvme。Apps 與 Python 虛擬環境安裝於 /media/nvme/prebuilt-apps;下載快取與暫存檔案存放於 /media/nvme/.cache/neat-genai-studio。

聊天第一次開啟時(包括設定完成後),頁面頂端會顯示簡短的 Tutorial,逐一介紹各項功能;隨時可用頁首的 Tutorial 再次觀看。頁首包含狀態標籤、Model 選擇器及旁邊的 New chat(鉛筆)、Read replies aloud、Think first(對一律直接回答的模型停用)和 Use my documents。工具列包含 Export chat、SiMaSentry Solutions(盾牌)、Benchmark(儀表)、Tutorial、Settings 和 Full screen。

狀態標籤以及需要處理時出現的橫幅,會顯示後端狀態和接下來應採取的動作:

  • Not set up:尚未設定 GenAI Studio 位址,設定頁面會顯示位址欄位。請輸入開發板上 GenAI Studio 的位址,例如 https://192.168.1.20:5000。優先使用在 Insight 頁首輸入的開發板;否則在開發板上,Insight 預設使用本機後端,在 Neat Development Environment 中則預設使用已配對的 DevKit。
  • Not running:開發板沒有回應,分頁會顯示設定頁面:已安裝時用 Start GenAI Studio 啟動,第一次使用時則由此頁面安裝。或在 Connection settings 中檢查位址。
  • Error:開發板傳回錯誤,或該位址不是 GenAI Studio。設定頁面會顯示開發板的訊息;若問題出在位址,還會顯示 Connection settings。
  • Starting:後端有回應,但模型伺服器尚未就緒。
  • Busy:正在載入模型。聊天與語音會等待載入完成。
  • Incompatible:開發板的 GenAI Studio API 版本與此 Insight 不相容。設定頁面會指出需要更新的那一方。
  • Ready:可使用聊天與語音。開發板上載入失敗的語音也會在此回報。

No model yet:當開發板沒有聊天或視覺模型(或只有無法執行的模型)時,聊天會直接說明,而不是讓訊息框維持灰色停用。Download Qwen3 VL 4B 會將視覺語言模型 simaai/Qwen3-VL-4B-Instruct-Autoround-a16w4 下載到開發板,並在按鈕下方顯示進度,然後載入模型;開發板查詢到下載大小後,按鈕會顯示該大小,若開發板的可用空間比它小則會發出警告。Browse models 會開啟 Settings 中 Models 的目錄搜尋,列出開發板可下載的模型。若開發板不允許下載,聊天會提示在開發板上 GenAI Studio 的 config.local.yaml 中設定 server.hub.allow_download: true,然後重新啟動 GenAI Studio;若開發板無法連線到 Hugging Face,聊天也會說明,Check again 可重新檢查。如果 Hugging Face 已將模型改名,下載失敗時會顯示新的 ID,並提議改為下載該模型。

Chat 是頁面中央的一段對話。可在訊息框輸入,或按下麥克風、說話後再按一次:語音會轉成文字並送出。使用可辨識影像的模型時,可附加照片、使用此瀏覽器的相機拍攝,或使用接在開發板上的相機拍攝:攝影機按鈕會列出開發板的相機(/dev/videoN),Take a picture 會將開發板拍攝的照片附加到下一則訊息。開發板相機需要可回報 board_camera 功能的 GenAI Studio;較舊版本會隱藏該按鈕,並在相機按鈕的提示中說明原因。回答會隨生成進度顯示,可用停止按鈕提前結束;New chat 會重新開始,讓模型忘記先前的對話。Read aloud 朗讀一則回答,Stop speaking 停止朗讀;Read replies aloud 朗讀每則回答,並在其餘內容仍在生成時,從第一句開始朗讀。第一次使用時,瀏覽器會要求麥克風和相機權限。

每則回答下方,Insight 會顯示在瀏覽器中測得的生成速度:

  • First token:從送出到回答第一段文字出現的時間。
  • Speed 和 Tokens:每秒 token 數與回答長度。若開發板有回報速度便使用該值,否則由 Insight 在瀏覽器中計算。
  • Total:從送出到回答結束的時間。
  • First audio、RTF 和 Voice(朗讀回答時):開始播放前的時間、即時係數(每秒語音所需的運算秒數;小於 1 表示快於即時)與語音引擎。
  • Transcribed 和 Language(語音問題下方):錄音結束到轉成文字的時間,以及辨識到的語言。

Vision(訊息框下方的眼睛圖示)會以可容納的最大尺寸(最多為螢幕高度的一半)顯示相機畫面,並在下方顯示最新回答和控制項,類似獨立版 GenAI Studio 的全螢幕視覺功能。選擇 This browser's camera 或 Board camera(開發板會針對每個問題拍攝新照片;Take a picture 可顯示照片以調整取景),輸入問題或選擇 What do you see?、Describe the scene in detail 或 Read any text in view,然後:

  • Ask 會針對目前照片提問一次。
  • Loop 會在每次回答後,針對新照片提出同一個問題,每次送出一個請求,回答間稍作停頓,直到按下 Stop。在循環中修改的問題會從下一張照片起生效。啟用 Read answers aloud 時,會先朗讀回答,再拍攝下一張照片。

模型變更或不再支援影像、開發板停止回應或開始其他操作、照片或回答失敗(會顯示原因)、開發板位址變更、關閉檢視或離開分頁時,循環也會停止。Vision 問題是獨立請求,不包含聊天記錄,其回答也不會加入聊天。檢視中的 Full screen 會使用整個螢幕;Esc 或 Close 可返回聊天。

Export chat 會將對話儲存為 .log 文字檔(neat-chat-<date>-<time>.log),頂端記錄匯出時間和模型,接著是每次發言;照片會顯示為 [image]。

SiMaSentry Solutions 會開啟三個透過 Insight 使用已載入聊天模型的示範應用程式:SiMaSentry-Med(臨床聊天與醫療影像檢視)、SiMaSentry-Safe(PPE 與危害檢查)和 SiMaSentry-Sec(安全監控影像分析與變化偵測)。其照片功能需要可辨識影像的模型。模型在開發板上執行,但這些應用程式的語音輸入使用瀏覽器本身的語音辨識,可能會將音訊傳送至線上服務(Chrome 會如此處理)。應用程式本身的 Home 按鈕、Back 或 Esc 可返回啟動器;Close 可返回聊天。

Benchmark 可測量開發板上的聊天模型回答得多快:Time to first word 是回覆開始前要等待的時間,Reply speed 是回覆產生的速度,單位為每秒 token 數(一個 token 約為一個單字的 ¾)。已載入的聊天模型會預先選取,若沒有已載入的模型則選取第一個模型,因此不需變更任何設定就能按 Run benchmark;若要比較,請再選取其他模型。Advanced options 包含 Runs(1 到 50,預設 5)、Output tokens(8 到 2048,預設 128)和 Prompt。需要載入模型的執行會先告知,並列出會卸載的模型;之後請從 Model 選單重新載入該模型。各模型依序執行,執行時會顯示進度和回覆,Stop 可結束執行。結果會顯示每個模型的兩個數字,並以標籤說明在聊天中的感受:大致來說,不到 1 秒感覺是立即回應,而多數人每秒約可閱讀 5 個 token。All numbers 列出平均速度、p90 速度、變異量、首字時間、回覆長度和執行次數,標示最快的數值,並以一行說明每一項;Each run 列出最後一個模型的每次執行。Run again 會重複測試,Change models 會回到選擇畫面,Download CSV 和 Download JSON 則儲存結果。

Use my documents 會根據開發板上的文件資料庫回答:開發板會尋找符合每個問題的段落,在模型回答前加入,並在回答下方註明所用章節(或表示沒有符合的內容)。Settings 中的 Documents 可查看資料庫內容、上傳 Markdown 檔案(取代現有文件)、重設為預設 SiMa 文件,或清空資料庫。View sections 會列出已匯入的來源檔案、章節(區塊)數,以及各章節的標題路徑與文字;可用 Filter sections… 尋找段落(最多前 2,000 個章節)。文件功能需要支援文件搜尋的 GenAI Studio,否則開關會停用並顯示原因。

Settings 會以對話方塊開啟在聊天畫面上方(按 × 或 Esc 關閉),並有四個分頁。Model 選單底部的 Manage models 會開啟 Models 分頁。

  • Models:先顯示開發板上的模型數量、使用中的模型、可保持載入的聊天模型數量和開發板的可用儲存空間,下方是兩份清單:On this DevKit,以及 Hugging Face 提供之模型的 Model catalog,後者可單獨捲動。每個模型都顯示類型(Chat、Vision 或 Speech)、大小和狀態(In use、Loaded、Loading…、On DevKit、Not downloaded、附進度的 Downloading to DevKit、Download incomplete 或 Can't run here,原因顯示在工具提示中)。第一次開啟時會填入目錄;Sync catalog 只需一次快速呼叫即可更新,不會下載模型檔案。模型的大小和說明會在該列出現時從卡片讀取。此瀏覽器會儲存清單,因此即使無法連線到 Hugging Face,仍可使用搜尋和類型篩選。目錄也有自己的搜尋框,不會影響 On this DevKit 清單。Download 可將模型放到開發板上;若開發板不允許下載,會說明如何允許。Load 和 Unload 可變更使用中的模型,橫幅會顯示載入進度。使用中的語音模型無法卸載,請載入另一個模型來取代。Model 選單可選擇由哪個已載入的聊天模型回答。按模型旁的箭頭可顯示說明和模型卡片連結;其中的 Remove from DevKit 會在確認後從開發板刪除已下載的模型檔案。僅適用於尚未載入且不是使用中語音模型的模型,若開發板拒絕,會顯示原因。
  • Replies & voice:System prompt 是每次聊天和 Vision 提問時一併傳送的指示。在您變更之前,欄位會顯示預設值:"You are a helpful assistant. Answer clearly and concisely. Use Markdown formatting when it helps. Answer the question in the language it was asked in." 編輯後即取代預設值;Reset to default 會恢復預設值,欄位留空時會傳送預設值(不會傳送空白提示)。分頁仍會補上一句話說明訊息是否含有照片,避免小型視覺模型誤判。Longest reply 設定回答的最大 token 數(32 到 2048,預設為 512,與獨立版 GenAI Studio 相同),以 max_tokens 傳送,不影響有獨立設定的基準測試。此瀏覽器會記住這兩項設定。 Think first 和 Read replies aloud 與頁首的開關是同一項設定。語音引擎、聲音和您說的語言也在此選擇,並會顯示使用中的語音辨識模型。
  • Documents:包含 Use my documents、開發板搜尋的文件、View sections、Upload Markdown、Restore default,以及 Remove documents 下的 Clear documents。
  • Connection:分頁連線到 GenAI Studio 的位址(開發板的連接埠 5000)。開發板本身在 Insight 頁首中選擇。Manage installation 會開啟設定頁面,Troubleshooting 說明如何重新啟動 GenAI Studio,並提供 Copy restart commands。

如果模型載入失敗或回答停止,請在開發板上重新啟動 GenAI Studio(先執行 ./run.sh stop,再執行 ./run.sh);這會釋放加速器,之後即可重新載入模型。Settings 中 Connection 的 Troubleshooting 也提供此說明。

系統資訊​

系統資訊面板會摘要 Insight 可見的環境。在 Neat 開發環境中,它可以顯示 SDK 與元件資訊、Insight 狀態、更新資訊,以及公開的連接埠對應,例如 mainUI 與 videoUI。

當 URL 與預設連接埠不符時,這是第一個應該檢查的地方。Insight 會讀取可用的連接埠對應,並在開啟檢視器時使用對應的 videoUI 連接埠。對於命令列工作流程,neat --json 會顯示相同的連接埠對應資訊。