メインコンテンツまでスキップ

ユーザーインターフェース

Insight は、ビジョンアプリケーションを検証する際に行う開発タスク、つまりファイルの確認、メディアの準備、ソースの起動、出力の表示、ランタイムの健全性の監視を中心に構成されています。

ワークスペース​

ワークスペース(Workspace)ビューでは、Insight から参照できるプロジェクトファイルを閲覧できます。Neat 開発環境では、通常これは /workspace です。SDK の外では、Insight は現在の作業ディレクトリにフォールバックします。

ワークスペースは次の用途に使用します:

  • ソースファイル、設定、モデルのアーティファクト、生成された出力を検索・閲覧する。
  • テキスト、コード、Markdown、画像、および一部のバイナリアーティファクトをプレビューする。
  • MPK パッケージのアーカイブを、手動で展開せずに確認する。
  • MLA の統計、MPK マニフェスト、パイプラインのシーケンスファイルなど、開発用の特殊なアーティファクトを表示する。

ワークスペースは、アプリケーションが複数のビルド出力やログを生成する場合に特に役立ちます。同じ開発セッションにとどまったまま、それらのアーティファクトをブラウザーから確認できます。

Insight のワークスペースビュー。パイプラインのシーケンスグラフとワークスペースのアーティファクトが表示されています。

メディアソース​

メディアソース(Media Sources)は、アプリケーションのテストに使用するメディアファイルを追加・管理する場所です。Import Media を選択してインポートダイアログを開き、次の 3 つのソースから 1 つを選択します:

  • Local files: コンピューターから 1 つ以上のファイルを選択するか、ドラッグ&ドロップします。アップロードされた H.264 MP4 は、元のフレームレートを維持したまま、B フレームを無効にした低遅延再生向けの形式に正規化されます。
  • Catalog: SiMa が厳選したビデオカタログからインポートし、既知のアセットで再現性のあるテストを行います。アセットの種類や名前で閲覧したり、カタログを検索したり、解像度、フレームレート、コーデックで絞り込んだり、ビデオをプレビューしたりしたうえで、1 つのバリアントをインポートするか、条件に一致する複数のアセットを選択してインポートします。
  • YouTube: 通常の YouTube 動画の URL を貼り付け、検証してプレビューを表示し、開始時間、クリップの長さ、出力プロファイルを選択します。Insight は、1080p30、720p30、または 480p30 で 1 分、3 分、または 5 分のクリップをサポートします。インポートされたクリップは、B フレームを無効にした WebRTC 向けの H.264 に変換されます。配信中のライブストリームはサポートされていません。通常の動画、またはアーカイブされたライブストリームを使用してください。

カタログと 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 のメディアソースビュー。選択した動画のプレビューとメディアのメタデータが表示されています。

メディアソースは、インポート、ファイル選択、プレビュー、メタデータの確認、削除の操作を 1 つのビューにまとめています。インポートしたカタログアセットは 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 に渡していません。Insight を独立したブラウザータブで開いてください。

ストリーミングソース​

ストリーミングソース(Streaming Sources)ビューは、アップロードされたメディアファイルをライブソーススロットに変換します。各ソーススロットは 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 ではカメラ形式の HTTP テスト向けに MJPEG フレームをそのまま保持できます。

ソース行のファイルフィールドを選択すると、srcN のソースが開きます。そのビデオファイルタブにはメディアソースと同じフォルダブラウザがあります。ビデオを選んで割り当てを行うか、クリアで割り当てを解除してください。カメラタブでは、代わりにいずれかのカメラを割り当て、ストリーム URLタブではネットワークストリームをプルします(以下を参照)。個々のソースを開始および停止したり、ソーススロット間で一意のファイルを自動的に割り当てたり、複数のソースをまとめて開始したり、すべてのストリームを停止したり、アプリケーションまたはテストハーネスで使用するためにストリームURLをコピーしたりできます。

このビューは、物体検出、セグメンテーション、トラッキング、分類、または GenAI ビジョンアプリケーション向けに、再現性のある入力ストリームが必要な場合に役立ちます。

Insight のストリーミングソースビュー。割り当て済みのソーススロットとソースのプレビューが表示されています。

ストリーミングソースビューでは、メディアファイルをソーススロットに割り当て、ストリームを開始または停止し、アクティブなストリームの URL をコピーし、アプリケーションに接続する前に選択したソースをプレビューできます。

ウェブカメラをソースとして使用する​

ブラウザーを実行しているコンピューターに接続されたウェブカメラを、ライブソースとして使用できます。そのため、最初にファイルをボードにコピーしなくても、実際のカメラでアプリケーションをテストできます。まずカメラを確認するには、メディアソースでプレビューしてください(上記の カメラをプレビューする を参照)。

  1. ソーススロットのファイルフィールドを選択し、srcN のソース ダイアログを カメラ に切り替えます。
  2. そこで、または Media Sources の カメラ で カメラアクセスを有効化 を選択します。ブラウザーがカメラの許可を求めます。Insight は代わりに許可できません。許可すると、タブにカメラが一覧表示されます。
  3. カメラ、解像度、ビットレート を選択して 割り当て を行い、開始 を選びます。行には [CAM] バッジが表示され(ビデオファイルは [VID])、ブラウザーがカメラを Insight に配信し、スロットは Live と表示されます。
  4. URL をコピー で RTSP 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 は約2秒以内に、このようなスロットを外部として表示します。行は読み取り専用になり、チップにはプロトコル、配信元のアドレス、そしてプローブ完了後には解像度とフレームレートが表示されます。ストリームが Neat パイプラインでデコードできないコーデック(H.264、H.265、MJPEG 以外)を使用している場合、コーデックのセルが琥珀色になり、警告が表示されます。URL のコピーは引き続き利用できます。アプリケーションは配信プロトコルに関係なく、通常どおり rtsp://…/srcN を読み取ります。

最初に配信した側がスロットを保持します。外部スロットでファイルを開始したり、Insight がすでにストリーミングしているスロットに配信したりすると、実行中のストリームが黙って置き換えられるのではなく、拒否されます。引き継ぎ(外部の行にある四角い停止アイコン)を使用すると、確認後に外部の配信元(およびその読み取り側)が切断され、スロットは以前のファイル割り当てを保ったままアイドル状態に戻ります。自動的に再接続する配信元はアイドル状態のスロットを再び取得する可能性があるため、スロットをファイル用に再利用する場合は、先に外部ツールを停止してください。

ソースプレビューパネルでは、外部スロットをソース本来のフレームレートでライブ表示できます。プレビューは既定でオフ(ブラウザごとに記憶されます)で、オフの間は何もデコードしません。別の外部スロットを選択すると、新しいストリームの最初のフレームが届くまで「接続中」インジケーターが表示されます。この待ち時間の大部分は配信元の次のキーフレームまでの時間なので、プレビューする予定のストリームはキーフレーム間隔を約1秒にしてください(上の例では 30 fps で -g 30。エンコーダーの既定値は数秒であることがよくあります)。SDK コンテナー内では、コンテナー外の配信元と読み取り側は、実際の IP ではなく Docker ブリッジのアドレスで表示されます。

自動割り当て、一括開始、すべて停止、リセットは、外部ストリームには一切影響しません。結果メッセージには、スキップされたスロットが一覧表示されます。リセットは引き続き、外部スロットを含むすべてのスロットの保存済み割り当てをクリアします。

 2つの外部スロットがある Insight ストリーミングソースビュー。そのうち1つには、サポートされていないコーデックのフラグが付いています。

外部スロットには、配信元、そのアドレス、プローブされたストリーム形式が表示されます。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フレームなし、参照フレーム1枚、1秒のクローズドGOP)に従い、要求された固定フレームレートで再エンコードされたビデオのコピーです。行にはエンコード中と表示され、プレビューパネルに進行状況バーが表示された後、ライブになってレンディションをストリーミングします。レンディションはメディアディレクトリ内の .renditions/ に保存され、renditions.json に記録されるため、次回の開始時には(Insightを再起動した後も含めて)再エンコードせずに再利用されます。ソースファイルを異なる内容のファイルに置き換えると、古いレンディションは無効になります。ソースファイルを削除すると、そのレンディションも削除されます。バイト単位で同一のファイル(たとえば別名のコピー)は 1 つのレンディションを共有し、そのレンディションは最後の 1 つが削除または置き換えられるまで保持されます。エンコードに失敗した場合、ソースファイルは変更されず、途中まで作成されたレンディションは残りません。

Insightはレンディションを一度に1つずつエンコードします。別のレンディションのエンコード中は、プレビューパネルにWaiting for another rendition to finish encoding… と表示され、そのエンコードが終わるとすぐにエンコードが始まります。エンコードの前に、Insightはメディアディレクトリの空き容量を確認します。レンディションの想定サイズに加えて1 GBの余裕が必要で、足りない場合は必要な容量を示すメッセージとともに開始が失敗します。レンディションをクリアするか空き容量を確保してから、ソースをもう一度開始してください。

MJPEGソースではフレームレートを変更できないため、コントロールは無効になります。

「ストリーミングソース」ツールバーのレンディションをクリアは、キャッシュされたすべてのレンディションを削除します(再生中のソースが使用しているものを除く)。削除されたレンディションは、次回の開始時に再作成されます。

ビデオビューアー​

ビデオビューアー(Video Viewer)は、ビデオフォワーダーからの低遅延の 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 ms 表示し続けます。同じタイプの新しいメッセージが届くと、オブジェクトを含まないメッセージであっても置き換えられます。メタデータのタイムスタンプはソースの PTS ミリ秒を使用し、利用できない場合は省略されます。

JPEG(RTP ペイロードタイプ 26)を受信するチャンネルも同じように表示されます。Insight は各 JPEG フレームを変更せずにブラウザーへ中継し、タイルのステータスには JPEG と表示され、オーバーレイは同じタイムスタンプに従います。H.264 のフレームと同様に、各フレームはオーバーレイが先に届くよう Video Sync Buffer の時間だけ保持されます。ROI エディターのプレビューは、まだ JPEG チャンネルを表示せず、Video Viewer でのみ表示できることを知らせます。

General 設定タブには Orientation 設定(None、Mirror、Flip Vertical、Rotate 180°)があります。この設定は、すべてのコーデックについて、ビューアー内でのみ映像とオーバーレイ(ラベルを含む)の向きを変えます。ストリームとメタデータの座標は変わりません。

グローバル設定とチャンネル設定​

ビューアーの設定には2つのスコープがあります。ビューアーページの設定ボタンを押すと、グローバル設定が開きます。タイルのステータスバーの右端にあるボタンを押すと、そのチャンネルの設定が開きます。ダイアログのタイトルにはチャンネル名が表示されます。

チャンネルはグローバル設定に従います。チャンネルに独自の値を設定するには、そのチャンネルの設定を開き、設定の横にある Own value をオンにして値を設定し、Save を選択します。チャンネル自身が設定した値は、グローバルの値より優先されます。Own value を再びオフにすると、チャンネルはグローバルの値に従います。クラスの色はエントリーごとに扱われます。チャンネルのダイアログにはグローバルのエントリーが from global として表示され、Override を使うと、そのうちの1つがチャンネルのエントリーとしてコピーされます。

グローバルのダイアログでは、設定の行の末尾にある琥珀色の警告アイコンが、チャンネルが独自に値を設定している設定を示します。そのツールチップには、該当するチャンネルの数が表示されます。アイコンを選択すると、それらのチャンネルが値とともに一覧表示されます。Use global value を使うと、Save を押さなくても、チャンネル独自の値がすぐに削除されます。Reset all channels to the global settings… を使うと、確認後に、すべてのチャンネルの独自の値が削除されます。ROI は保持されます。

設定はブラウザに保存されます。ブラウザ間やマシン間で共有されることはありません。

メタデータの色​

オーバーレイは、混み合ったフレームでも異なる識別対象を見分けられるように、40色からなる1つの共有パレットから色を選びます。最初の20色は最も区別しやすい色で、残りの20色は、同時に20を超える識別対象に色が必要な場合(すべてのチャンネルにわたるクラス、または1つのチャンネル上のトラックや姿勢)にのみ使用されます。何を識別対象とするかは、メタデータの種類ごとに定義されます。

メタデータの種類色分けの基準同じ色を共有する部分
object-detectionクラス labelボックス、ラベル、信頼度
segmentationクラス labelマスク、輪郭、ボックス、ラベル
classificationクラス label各ラベル行
trackingトラック idボックス、ラベル、履歴の軌跡
pose-estimation姿勢 idキーポイント、スケルトン、キーポイント名、ボックス、ラベル

色は、識別対象が初めて現れたときに割り当てられます。クラスラベルはすべてのチャンネルで1つの割り当てを共有するため、bicycle はどのタイルでも同じ色になり、person は検出、セグメンテーション、分類のいずれでも同じ色で表示されます。上書き設定はメタデータの種類ごとに適用されます。オブジェクト検出で person のエントリーを設定しても、セグメンテーションや分類の person の色は変わりません。トラックと姿勢はチャンネルごとに割り当てられます。id は1つのストリーム内でしか一意ではないためです。チャンネルが再接続されると、それらの色は最初から割り当て直されます。識別対象はいずれかのチャンネルで画面に表示されている間、その色を保ちます。5秒を超えて画面から消えると、その色は新しい識別対象に割り当てられることがあります。パレットの色数を超える識別対象が画面に表示されている場合、新しい識別対象は、表示中のものから色を奪うのではなく、最も長い間描画されていない識別対象の色を共有します。

id のないトラックと姿勢は、1つの中立色で描画されます。人物ごとまたはトラックごとに色を分けたい送信側は、id を含める必要があります。

オブジェクト検出とセグメンテーションの設定には、クラスごとの上書きを任意で指定できます。ラベルのエントリーは、そのクラスの色と線のスタイルを固定します。ラベルが default のエントリーは、独自のエントリーを持たないすべてのクラスの色を固定します。エントリーがない場合、すべてのクラスは自動的に色分けされます。

General タブの Line Width は、すべてのオーバーレイの線(検出ボックス、セグメントの輪郭、トラックのボックスと軌跡、姿勢のスケルトン)を描画する幅を設定します。既定値は 3 px で、1 px から 10 px までの範囲で設定できます。クラスごとのエントリーの Thin または Thick は、引き続きそのクラス自身の線の幅を設定します。他の設定と同様に、チャンネルは独自の値を使用できます。

メタデータの遅延​

オーバーレイは、ビデオフレームが表示される時点までにそのメタデータがブラウザに届いている場合にのみ描画されます。ビューアーは、メタデータがその時間内に届くように、ビデオ同期バッファー(既定では 300 ms)の分だけビデオを遅らせて表示します。バッファーで許容されるよりも遅れてメタデータを送信するアプリケーションでは、ビデオとメッセージレートが正常に見えても、オーバーレイが表示されなくなります。

直近のメッセージの少なくとも半分がそのフレームより後に届くと、タイルのステータスバーに Metadata late チップが表示されます。チップを選択すると、次の値が表示されます。

値意味
Arrives after its frameフレームが表示されてからそのメタデータが届くまでの時間。このブラウザで測定されます。
Video sync bufferこのチャンネルに適用されているバッファー。
Late messages直近のメッセージのうち、届くのが遅すぎて描画できなかったものの割合。

パネルには、測定された遅れをカバーする値までバッファーを引き上げる方法が2つあります。

ボタン効果
Raise for this channel to N msこのチャンネルのビデオ同期バッファーだけを設定します。他のチャンネルの設定は変わりません。
Raise globally to N msグローバルのビデオ同期バッファーを設定します。この値は、独自の値を持たないすべてのチャンネルに適用されます。このチャンネルが独自の値を持っていた場合、その値は削除されます。
Use global value (V ms)グローバルのビデオ同期バッファーがすでに測定された遅れをカバーしている場合に、Raise globally to N ms の代わりに表示されます。このチャンネルの独自の値を削除します。グローバルの値は変更されません。

影響を受けるすべてのチャンネルのビデオは、増えた時間の分だけ遅れて表示されます。ビューアーがバッファーを自動的に変更することはなく、パネルがグローバルのバッファーを小さくすることもありません。変更後、ブラウザは大きいバッファーへ徐々に移行するため、ビューアーは数秒待ってから遅れを再び判定します。

遅れて届くメッセージが10分の1未満になると、チップは消えます。必要なバッファーが上限の 4000 ms を超える場合、パネルにボタンは表示されません。その場合は、アプリケーションがメタデータをもっと早く送信する必要があります。メタデータが表示されたフレームに対応していないために遅れを測定できなかった場合も、パネルはその旨を表示し、ボタンは表示されません。

エンコードされた入力ストリームをそのまま転送し、デコードと推論が終わってからメタデータを送信するアプリケーションが典型的な例です。こうしたアプリケーションでは、ビデオが推論を待たないためです。

ビデオビューアーを使用して、次の点を確認します:

  • アプリケーションは、指定されたチャンネルにビデオを送信しています。
  • メタデータが、対応するメタデータチャンネルに送信されてきます。
  • オーバーレイはビデオフレームに合わせて配置されます。
  • 補助ビューは対応するビデオフレームとともにクリアおよび更新されます。
  • ブラウザでの再生は正常です。

4 チャンネルの WebRTC グリッドを表示している Insight のビデオビューアー。

ビデオビューアーは一度に 1 つ以上のチャンネルを表示でき、大規模なマルチストリームテスト向けに、ページ送りとチャンネル選択のコントロールを備えています。

ペリフェラル​

ペリフェラル(Peripherals)ページには、ボードに接続されたカメラとマイクと、それぞれが報告する内容が一覧表示されます。これらはボード上の SiMa Sentinel が検出し、Insight は Sentinel のカタログを読み取ります。検出ではデバイス情報を読み取るだけで、デバイスを開いたりストリーミングしたりすることは決してないため、デバイスは引き続きアプリケーションから利用できます。デバイスを開くのはカメラのプレビューとマイクのテストだけで、それも実行している間だけです。

選択中のボード​

Insight は、ヘッダーに表示される 1 台の選択中のボードを対象に動作します。これを選択するとボード設定が開き、ボードの変更、接続のテスト、再フラッシュされたボードのホストキーの信頼を行えます。ペリフェラルと統計はこの選択を使用します。

ボードは次の順序で選択されます:

  • 入力したボード: ボード設定を開き、アドレス、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 は、MIPI カメラをメディアグラフと ISP を通じて、USB カメラを V4L2 を通じて検出します。Sentinel がインストールされていない、実行されていない、またはペリフェラルを報告できないほど古い場合は、ページにその旨が表示されます。sima-cli neat install sentinel でインストールまたは更新してください。各カメラについて、ページには識別情報、接続、デバイス識別子、およびカメラが報告するピクセル形式と解像度が表示されます。どのカメラの解像度にもフレームレートは表示されません。MIPI カメラのレートは動作中のセンサーモードによって決まるため、カメラが動作するまでわからず、ページはすべてのカメラを同じように扱います。Insight はフレームレートを設定しません。各モードは次の 3 つの状態のいずれかで、ピクセル形式と解像度の各メニューの項目は、これらの状態ごとにまとめて表示されます:

状態意味
Available(利用可能)MIPI カメラでは、ボードのカメラオーバーレイがカメラのセンサーをサポートし、ISP がそのモードのサイズを出力でき、かつピクセル形式が NV12 です。USB カメラでは、SiMa Sentinel がそのモードを、Neat の USB カメラ入力が読み取る uvcvideo ドライバー上の MJPEG として報告しています。
Unverified(未検証)ISP が実行時にセンサーのサイズを取り込むボード(Platform 3.0)で、サポート対象センサーの NV12 サイズのうち、libcamera がそのサイズのままストリーミングすることを SiMa Sentinel が確認できないものです。libcamera がより大きいモードから切り出す可能性があるためです。確認のために選択してプレビューできますが、事前に選択されることはありません。
Unsupported(サポート対象外)上記のいずれかの条件を満たしていません。USB カメラのその他のモードは、SiMa Sentinel が示す理由(別のピクセル形式、または別のドライバー)とともに Unsupported(サポート対象外)となり、Sentinel が判定を示さないモードは、Sentinel が判断できなかったため Unsupported(サポート対象外)となります。USB カメラを確認できないほど古い Sentinel では、すべての USB モードが Unsupported(サポート対象外)のままとなり、更新するよう表示されます。MIPI カメラでは、どの条件かは表示される理由でわかります。センサーがボードのカメラオーバーレイに含まれていない、ISP がそのサイズを出力できない、形式が NV12 ではない、または ISP が実行時にセンサーのサイズを取り込むボード(Platform 3.0)で、サイズが libcamera のストリーミング幅(IMX477 では 4032 ピクセル)を超えている、のいずれかです。ボードのカメラオーバーレイを報告できないほど古い Sentinel では、更新するまですべてのモードが Unsupported(サポート対象外)のままになります。

各モードの状態は SiMa Sentinel が判定し、その理由も示します。Insight はその判定を表示します。判定を行えないほど古い Sentinel の場合、Insight は Sentinel のカタログにある MIPI カメラのモードに同じ規則を適用します。USB カメラを確認するのは、USB カメラのドライバーを報告する Sentinel だけです。それより古い Sentinel では、MIPI モードを判定するものも含め、Sentinel を更新するまですべての USB モードが Unsupported(サポート対象外)になります。オーバーレイのチェックでは、ボードのデバイスツリーで Sentinel がカメラに関連付けたセンサーを、/boot 以下にインストールされたオーバーレイがサポートするセンサーと照合します。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)、最大 15 fps、最大幅 640 ピクセルに縮小して 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 カメラでは、モードが Available(利用可能)かどうかにかかわらず、MJPG または YUYV などの raw 形式で一覧表示される任意のモードをプレビューできます。ボードに安定した /dev/v4l/by-id パスがある場合、Insight はそのパスでカメラを開きます。ない場合は、まず SiMa Sentinel にカメラの /dev/videoN ノードが同じカメラのままかを確認し、そうでなければ Refresh(更新)を求めます。

プレビューの実行中は、その横のモードにカメラのフレームレートが表示されます。このレートはプレビューの 15 fps より速い場合があります。プレビューは、選択したモードのレートをカメラに要求します。USB カメラでは、表示されるのはそのモードのレートです。MIPI カメラでは、このモードでセンサーが出せる最大のレートが「up to」(最大)として表示されます。最初のフレームが届いた時点で Insight が SiMa Sentinel にこの値を問い合わせるため、レートは映像の数秒後に表示されます。Sentinel がレートを報告できない場合、レートは表示されません。

Camera setup(カメラ構成)​

ボードのデバイスツリーを読み取る Sentinel は、ボードのカメラ向けの構成も報告します。Refresh(更新)の後、ボード設定には、ボードの Model(モデル)と、ボードが読み込むオーバーレイのうちカメラセンサーを構成するものを示す Camera setup(カメラ構成)の行が表示されます。古い Sentinel では、これらの詳細は表示されません。

マイク​

Refresh(更新)では、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 を選択します。Insight はボード上で直接 sima-cli neat install sentinel を実行します。これには、ボード上の sima-cli とパスワードなしの sudo が必要です。どちらかが欠けている場合は、代わりにボード上のシェルで実行するコマンドがページに表示されます。インストール済みで実行中のデーモンが、ここから再インストールされることはありません。インストーラーがデーモンを再起動し、実行中のトレースが終了してしまうためです。

拒否された、または失敗したインストールは、読み取りの失敗ではなくインストールとして報告されます。ページには、インストールが行われなかったことと、その理由を示すボード自身のメッセージ(sima-cli がない、パスワードなしの sudo が使えない、インストーラーが 0 以外で終了した、またはインストーラーは完了したがサービスが停止したまま)が表示され、インストーラーの出力は Installer output の下に保持されます。

ライブメトリクス​

DevKit ビューは、Sentinel 自身のターミナルダッシュボード(simaai-sentinel ops)と同様のレイアウトになっています。ステータス行には、読み取り値がライブかどうかと、現在の Sentinel セッションの開始時刻が表示されます。セッションの平均とピークは、このセッションを対象とします。Export CSV は、Sentinel がそのセッションについて保持している各サンプル時点のすべてのメトリクスをダウンロードします(最後の 240 件で約 8 分間。より長い期間が必要な場合は Runs でトレースを記録します)。Pause updates はポーリングを停止します。その下には 6 つのタブがあります:

  • Overview(概要): 最も高温の温度センサー、ボードの電力、CPU 使用率、Linux メモリ、アクセラレータメモリ(MLA と EV74 の積み上げ)、ネットワークトラフィックのグラフ。その下には All metrics が折りたたまれており、すべてのメトリクスが Sentinel の順序で表示されます。
  • Thermal(温度): 最も高温のセンサーの時系列と、各センサーグループ(MLA、APU、CVU、TOP、Board)の小さなグラフ。
  • Power(電力): 現在、セッション平均、セッションピークの電力の数値、セッション平均を示したウィンドウ全体のボード電力、および上端がボード合計になるように積み上げた電源レール。 ボード電力とエネルギーは推定値です(SoM レギュレータレールの読み取り値の合計)。
  • System(システム): CPU & memory は、CPU 使用率、ロードアベレージ、Linux メモリ、MLA メモリ、EV74 メモリ、およびその両方を積み上げたアクセラレータメモリをグラフ表示します。Per-core CPU は負荷のヒートマップで、コアごとに 1 行、ウィンドウの 10 秒ごとに 1 列を単一の青色で表示し、各コアの 1 分平均と最も負荷の高いコアを示します。平均がコアの制限値を超えると、琥珀色または赤色になります。
  • Storage & Network(ストレージとネットワーク): eMMC の使用量、ネットワークの受信と送信、eMMC の読み取りと書き込み、およびそれらのメトリクス。
  • Runs(実行): トレースを記録し、保存済みの実行を開く、比較する、または削除します。比較では、選択したすべての実行について、それらすべてに共通する期間にわたり、1 つの系列(総電力、温度の最大値、CPU、負荷、RAM、MLA メモリ、または EV74 メモリ)を、実行に合わせたスケールで重ねて表示します。各実行の最小値、平均値、中央値、P95、最大値、ベースラインに対する変化、エネルギーも表示されます。メトリクスごとの比較はその下に折りたたまれています。

グラフは固定のスケール(割合は 0-100、温度は 40-90 °C、それ以外はピークを上回るきりのよい数値まで)を使用し、Sentinel が定義する警告レベルと危険レベルを示し、ホバーした時点のすべての系列の値を表示します。色はステータスを表します。グラフは、読み取り値が警告レベルまたは危険レベルを超えるまでは青色で、超えると琥珀色または赤色になります。タブ内のメトリクスがしきい値を超えると、そのタブ名にマークが付きます。ボードが測定できないメトリクスは、ゼロではなく em ダッシュで表示されます。

グラフは、Sentinel が保持するウィンドウ全体である 240 サンプル(約 8 分間)を表示します。ボードを最初に読み取るときと、ポーリングが 1 分以上止まった後には、Insight が Sentinel 自身のキャッシュからサンプルを取得し、その後は、タブが開いて表示されている間、2 秒ごとにサンプルを追加します。ブラウザーのタブが非表示になったときや、ビューを離れたときにも、ポーリングは停止します。

閲覧中にボードが応答しなくなった場合、ポーリングは停止しますが、ページを空にするのではなく、パネルはそのまま残り、最後に読み取った値と、何が失敗したかについてのボード自身の説明を表示し続けます。別のボードを選択した場合はこれとは異なります。その場合はまずすべてがクリアされるため、あるボードの数値が別のボードの名前の下に表示されることはありません。

トレースと実行​

トレースは、ワークロードの前後のすべてのサンプルを記録します。名前を付け、必要に応じてメモとタグを追加して、Start trace を選択します。Stop trace を選択すると、トレースが実行(run)としてボードに保存されます。Sentinel が記録できるトレースは一度に 1 つだけで、保存済みの実行ですでに使われている名前は拒否されます。保存済みの実行は、状態、開始時刻、期間、その実行で Sentinel が測定したエネルギー、サンプル数とともに一覧表示され、デーモンを再起動しても保持されます。実行を開くと、その要約が表示されます。記録されたすべてのメトリクスが、当時有効だったラベル、単位、グループ、しきい値とともに、その実行のサンプルにおける最小値、最大値、平均値とあわせて表示されます。実行中のいずれかの時点で警告または危険のしきい値を超えたメトリクスにはマークが付きます。サンプルを 1 つしか取得できなかった実行は、その時点から同じ時点までの範囲としてではなく、取得された瞬間として報告され、その平均値、最小値、最大値は、すべて等しい単一の値として示されます。実行のメタデータ(名前、メモ、サンプル間隔、Sentinel のバージョン、実行されたボード)は、その下に表示されます。

実行にチェックを付けると、選択されている数と、それらに対して実行できる操作を示すツールバーが表示されます。2 つから 8 つを選択して Compare を選ぶと、メトリクスが行、実行が列に並びます。Sentinel は 1 つのベースラインの実行に対して比較を行います。ベースラインは、各実行のメモとともにヘッダーにマークされます。それ以外の各セルには、その実行におけるそのメトリクスの平均値と、その横にベースラインに対する変化率が表示されます。表示できないほど小さな変化は、変化なしとしてではなく「<0.01%」と表示されます。

セルに変化の代わりに「—」が表示されている場合、Sentinel は変化を示していません。表は、1 つの em ダッシュですべての理由を表すのではなく、どの理由に該当するかを示します。「—」にホバーするか、Tab キーで移動するか、タップすると、その横に理由が表示されます。スクリーンリーダーは、ダッシュとともに理由を読み上げます。理由は次のとおりです:

  • Sentinel publishes no change for it.(Sentinel がこの項目の変化を公開していない)実行の合計値(期間、エネルギー、サンプル数)は、割合なしで実行ごとに報告されます。
  • The baseline measured 0, and there is no percentage change from 0.(ベースラインの測定値が 0 であり、0 からの変化率は存在しない)ベースラインではそのメトリクスを測定していますが、0 からの割合が存在しないだけです。これはアイドル状態のベースラインにおけるコアごとの CPU 使用率でよく見られ、変化が最も大きくなりやすい箇所でもあります。ベースラインで平均 0%、もう一方の実行で 5.9% だったコアはここで「—」と表示されるため、変化ではなく 2 つの値を読んでください。
  • The baseline run has no value for that metric.(ベースラインの実行にそのメトリクスの値がない)ベースラインがそのメトリクスをまったく測定していない唯一のケースです。
  • This run has no value for that metric.(この実行にそのメトリクスの値がない)実行が一覧に表示されているものの、Sentinel がその実行について何も要約しなかった場合は、列全体がこの表示になり、表の上でその旨が示されます。

実行の合計値は、ビューの他の部分と同じ単位で表示されます。Sentinel がミリ秒で報告する期間は秒で、エネルギーはジュールで表示されます。

選択中の実行がボード上で削除されると、その行は一覧から消え、選択を解除するためのチェックボックスもなくなるため、すべての比較がその実行で失敗します。Insight は、Sentinel が一覧に含めなくなった選択中の実行の名前を示し、選択から外すことを提案します。

実行を開く操作と比較する操作には、サイズの上限があります。Insight がボードから読み取る Sentinel の応答は最大 12 MiB で、保存された実行には、記録されたすべてのサンプル(2 秒ごとに 1 つ)が含まれます。約 3 時間を超える実行は開くことができず、長さの合計が約 3 時間を超える複数の実行は一緒に比較できません。その場合、Insight は応答が大きすぎて読み取れなかったことを示します。開いたり比較したりする予定の実行は、短めのトレースとして記録してください。

比較では実行をカンマ区切りの名前のリストとして要求するため、トレース名にカンマを含めることはできません。含めると、要求はボードに存在しない 2 つの実行として解釈され、誰も選択していない実行の名前を挙げて失敗します。Insight は、トレースの開始時にそのような名前を拒否し、すでに保存されている実行にそのような名前がある場合は、Compare(比較)をその実行で失敗させるのではなく、その名前を示します。

離れたボードからの値​

ボードの読み取りには SSH の往復が必要なため、別のボードを選択した後に応答が届くことがあります。別のボードを選択すると、前のボードから届く途中のものはすべてキャンセルされます。新しいボードはすぐに確認され、古いボードからの遅れた応答は、新しいボードの値として表示されるのではなく破棄されます。Stop trace は、トレースを読み取ったボードの名前を示し、別のボード上のトレースを停止する代わりに拒否されます。選択中のボードが別の場所(別のブラウザータブや API クライアント)で変更された場合、ページにすでに表示されている値には取得元のボードのラベルが付き、再度読み取る手段が提供されます。

Insight ホスト​

実行の下にあるコンパクトなパネルには、/api/metrics から取得した、Insight 自体が実行されているマシン(SDK コンテナ、または Insight がインストールされているボード)の情報として、CPU 負荷、メモリ、ディスク、およびプラットフォームが公開している場合は温度が表示されます。これは、上にあるボードのテレメトリーとは別の問い(たとえば、コンテナのディスクが不足していないか)に答えるもので、2 秒ごとではなく 15 秒ごとに読み取られます。従来の REMOTE_DEVKIT 設定が有効な場合、このパネルは代わりにその接続について報告し、その旨を表示します。エンドポイントが読み取り値をまったく返さない場合、パネルはラベルを em ダッシュとともに並べるのではなく、その旨を表示します。

NEAT プロファイリングタイムライン​

タブの最後にあるプロファイリングタイムラインは、実行中のアプリケーションから Insight がストリーミングするプロファイリングイベントの数値フィールドをプロットします。これは Sentinel から独立しており、デバイスではなくアプリケーションを測定します。

GenAI Studio​

GenAI Studio ビューでは、ボード上で言語、視覚、音声モデルを実行できます。ボード上でバックエンド専用モードで動作する Neat Apps の GenAI Studio と通信します。Insight がすべての呼び出しを中継するため、ブラウザーがボードに直接接続することはありません。

GenAI Studio はボード上で動作します。以下のとおりタブからインストール、準備、起動ができます。ボードのシェルから起動する場合は、GenAI Studio アプリケーションディレクトリで次を実行します。

./run.sh

タブが GenAI Studio に接続できないか使用できない間は、Insight が接続しているボード(Insight のヘッダーに表示されるボード)のセットアップページだけが表示されます。使用できる GenAI Studio が応答するまで、チャット、モデル、設定は表示されません。ページには 3 つの手順が、それぞれ短い状態とともに表示されます。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 を押します。各手順はボード上で 1 つのジョブとして実行され、ページを閉じても続行し、再読み込みすると現在の状態が表示されます。失敗した手順はその状態のまま残り、原因と対処方法が表示されます。数分間新しい出力がない手順はその旨を表示します。各手順のログはボードの ~/.neat-insight/genai-setup/ に保存されます。セットアップが完了すると GenAI Studio is ready と表示され、Open Studio でチャットを開きます。警告は対処方法とともに同じページに折りたたまれています。セットアップの警告を解決した後に Run setup again を押すと、setup.sh を再実行して GenAI Studio を再起動します。Stop GenAI Studio はボード上の GenAI Studio を停止します。シェルから起動した場合も同様です。Connection settings は、GenAI Studio のアドレスに対応が必要な場合(独自のアドレス、Insight とは別のボードを指すアドレス(ページにその旨が表示されます)、またはアドレスが未設定の場合)にのみ表示されます。Settings の Connection にある Manage installation を押すと、GenAI Studio の実行中にこのページを開いて、更新、セットアップの再実行、停止ができます。Back to Studio でチャットに戻ります。この Insight と異なるチャネルからインストールされた GenAI Studio、またはボードの Neat Library より古い Neat Library 向けにビルドされた GenAI Studio は、古いものとして扱われます。タブは実行中でもそれを表示し、Update GenAI Studio を押すと GenAI Studio を停止して対応する Apps をインストールし(以前のファイルは /media/nvme/.prebuilt-apps-backup に移動し、ダウンロード済みのモデルは保持されます)、再度準備して起動します。同じ系列の別の Neat Library ビルド向けにビルドされた GenAI Studio は、インストール手順の下に警告を表示するだけです。

セットアップには /media/nvme にマウントされた 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 のアドレスが設定されておらず、セットアップページにアドレス欄が表示されます。https://192.168.1.20:5000 などの、ボード上の GenAI Studio のアドレスを入力します。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 は回答を1つ読み上げ、Stop speaking は読み上げを停止します。Read replies aloud はすべての回答を読み上げ、残りの生成中に最初の文から再生します。初回はブラウザーがマイクとカメラの使用許可を求めます。

各回答の下に、Insight がブラウザーで測定した生成速度を表示します。

  • First token: 送信から回答の最初のテキストまでの時間。
  • Speed と Tokens: 1秒あたりのトークン数と回答の長さ。速度はボードが報告すればその値を使い、それ以外は Insight がブラウザーで計算します。
  • Total: 送信から回答の終了までの時間。
  • First audio、RTF、Voice(回答の読み上げ時): 再生開始までの時間、リアルタイム係数(音声1秒あたりの計算秒数。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 は現在の写真について1回質問します。
  • Loop は回答のたびに新しい写真について同じ質問を繰り返します。リクエストは1回ずつ送られ、回答間に短い間隔を置き、Stop を押すまで続きます。ループ中に質問を編集すると次の写真から適用されます。Read answers aloud が有効なら、回答を読み上げてから次の写真を撮ります。

モデルが変更された、画像を扱えなくなった、ボードが応答しなくなった、別の操作を開始した、写真や回答の取得に失敗した(理由が表示されます)、ボードのアドレスが変わった、ビューを閉じた、タブを離れた場合もループは停止します。Vision の質問はチャット履歴を含まない独立したリクエストで、回答はチャットに追加されません。ビューの Full screen は画面全体を使い、Esc または Close でチャットに戻ります。

Export chat は会話を .log テキストファイル(neat-chat-<date>-<time>.log)に保存します。先頭にエクスポート時刻とモデル、その後に各発言が記録され、画像は [image] と表示されます。

SiMaSentry Solutions は、読み込み済みのチャットモデルを Insight 経由で使う3つのデモアプリを開きます。SiMaSentry-Med(臨床チャットと医用画像の確認)、SiMaSentry-Safe(PPE と危険の確認)、SiMaSentry-Sec(監視映像の分析と変化検出)です。画像機能には画像を扱えるモデルが必要です。モデルはボード上で動作しますが、これらのアプリの音声入力はブラウザーの音声認識を使うため、音声がオンラインサービスに送信される場合があります(Chrome は送信します)。アプリ内の Home ボタン、Back、Esc でランチャーに戻り、Close でチャットに戻ります。

Benchmark はボードのチャットモデルの応答速度を測定します。測定するのは、回答が始まるまでの待ち時間である Time to first word と、回答が出力される速さを1秒あたりのトークン数で示す Reply speed です(1トークンは単語の約¾)。読み込み済みのチャットモデルが最初から選択されており、読み込み済みのものがなければ最初のモデルが選択されるので、何も変更せずに Run benchmark を実行できます。比較するには、モデルを追加で選択します。Advanced options には Runs(1~50、既定値は5)、Output tokens(8~2048、既定値は128)、Prompt があります。モデルの読み込みが必要な実行では、先にその旨と、アンロードされるモデルが表示されます。アンロードされたモデルは、後で Model メニューから読み込み直してください。モデルは順に実行され、実行中は進行状況と回答が表示され、Stop で終了します。結果にはモデルごとに両方の数値が、チャットでの体感を示すラベルとともに表示されます。目安として、1秒未満なら即座に感じられ、多くの人が読む速さは1秒あたり約5トークンです。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 で閉じます)、4つのタブがあります。Model メニューの一番下にある Manage models を選ぶと Models タブが開きます。

  • Models: ボード上のモデル数、使用中のモデル、読み込んだままにできるチャットモデル数、ボードの空き容量の下に2つの一覧を表示します: 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 は1回の短い呼び出しで更新します。モデルファイルはダウンロードしません。モデルのサイズと説明は、行が表示されたときにカードから読み取ります。一覧はこのブラウザーに保存されるため、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 で既定値に戻り、欄を空のままにすると既定値が送信されます(空のプロンプトは送信されません)。小型の視覚モデルが誤判断しないよう、タブはメッセージに画像があるかどうかを示す1文を引き続き追加します。Longest reply は回答の最大トークン数を設定します(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 に同じポートマップの情報が表示されます。