リポジトリの アーキテクチャと設計
このページは、ライブラリの構造、各コンポーネントの役割、およびモジュールとランタイムの整合性を損なうことなくフレームワークを拡張する方法を理解する必要があるコントリビューターを対象としています。
EV74 ディスパッチャーの所有権
Graph と Model のビルドは、ペイロードのプリフライトが無効な場合でも、起動処理が戻る前、ディスパッチャーの初期化中に EV74 RPMsg チャネルを予約します。各ワーカーは個別のエンドポイントを所有します。同一プロセス内の Graph はディスパッチャーを共有し、最後のクライアントが終了した時点でそのチャネルが解放されます。アイドル状態が続いても解放されることはありません。
容量が枯渇すると、ビルドは infra.dispatcher_unavailable で失敗します。障害状態のディスパッチャーは新しい Graph を受け付けないため、再ビルドの前にそのクライアントをすべて終了してください。実装とチャネルロックは Core ではなく Neat Internals に属します。
フレームワークと環境
「Neat」という言葉は、関連性はあるものの、それぞれ異なる2つの問題に対して使用されます。
- Neat Library: このリポジトリにある C++/Python ライブラリおよびランタイムです。モデルを読み込みます。 パッケージ化、パイプラインの構築、コントラクトの検証、Modalix ハードウェア上での実行、およびパブリック API の公開を行います。
- Neat SDK / 環境: フレームワークを中心としたコンテナ化された開発ワークフロー。 DevKit Sync、共有ワークスペース、およびエージェントツールなど。
このリポジトリを変更する際は、人間とエージェントの両方をサポートするフレームワークのプロパティを最適化してください。具体的には、明確な API、決定的な動作、構造化された診断、厳格な検証、および安定した公開インターフェースです。
このライブラリの目的は何ですか。
主な利用者
以下のことを実現したい開発者:
- 再利用可能な構成要素からパイプラインを組み立てます(生のGStreamerのテンプレートコードを記述する必要はありません)。
- パイプラインを早期に検証し(CIに対応)、問題発生時に迅速に原因を特定できるようにする。
- C++で
appsinkを使用して、パイプラインを実行し、フレームを処理します。 - オプションとして、RTSP(
gst-rtsp-serverを介して)を通じてパイプラインを配信できます。 - テンソル処理に適した形式で出力することで、機械学習コードをパイプライン処理し、GStreamer の複雑な設定を記述することなく、機械学習モデルにデータを供給します。
パッケージの所有権
選択されたコア・アーティファクトは、Neat、LLiMa、および一緒にインストールされた Internals Debian パッケージの信頼できる情報源です。コアは、そのアーティファクトの完全性を消費し、依存関係のバージョンを選択または書き換えることなく、それを転送します。アーティファクト外のパッケージは、プラットフォームによって管理されます。互換性のないプラットフォームは、コアまたは LLiMa によって修復されるのではなく、更新する必要があります。
一般的なワークフロー
- デコード/取り込み: ファイルまたは RTSP → デペイロード/デマルチプレックス/解析 → デコード → 変換/キャプチャ → アプリシンク → C++ コンシューマー
- 検証: ビルド、解析、およびプレロール(一時停止)を実行し、早期にネゴシエーションの問題を検出します。
- RTSPストリームの送信:
appsrcを使用して、合成フレームをRTSPサーバーのパイプラインにプッシュします。 - 画像/動画テンソルアダプター: 画像/動画/RTSP -> デコード -> 変換/スケーリング ->
add_output_tensor(...)->Run::pull_tensors() - チュートリアル: 実行可能で、段階的に学習を進められるように構成されたチュートリアルは、チュートリアル から始めてください。
標準的なプロダクションパイプライン(信頼できる情報源)
このリポジトリにおける標準的な「本番環境の処理フロー」は次のとおりです。
入力 → 前処理 → MLA → 後処理。 正確な情報源は次の場所にあります。
tests/e2e_pipelines/obj_detection/sync_yolov8_test.cpp.
このテストが変更された場合は、READMEとアーキテクチャを更新して、ドキュメントの一貫性を保ってください。
メンタルモデル (ビジネスロジックとパイプラインの連携)
お客様のアプリケーションはビジネスロジックを保持し、フレームワークがパイプラインを構成する役割を担います。
Business logic
|
v
Nodes/Graph fragments -> GStreamer fragments -> caps negotiation -> runtime (Run)
| |
+-----------------------------------------------------------+
Sample / Tensor