Перейти до основного вмісту

Інтерфейс користувача

Insight організовано навколо завдань розробки, які ви виконуєте під час перевірки застосунку комп’ютерного зору: перегляд файлів, підготовка медіа, запуск джерел, перегляд результатів і стеження за станом середовища виконання.

Робочий простір​

Подання «Робочий простір» (Workspace) дає змогу переглядати файли проєкту, видимі для Insight. У середовищі розробки Neat це зазвичай /workspace; поза SDK Insight використовує поточний робочий каталог.

Використовуйте робочий простір, щоб:

  • Шукати й переглядати вихідні файли, конфігурацію, артефакти моделей і згенеровані результати.
  • Попередньо переглядати текст, код, Markdown, зображення та вибрані двійкові артефакти.
  • Переглядати архіви пакетів MPK без ручного розпакування.
  • Переглядати спеціалізовані артефакти розробки, як-от статистику MLA, маніфести MPK і файли послідовностей конвеєра.

Робочий простір особливо корисний, коли застосунок створює кілька результатів збірки та журналів. Він дає змогу переглядати ці артефакти в браузері, не виходячи з поточного сеансу розробки.

Подання «Робочий простір» в Insight із графом послідовності конвеєра та артефактами робочого простору.

Джерела медіа​

У поданні «Джерела медіа» (Media Sources) ви додаєте медіафайли для тестування застосунків і керуєте ними. Виберіть Import Media, щоб відкрити діалогове вікно імпорту, а потім виберіть одне з трьох джерел:

  • Local files: виберіть або перетягніть один чи кілька файлів зі свого комп’ютера. Завантажені файли H.264 MP4 нормалізуються для відтворення з низькою затримкою: B-кадри вимикаються, а частота кадрів джерела зберігається.
  • Catalog: імпортуйте відео з добірного відеокаталогу SiMa для повторюваних тестів на відомих ресурсах. Переглядайте ресурси за типом або назвою, шукайте в каталозі, фільтруйте за роздільною здатністю, частотою кадрів і кодеком, переглядайте відео, а потім імпортуйте один варіант або виберіть та імпортуйте кілька відповідних ресурсів.
  • YouTube: вставте URL звичайного відео YouTube, перевірте його, щоб побачити попередній перегляд, і виберіть час початку, тривалість кліпу та профіль виводу. Insight підтримує кліпи тривалістю 1, 3 або 5 хвилин у форматах 1080p30, 720p30 або 480p30. Імпортований кліп перетворюється на H.264, зручний для WebRTC, із вимкненими 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.

Значення, якого браузер не повідомляє, не показується. Браузери не повідомляють формат пікселів, тому він не показується.

Попередній перегляд працює лише у вашому браузері. Він не призначає потоковий слот і не запускає та не зупиняє потік; щоб транслювати камеру, призначте її слоту в Streaming (див. Використання вебкамери як джерела нижче). Якщо ця вкладка браузера вже публікує камеру, попередній перегляд показує це захоплення, не відкриваючи камеру вдруге, тож налаштування потоку не змінюються. Вибір іншої камери чи файлу, 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 в окремій вкладці браузера.

Потокові джерела​

Подання «Потокові джерела» (Streaming Sources) перетворює завантажені медіафайли на слоти живих джерел. Кожен слот джерела може надавати URL RTSP:

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

Ці URL правильні для застосунків, що працюють у тому самому контейнері SDK, що й Insight. Якщо застосунок працює на DevKit або іншій зовнішній машині, використовуйте IP-адресу хоста SDK і зіставлений порт хоста rtsp.tcp з neat --json.

Insight вибирає параметри кодека та транспорту залежно від призначеного медіа:

  • Медіа H.264 передається потоком через RTSP як H.264.
  • Медіа HEVC/H.265 передається потоком через RTSP як H.265.
  • Медіа MJPEG може передаватися потоком через RTSP як MJPEG або через HTTP як multipart MJPEG.

Кодек визначається вибраним медіа й не змінюється вручну в інтерфейсі. MJPEG через RTSP кодується в MJPEG, сумісний з RTP, тоді як HTTP MJPEG може зберігати кадри MJPEG для тестування HTTP у стилі камери.

Виберіть поле файлу в рядку джерела, щоб відкрити діалогове вікно Джерело для srcN. Його вкладка Відеофайл має той самий засіб перегляду папок, що й розділ «Джерела медіа»; виберіть відео й натисніть Призначити; щоб скасувати призначення, натисніть Очистити. Його вкладка Камера натомість призначає одну з ваших камер, а вкладка URL потоку підтягує мережевий потік (див. нижче). Ви можете запускати та зупиняти окремі джерела, автоматично призначати унікальні файли для слотів джерел, запускати кілька джерел одночасно, зупиняти всі потоки та копіювати URL-адреси потоків для використання в програмах або тестових середовищах.

Це подання корисне, коли вам потрібні повторювані вхідні потоки для застосунку комп’ютерного зору з виявленням об’єктів, сегментацією, відстеженням, класифікацією або GenAI.

Подання «Потокові джерела» в Insight із призначеними слотами джерел і попереднім переглядом джерела.

Подання «Потокові джерела» дає змогу призначати медіафайли слотам джерел, запускати або зупиняти потоки, копіювати URL активного потоку та попередньо переглядати вибране джерело, перш ніж під’єднати його до застосунку.

Використання вебкамери як джерела​

Вебкамеру, під’єднану до комп’ютера, на якому працює ваш браузер, можна використовувати як живе джерело, щоб тестувати застосунок зі справжньою камерою без попереднього копіювання файлу на плату. Щоб спершу перевірити камеру, перегляньте її в Media Sources (див. Попередній перегляд камери вище).

  1. Виберіть поле файлу слота джерела й перемкніть діалогове вікно Джерело для srcN на вкладку Камера.
  2. Виберіть Увімкнути доступ до камери — там або в розділі Камери у Media Sources. Браузер запитає дозвіл на камеру; Insight не може надати його замість вас. Після дозволу ваші камери з’являться у списку на вкладці.
  3. Виберіть камеру, Роздільну здатність і Бітрейт і натисніть Призначити, потім виберіть Почати. Рядок показує позначку [CAM] (відеофайли показують [VID]), браузер публікує камеру в Insight, а слот повідомляє Live.
  4. Скористайтеся Копіювати URL, щоб отримати URL RTSP, і спрямуйте на нього застосунок так само, як для файлового джерела.

Роздільна здатність за замовчуванням запитує в камери 1920x1080 і 30 fps. Натомість можна вибрати інший розмір і частоту кадрів, від 3840x2160 до 640x480 і до 60 fps, або Типово для камери. Список містить лише режими в межах найбільшого розміру й частоти кадрів, які повідомляє камера. Камера без вибраного режиму надсилає найближчий. Коли комп’ютер або мережа завантажені, браузер зберігає розмір і знижує частоту кадрів. Бітрейт задає найвищу швидкість, з якою браузер надсилає камеру. Авто залежить від роздільної здатності, 8.1 Mbps при 1920x1080 і 30 fps, або можна вибрати від 2 до 32 Mbps. Insight повторно кодує камеру для URL потоку, тому бітрейт потоку може відрізнятися. Щоб змінити роздільну здатність або бітрейт призначеної камери, знову відкрийте діалогове вікно, виберіть іншу Роздільну здатність або інший Бітрейт, натисніть Призначити, а потім Почати.

Список камер оновлюється, коли камери під’єднуються та від’єднуються. Джерела вебкамер публікують лише відео у форматі H.264.

Попередній перегляд біля списку джерел показує зображення з вашої локальної камери, поки триває захоплення. Це не те відео, яке отримала плата, і воно не показує затримки, яку бачить застосунок-приймач; якщо публікація не вдається, захоплення зупиняється, а попередній перегляд очищується.

Вибір Stop, від’єднання камери або закриття вкладки браузера завершує потік і повертає слот у стан Idle. Stop All, Reset і Auto Assign також звільняють усі вебкамери, оскільки кожна з цих дій забирає ці слоти: Reset і Auto Assign також очищують вибір камери, тож потім виберіть камеру знову. Вкладка браузера має залишатися відкритою, поки вебкамера публікує відео: саме вона надсилає відео до Insight. З тієї самої причини джерело вебкамери ніколи не відновлюється як Live після перезапуску Insight — виберіть камеру повторно й запустіть її знову.

Якщо запустити вебкамеру не вдається, повідомлення називає причину:

Що ви бачитеЩо робити
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 нічого не робить, спершу відкрийте Insight через HTTPS і довіртеся його сертифікату; див. Встановлення та оновлення.

Зовнішні потоки​

Будь-який інструмент 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). Копіювання URL-адреси залишається доступним; застосунки, як і раніше, читають rtsp://…/srcN незалежно від протоколу публікації.

Слот утримує той, хто першим почав публікацію. Запуск файлу на зовнішньому слоті або публікація в слот, у який Insight уже транслює, відхиляється, а не непомітно замінює запущений потік. Перехопити — квадратний значок зупинки в рядку зовнішнього слота — після підтвердження від’єднує зовнішнього відправника (і його споживачів); слот повертається в стан Idle з попередньо призначеним файлом. Відправник, який автоматично перепідключається, може знову зайняти слот у стані Idle, тому спершу зупиніть зовнішній інструмент, якщо хочете знову використати слот для файлу.

Панель попереднього перегляду джерела може показувати зовнішній слот наживо з власною частотою кадрів джерела; попередній перегляд вимкнено за замовчуванням (запам’ятовується для кожного браузера), і поки він вимкнений, нічого не декодується. Після вибору іншого зовнішнього слота показується індикатор «Підключення», доки не надійде перший кадр нового потоку. Це очікування здебільшого триває до наступного ключового кадру відправника, тому для потоків, які ви плануєте переглядати, задайте інтервал ключових кадрів близько секунди (-g 30 при 30 fps у прикладі вище; типові значення кодувальників часто становлять кілька секунд). Усередині контейнера SDK відправники та споживачі поза контейнером відображаються з адресою мосту Docker, а не зі своєю справжньою IP-адресою.

Автоматичне призначення, груповий запуск, зупинка всіх потоків і скидання ніколи не зачіпають зовнішній потік; у повідомленні про результат перелічено пропущені слоти. Скидання однаково очищає збережене призначення кожного слота, зокрема зовнішніх.

 Перегляд Insight «Джерела потокового відео» з двома зовнішніми слотами, один з яких позначено як такий, що має непідтримуваний кодек.

Зовнішні слоти показують відправника, його адресу та визначений формат потоку; комірка кодека стає бурштиновою, коли конвеєри Neat не можуть декодувати потік.

Підтягнуті потоки​

Потік, який уже існує в мережі, зазвичай IP-камеру, можна підтягнути в слот. Натисніть кнопку файлу слота в стані Idle, перемкніть діалогове вікно на URL потоку, введіть URL-адресу камери rtsp:// або rtsps:// і, якщо камера цього потребує, її ім’я користувача та пароль, а потім натисніть Підтягнути. Insight налаштовує mediamtx так, щоб він підтягував потік і без змін пересилав його на rtsp://…:8554/srcN; нічого не декодується й не перекодовується, а застосунки читають слот так само, як і будь-який інший.

Щойно надходять кадри, рядок показує Підтягнуто бірюзовим кольором, мітка показує хост джерела, роздільну здатність і частоту кадрів, а комірка кодека — кодек. До того рядок показує Підключення…. Якщо камера недоступна, рядок стає бурштиновим, Недоступно, із зазначенням причини; mediamtx продовжує повторні спроби, і рядок сам повертається до стану «Підтягнуто», коли камера знову стає доступною. Якщо камера відхиляє ім’я користувача або пароль, коли ви натискаєте Підтягнути, діалогове вікно показує повідомлення, а слот не змінюється. Рядок показує Помилка автентифікації червоним кольором, лише якщо камера починає відхиляти облікові дані пізніше, наприклад після того, як спочатку була недоступна, і залишається в цьому стані: натисніть Зупинити й підтягніть потік знову з правильними обліковими даними. Пароль зберігається лише в пам’яті; Insight ніколи не записує його на диск, не показує повторно й не записує в журнал, а підтягнутий слот не відновлюється після перезапуску Insight.

Зупинити в рядку звільняє підтягнутий потік, і слот повертається в стан Idle з попередньо призначеним файлом. Призначення файлу, запуск або перехоплення підтягнутого слота відхиляються. Зупинити всі і Скинути також зупиняють підтягнуті потоки, оскільки їх запустив 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 ГБ запасу, інакше запуск завершується помилкою з повідомленням про те, скільки місця потрібно. Очистьте перекодовані версії або звільніть місце, а потім запустіть джерело знову.

Джерела MJPEG не можуть змінювати частоту кадрів; для них елемент керування вимкнено.

Кнопка Очистити перекодовані версії на панелі інструментів «Джерела потокового відео» видаляє всі кешовані перекодовані версії (крім тих, які використовує джерело, що відтворюється); вони створюються знову під час наступного запуску.

Переглядач відео​

«Переглядач відео» (Video Viewer) показує потоки WebRTC з низькою затримкою від відеопересилача (video forwarder).

Для каналу N:

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

Наприклад, канал 0 використовує відео UDP 9000 і метадані UDP 9100; канал 1 використовує відео UDP 9001 і метадані UDP 9101.

Якщо відправник працює на DevKit або іншій зовнішній машині, використовуйте зіставлені діапазони портів хоста videoUDP і metadataUDP з neat --json. Обчислення каналів таке саме, але початкові порти можуть відрізнятися.

Переглядач може відображати метадані у вигляді накладок для стандартних вихідних даних візуалізації, зокрема для виявлення об’єктів, класифікації, оцінки пози, сегментації та відстеження. Перемикач Show Overlay для кожного типу метаданих приховує результат без зміни порогів довіри або стилів. Для оцінки пози можна окремо показувати маркери суглобів і назви орієнтирів. Пов’язані з кадром дані також можна показувати на окремій допоміжній панелі кожного каналу; першим вбудованим засобом відтворення є BlazePose 3D. Кілька допоміжних подань відображаються як вкладки, а панель можна згорнути, розгорнути або приховати. Опис протоколу див. у розділі Допоміжні візуалізації. Налаштування переглядача керують порогами довіри, областю інтересу, історією відстеження й буферизацією синхронізації. Якщо відеокадр не має метаданих певного типу, наприклад тому, що інференс працює повільніше за відео, переглядач продовжує малювати останню накладку цього типу до 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… після підтвердження видаляє власні значення всіх каналів; області інтересу зберігаються.

Налаштування зберігаються в браузері. Вони не передаються між браузерами чи комп’ютерами.

Кольори метаданих​

Накладки беруть кольори з однієї спільної палітри з 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 фіксує колір кожного класу, що не має власного запису. Без жодних записів усі класи забарвлюються автоматично.

Line Width на вкладці General задає товщину всіх ліній накладок: рамок виявлення, контурів сегментів, рамок і слідів треків та скелетів поз. За замовчуванням товщина становить 3 пкс, її можна задати від 1 до 10 пкс. Thin або Thick у записі для окремого класу, як і раніше, задає товщину ліній цього класу. Як і для інших налаштувань, канал може використовувати власне значення.

Запізнілі метадані​

Накладку буде намальовано, лише якщо її метадані надійшли до браузера на момент показу відеокадру. Щоб дати метаданим цей час, переглядач затримує відео на величину буфера синхронізації відео (за замовчуванням 300 мс). Якщо застосунок надсилає метадані пізніше, ніж дозволяє буфер, його накладки зникають, хоча відео й частота повідомлень виглядають справними.

Коли щонайменше половина останніх повідомлень надходить після свого кадру, у рядку стану плитки з’являється мітка 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 мс, панель не пропонує кнопки: застосунок має надсилати свої метадані раніше. Якщо запізнення не вдалося виміряти, бо метадані не належать до показаних кадрів, панель повідомляє про це й теж не пропонує кнопки.

Типовий випадок — застосунки, які пересилають закодований вхідний потік без змін і надсилають метадані лише після декодування та інференсу, адже їхнє відео не чекає на інференс.

Використовуйте «Переглядач відео», щоб переконатися, що:

  • Застосунок надсилає відео на очікуваний канал.
  • Метадані надходять на відповідний канал метаданих.
  • Напівпрозорі елементи накладаються на відеокадр.
  • Допоміжні подання очищуються й оновлюються разом із відповідним відеокадром.
  • Відтворення в браузері працює належним чином.

«Переглядач відео» в Insight із чотириканальною сіткою WebRTC.

«Переглядач відео» може показувати один або кілька каналів одночасно, а для більших багатопотокових тестів має елементи керування розбиттям на сторінки та вибором каналів.

Периферійні пристрої​

Подання «Peripherals» (Периферійні пристрої) показує камери й мікрофони, під’єднані до плати, і те, про що повідомляє кожен із них. Їх виявляє SiMa Sentinel на платі; Insight читає каталог Sentinel. Виявлення лише зчитує інформацію про пристрої: воно ніколи не відкриває пристрій і не передає з нього потік, тож пристрої залишаються доступними для ваших застосунків. Пристрій відкривають лише попередній перегляд камери та перевірка мікрофона, і тільки поки вони працюють.

Вибрана плата​

Insight працює з однією вибраною платою, яку показано в заголовку. Виберіть її, щоб відкрити налаштування плати, де можна змінити плату, перевірити з’єднання або довіритися ключу хоста перепрошитої плати. «Периферійні пристрої» та «Статистика» використовують цей вибір.

Плата вибирається в такому порядку:

  • Плата, яку ви ввели: відкрийте налаштування плати та вкажіть її адресу, порт SSH і користувача. Use default повертає автоматичний вибір.
  • Insight, встановлений на платі: Insight перевіряє плату, на якій працює.
  • Neat SDK: DevKit, сполучений за допомогою sima-cli sdk setup --devkit <ip>.

Insight під’єднується через SSH із ключами облікового запису, від імені якого працює. Він ніколи не запитує й не зберігає пароль. Якщо автентифікація не вдається, сторінка показує команду ssh-copy-id, яка авторизує ключ на платі. Після перепрошивання плата надає новий ключ хоста SSH; Insight відмовляється під’єднуватися, доки ви не порівняєте відбитки й не виберете Trust new key.

Камери та режими​

Виберіть Refresh (Оновити), щоб просканувати плату: Insight просить SiMa Sentinel повторно просканувати плату й чекає на результат. Sentinel знаходить камери MIPI через медіаграф та ISP, а камери USB — через V4L2. Якщо Sentinel не встановлено, не запущено або він надто старий, щоб повідомляти про периферійні пристрої, сторінка про це повідомляє; встановіть або оновіть його командою sima-cli neat install sentinel. Для кожної камери сторінка показує ідентичність, з’єднання, ідентифікатор пристрою, а також формати пікселів і роздільні здатності, про які повідомляє камера. Роздільні здатності жодної камери не показують частоту кадрів: частота камери MIPI залежить від режиму сенсора, у якому вона працює, тож до запуску камери вона невідома, і сторінка показує всі камери однаково. Insight не встановлює частоти кадрів. Кожен режим перебуває в одному з трьох станів; меню формату пікселів і роздільної здатності групують свої пункти за станами:

СтанЗначення
Available (доступний)Для камери MIPI: оверлеї камер на платі підтримують сенсор камери, ISP видає зображення розміру цього режиму, а його формат пікселів — NV12. Для камери USB: SiMa Sentinel повідомляє, що режим має формат MJPEG на драйвері uvcvideo, який читає вхід камери USB у Neat.
Unverified (неперевірений)На платі, де ISP бере розміри сенсора під час роботи (Platform 3.0), розмір NV12 підтримуваного сенсора, для якого SiMa Sentinel не може підтвердити, що libcamera транслює саме його, бо libcamera може обрізати його з більшого режиму. Його можна вибрати й переглянути для перевірки; він ніколи не вибирається заздалегідь.
Unsupported (не підтримується)Не виконується хоча б одна з цих умов. Інші режими камери USB мають стан Unsupported (не підтримується) із причиною від SiMa Sentinel (інший формат пікселів або інший драйвер), а режим, для якого Sentinel не дає висновку, має стан Unsupported (не підтримується), бо Sentinel не зміг цього визначити; якщо Sentinel надто старий, щоб перевіряти камери USB, усі режими USB залишаються Unsupported (не підтримується), і сторінка радить його оновити. Для камери MIPI причина вказує, яка саме: сенсора немає серед оверлеїв камер плати; ISP не може видавати зображення такого розміру; формат не NV12; або на платі, де ISP бере розміри сенсора під час роботи (Platform 3.0), розмір ширший за той, у якому транслює libcamera (4032 пікселі для IMX477). Якщо Sentinel надто старий, щоб повідомляти про оверлеї камер плати, усі режими залишаються в стані Unsupported (не підтримується), доки ви його не оновите.

Стан кожного режиму визначає SiMa Sentinel і подає причину; Insight показує цю відповідь. Якщо Sentinel надто старий, щоб це визначати, Insight застосовує те саме правило до режимів камер MIPI в каталозі Sentinel. Камери USB перевіряє лише Sentinel, який повідомляє драйвер камери USB; зі старішим, зокрема з тим, що визначає режими MIPI, усі режими USB мають стан Unsupported (не підтримується), доки ви не оновите Sentinel. Перевірка оверлеїв зіставляє сенсор, який Sentinel пов’язує з камерою в дереві пристроїв плати, із сенсорами, які підтримують оверлеї, встановлені в /boot. Умова NV12 — незмінний факт щодо CameraInput у Neat, який видає NV12; Insight не опитує Neat на платі. Кожна виявлена камера показує позначку Connected (підключено) і свій стан: Available (доступний), якщо доступний хоча б один її режим, інакше Unverified (неперевірений), якщо хоча б один її режим неперевірений, інакше Unsupported (не підтримується); для камери в стані Unverified або Unsupported панель камери пояснює чому. Insight не повідомляє, чи використовує камеру інша програма.

Відкрийте Camera ID (ідентифікатор камери) поруч із назвою камери, щоб переглянути й скопіювати ідентифікатор, за яким застосунок Neat відкриває камеру (CameraInput для MIPI, UsbCameraInput для USB).

Попередній перегляд камери​

Виберіть Start preview (Почати попередній перегляд), щоб побачити, що бачить камера. Insight запускає конвеєр GStreamer на платі через наявне з’єднання з нею: він захоплює вибраний режим (libcamerasrc для камери MIPI, v4l2src для камери USB), масштабує його до ширини не більше 640 пікселів із частотою до 15 кадрів/с і надсилає назад кадри JPEG, які сторінка показує в міру надходження. Окрім самого GStreamer, на платі нічого не потрібно; якщо gst-launch-1.0 відсутній, попередній перегляд називає пакети, які потрібно встановити (gstreamer1.0-tools, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, а також gstreamer1.0-libcamera для камер MIPI).

Попередній перегляд утримує камеру, тому ваш застосунок не може відкрити її, доки ви не зупините попередній перегляд. Insight не запустить його на камері, яку вже використовує інший процес, і ніколи не зупиняє цей процес замість вас. Захоплення зупиняється, коли ви вибираєте Stop (Зупинити), залишаєте сторінку, оновлюєте сканування або змінюєте вибрану плату. Закритий браузер також зупиняє його. Якщо Insight зупиняється або перезапускається, конвеєр на платі завершується на наступному кадрі, щойно його вихідне з’єднання закриється; після непомітної втрати мережевого з’єднання він може утримувати камеру, доки не мине тайм-аут SSH-з’єднання плати. Щоб звільнити камеру від попереднього перегляду, який досі її утримує, виберіть Stop (Зупинити), поки сторінка ще його показує, дочекайтеся цього тайм-ауту або завершіть процес gst-launch-1.0 на платі.

Камера MIPI показує попередній перегляд своїх режимів Available (доступний) і Unverified (неперевірений). На платі, де ISP бере розміри сенсора під час роботи (Platform 3.0), розмір із переліку сенсора може все ж не бути тим, який видає libcamera; тоді попередній перегляд називає розмір, у якому libcamera транслює, щоб ви могли його вибрати. Камера USB показує попередній перегляд будь-якого режиму, який вона пропонує у форматі MJPG або в необробленому форматі, як-от YUYV, незалежно від того, чи режим Available (доступний). Insight відкриває її за стабільним шляхом /dev/v4l/by-id, якщо він є на платі; інакше спершу запитує SiMa Sentinel, чи вузол /dev/videoN досі належить тій самій камері, і просить виконати Refresh (Оновити), якщо ні.

Поки працює попередній перегляд, режим поруч із ним показує частоту кадрів камери; вона може бути вищою за 15 кадрів/с попереднього перегляду. Попередній перегляд запитує в камери частоту вибраного режиму. Для камери USB показано частоту цього режиму. Для камери MIPI це найбільша частота, яку сенсор дає в цьому режимі, показана як «up to» (до); Insight запитує її в SiMa Sentinel, щойно надійде перший кадр, тому вона з’являється через кілька секунд після зображення; якщо Sentinel не може її повідомити, частоту не показано.

Camera setup (Налаштування камери)​

Sentinel, який читає дерево пристроїв плати, також повідомляє, як плату налаштовано для камер. Після Refresh (Оновити) налаштування плати показують Model (модель) плати та рядок Camera setup (налаштування камери), у якому названо оверлеї, що їх завантажує плата для налаштування сенсора камери. Зі старішою версією Sentinel ці відомості не з’являються.

Мікрофони​

Refresh (оновити) також показує кожен пристрій захоплення ALSA, про який повідомляє SiMa Sentinel, — 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 без пароля, інсталятор завершився з ненульовим кодом або завершився, а служба так і не запустилася, — і зберігає вивід інсталятора під Installer output.

Показники в реальному часі​

Подання DevKit скомпоновано так само, як власна термінальна панель Sentinel (simaai-sentinel ops). Рядок стану показує, чи показання актуальні в реальному часі і коли почався поточний сеанс Sentinel, — саме цей період охоплюють середнє та пікове значення за сеанс. Export 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, середнього навантаження, пам’яті Linux, пам’яті MLA, пам’яті EV74 та обох разом стеком як пам’яті прискорювачів. Per-core 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​

Під запусками компактна панель показує машину, на якій працює сам Insight, — контейнер SDK або плату, на якій встановлено Insight, — за даними /api/metrics: навантаження на CPU, пам’ять, диск і температуру, якщо платформа її надає. Вона відповідає на інше запитання, ніж телеметрія плати над нею, наприклад чи не закінчується місце на диску контейнера, і зчитується кожні 15 секунд, а не кожні дві. Якщо задано застарілу конфігурацію REMOTE_DEVKIT, ця панель натомість показує те з’єднання і повідомляє про це. Якщо кінцева точка відповідає взагалі без показань, панель повідомляє саме це, а не показує свої мітки з довгими тире.

Часова шкала профілювання NEAT​

Остання на вкладці часова шкала профілювання показує числові поля з подій профілювання, які Insight отримує потоком від запущеного застосунку. Вона не залежить від Sentinel: вона вимірює застосунок, а не пристрій.

GenAI Studio​

Подання GenAI Studio запускає мовні, візуальні та мовленнєві моделі на платі. Воно звертається до GenAI Studio з Neat Apps, що працює на платі в режимі лише серверної частини; Insight пересилає кожен виклик, тому браузер ніколи не підключається до плати безпосередньо.

GenAI Studio працює на платі. Вкладка може встановити, підготувати й запустити його, як описано нижче; щоб запустити його з оболонки на платі, виконайте в каталозі застосунку 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; збірка Insight з develop або будь-якої іншої гілки, крім main, встановлює 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 після помилки або Resume setup після Stop 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 зупиняє його на платі, навіть якщо його запущено з оболонки. Connection settings з’являється лише тоді, коли адреса GenAI Studio потребує уваги: власна адреса, адреса на іншій платі, ніж плата Insight (сторінка повідомляє про це), або адресу не задано. Manage installation на вкладці Connection у Settings відкриває цю сторінку під час роботи GenAI Studio, щоб оновити його, знову виконати налаштування або зупинити його, а Back to Studio повертає до чату. GenAI Studio, встановлений з іншого каналу, ніж цей Insight, або зібраний для старішої Neat Library, ніж на платі, вважається застарілим: вкладка повідомляє про це навіть під час його роботи, а 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: версія API GenAI Studio на платі не відповідає цій версії Insight. Сторінка налаштування називає компонент, який потрібно оновити.
  • Ready: чат і мовлення доступні. Тут також повідомляється про голос, який не вдалося завантажити на платі.

No model yet: коли на платі немає моделі чату чи зору (або є лише ті, які вона не може запустити), чат повідомляє про це, а не залишає поле повідомлення неактивним. Download Qwen3 VL 4B завантажує на плату модель зору й мови simaai/Qwen3-VL-4B-Instruct-Autoround-a16w4, показуючи перебіг під кнопкою, а потім активує її; щойно плата визначить розмір завантаження, кнопка показує його та попереджає, якщо на платі менше вільного місця. Browse models відкриває пошук каталогу в Settings, Models зі списком моделей, які плата може завантажити. Якщо плата не дозволяє завантаження, чат пропонує задати server.hub.allow_download: true у файлі config.local.yaml GenAI Studio на платі та перезапустити GenAI Studio; якщо плата не може з’єднатися з Hugging Face, чат повідомляє про це, а Check again перевіряє ще раз. Якщо Hugging Face перейменував модель, невдале завантаження називає новий ідентифікатор і пропонує завантажити модель під ним.

Chat — це одна розмова посередині сторінки. Введіть текст у поле повідомлення або натисніть мікрофон, скажіть щось і натисніть знову: слова буде розпізнано й надіслано як текст. Якщо модель розпізнає зображення, можна прикріпити фотографію, зробити її камерою цього браузера або камерою, підключеною до плати: кнопка відеокамери показує камери плати (/dev/videoN), а Take a picture прикріплює знімок із плати до наступного повідомлення. Камера плати потребує GenAI Studio, що повідомляє про функцію board_camera; у старішій версії кнопку приховано, а підказка кнопки камери пояснює причину. Відповіді з’являються в міру створення; кнопка зупинки завершує відповідь достроково, а New chat починає все заново, щоб модель забула розмову. Read aloud озвучує одну відповідь, а Stop speaking зупиняє озвучення; Read replies aloud озвучує кожну відповідь, починаючи з першого речення, поки решта ще генерується. Під час першого використання браузер запитує дозвіл на мікрофон і камеру.

Під кожною відповіддю Insight показує швидкість її створення, виміряну в браузері:

  • First token: час від надсилання до першого тексту відповіді.
  • Speed і Tokens: кількість токенів за секунду та довжина відповіді. Якщо плата повідомляє швидкість, використовується її значення; інакше 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 — як швидко надходить відповідь, у токенах за секунду (токен — це приблизно ¾ слова). Завантажена модель чату вже вибрана, а якщо жодної не завантажено — перша модель, тож Run benchmark працює без жодних змін; щоб порівняти моделі, виберіть ще кілька. Advanced options містить Runs (від 1 до 50, типово 5), Output tokens (від 8 до 2048, типово 128) і Prompt. Запуск, якому потрібно завантажити модель, спершу повідомляє про це й називає модель, яку буде вивантажено; після цього завантажте її знову з меню Model. Моделі запускаються по черзі, під час запуску видно перебіг і відповідь, а Stop завершує його. Результати показують обидва числа для кожної моделі з міткою про те, як це відчувається в чаті: орієнтовно менше 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) і має чотири вкладки. Manage models унизу меню Model відкриває вкладку Models.

  • Models: кількість моделей на платі, модель, що використовується, скільки моделей чату можуть залишатися завантаженими, і вільне місце на платі, а нижче два списки: On this DevKit і Model catalog з моделями, які пропонує Hugging Face; другий прокручується окремо. Кожна модель показана з типом (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 задає найбільшу кількість токенів у відповіді (від 32 до 2048, за замовчуванням 512, як в окремому GenAI Studio); значення надсилається як max_tokens і не змінює тест продуктивності, який має власне налаштування. Цей браузер запам’ятовує обидва налаштування. Think first і Read replies aloud — це ті самі налаштування, що й перемикачі в заголовку. Тут також вибирають рушій мовлення, голос і мову, якою ви говорите, і показано модель розпізнавання мовлення.
  • Documents: Use my documents, документ, у якому шукає плата, View sections, Upload Markdown, Restore default і Clear documents під Remove documents.
  • Connection: адреса, за якою вкладка звертається до GenAI Studio (порт 5000 на платі). Саму плату вибирають у заголовку Insight. Manage installation відкриває сторінку налаштування, а Troubleshooting пояснює, як перезапустити GenAI Studio, і має Copy restart commands.

Якщо модель не завантажується або відповіді припиняються, перезапустіть GenAI Studio на платі (./run.sh stop, потім ./run.sh); це звільняє прискорювач, після чого модель можна завантажити знову. Troubleshooting у Settings, Connection також містить цю вказівку.

Інформація про систему​

Панель інформації про систему узагальнює середовище, яке бачить Insight. У середовищі розробки Neat вона може показувати інформацію про SDK і компоненти, стан Insight, інформацію про оновлення та відкриті зіставлення портів, як-от mainUI і videoUI.

Це перше місце, яке варто перевірити, коли URL не відповідає типовому порту. Insight читає доступну карту портів і використовує зіставлений порт videoUI під час відкриття переглядача. Для роботи в командному рядку neat --json показує ту саму інформацію про карту портів.