Архітектура та проєктування репозиторію
Ця сторінка призначена для розробників, яким необхідно зрозуміти, як структурована бібліотека, де розташовані основні компоненти та як розширити структуру, не порушуючи її модульність і контракти середовища виконання.
Фреймворк проти середовища
Слово «Neat» використовується для позначення двох пов’язаних, але різних аспектів:
- Neat Library: бібліотека C++/Python і середовище виконання, що міститься в цьому репозиторії. Вона завантажує модель. створює пакети, формує конвеєри, перевіряє контракти, працює на апаратному забезпеченні Modalix і надає доступ до публічного API.
- Neat SDK / середовище: контейнеризований процес розробки, що охоплює роботу з фреймворком. зокрема, DevKit Sync, спільні робочі простори та інструменти для агентів.
Під час внесення змін до цього репозиторію оптимізуйте його для властивостей фреймворку, які підтримують як людей, так і агентів: чіткі API, детермінована поведінка, структуровані засоби діагностики, сувора перевірка та стабільні публічні контракти.
Для чого призначена ця бібліотека?
Основні користувачі
Розробники, які бажають:
- Створюйте конвеєри з використанням повторно використовуваних складових (без написання стандартного коду GStreamer).
- Забезпечте перевірку конвеєрів на ранніх етапах (з урахуванням вимог безперервної інтеграції) та швидко аналізуйте причини збоїв.
- Запускайте конвеєри та обробляйте кадри мовою C++ за допомогою
appsink. - За бажанням, можна передавати дані конвеєра через RTSP (за допомогою
gst-rtsp-server). - Надавайте код машинного навчання через вихідні дані, оптимізовані для тензорів, без необхідності писати складний код для GStreamer.
Права власності на пакет
Обраний основний артефакт є джерелом істини для пакетів Neat, LLiMa та Internal Debian, які встановлюються разом. Основний модуль використовує та передає цей артефакт без вибору або переписування версій залежностей. Пакет, що знаходиться поза межами артефакту, залишається у власності платформи; у разі виникнення несумісності платформу слід оновити, а не ремонтувати за допомогою основного модуля або LLiMa.
Типові робочі процеси
- Декодування/обробка: файл або RTSP -> демультиплексування/розбір -> декодування -> перетворення/налаштування параметрів -> appsink -> споживач, написаний на C++
- Перевірка: збірка + аналіз + попередня обробка (У СТАНІ ПАУЗИ), щоб на ранніх етапах виявити проблеми, пов’язані з узгодженням.
- Надання RTSP: передавайте синтезовані кадри в конвеєр RTSP-сервера, використовуючи
appsrc. - Адаптер тензорів зображень/відео: зображення/відео/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