engiAI
- Требования
- Что делает
- Лицензирование
Интерфейс программы engiAI доступен на русском языке: названия кнопок и полей в руководстве приведены так, как они отображаются в программе.
Содержание
- 1. Почему engiAI и метод ЗОНА-ПАРА
- 1.1. Что даёт метод по сравнению с классификацией целого кадра
- 1.2. Скорость: ИИ смотрит только на нужные вырезки
- 1.3. Какую точность ожидать: считаем по своей камере
- 1.4. Быстрый старт: настройки подобраны, зоны и модель за несколько кликов
- 2. Интерфейс программы за одну минуту
- 3. Камеры: подключение и настройка
- 3.1. Какие камеры поддерживаются
- 3.2. Окно КАМЕРЫ: добавить, переподключить, удалить
- 3.3. Вкладка Camera для HIKROBOT и SICK
- 3.4. Вкладка Camera для USB/веб-камеры
- 3.5. Сохранённые настройки камеры (наборы)
- 3.6. Сеть GigE и переподключение
- 4. Модель ЗОНА-ПАРА: от сетки до обученной модели
- 4.1. Как устроен метод: одна модель, класс на каждую зону
- 4.2. Создать модель
- 4.3. Отметить зоны на плате
- 4.4. Зафиксировать оригинал: область привязки
- 4.5. Снимок по зонам: норма и её синтетика
- 4.6. Синтетика брака в два нажатия: элемент смещается вместе с основанием
- 4.7. Аномалии зон: окно настроек
- 4.8. Оригинал с зонами: бляшки припоя и редактор зоны
- 4.9. Обучение модели
- 5. Инспекция
- 5.1. Назначить модель и проверить зоны
- 5.2. Порог узнавания зоны
- 5.3. Живой конвейер: плата в любом положении
- 5.4. По какому сигналу анализировать
- 5.5. Жёлтые зоны: выключить зону кликом
- 5.6. Что видно на экране и в консоли
- 6. Триггеры: внешний датчик на вход камеры
- 7. Выходы: браковщик, дискретные выходы камер и TCP
- 7.1. Справочник ВЫХОДЫ: контакты и проверка тестером
- 7.2. Окно OUTPUT: правило на зону
- 7.3. TCP-посылка роботу или ПЛК
- 7.4. Дискретный выход камеры
- 7.5. Звуковое оповещение: свой звук на каждую зону
- 7.6. Журнал срабатываний и база данных
- 8. Другие режимы и задачи
- 9. Настройки, консоль, требования и лицензия
- 10. Короткий чек-лист и поиск неисправностей
Как пользоваться руководством. Раздел 1 объясняет, зачем нужен метод и какой результат ожидать. Разделы 3–5 — путь от пустой программы до работающей инспекции, выполняйте их по порядку. Разделы 6–7 — подключение датчиков, выходов и TCP. Разделы 8–10 — остальные возможности, настройки и чек-лист.
1. Почему engiAI и метод ЗОНА-ПАРА
engiAI Ethernet System — программа визуальной инспекции для производственной линии. Она берёт кадр с промышленной или обычной камеры, режет его на зоны, проверяет каждую зону обученной нейросетью и превращает результат в действие: сигнал на дискретный выход камеры, TCP-посылку роботу или ПЛК, запись в журнал. Метод ЗОНА-ПАРА создан для изделий, у которых «правильно» в каждом месте своё: печатные платы, сборки, наборы деталей в ложементе, упаковка с раскладкой.
1.1. Что даёт метод по сравнению с классификацией целого кадра
Обычный подход — одна модель с двумя классами «normal / anomaly» на весь кадр или на все зоны сразу. На плате он не работает: пустое место под мостом BR1 в зоне 2 — брак, а такое же пустое место в другом углу платы — норма. Одна пара классов этого выразить не может. Другая крайность — отдельная модель на каждую деталь — это десятки обучений и десятки файлов в памяти.
ЗОНА-ПАРА решает это так: модель одна, а классов столько, сколько зон. Зона — прямоугольник вокруг одной детали. Класс — папка с картинками, на которых учится сеть. У каждой зоны своя пара: zone_001 (норма зоны 1, в примере — конденсатор C30) и zone_001_anomaly (брак зоны 1); zone_002 и zone_002_anomaly — мост BR1. При проверке зоны 1 программа смотрит только на её пару, ответы про зону 2 не участвуют. Классы аномалий необязательны: брак меняет вид зоны, и уверенность в «норме» падает сама; но с синтетикой (раздел 4.6) они делаются в одно нажатие и заметно повышают надёжность.

1.2. Скорость: ИИ смотрит только на нужные вырезки
Нейросеть никогда не получает целый кадр. Для каждой зоны вырезается только её прямоугольник, а номер зоны выбирает пару классов. Зоны одного кадра считаются параллельно (до четырёх потоков), результат всех зон уходит на экран одним пакетом, а не по одной зоне.
- Темп анализа задаётся по времени. Ползунок «Анализов в секунду (AI)» на вкладке Camera означает ровно N анализов в секунду, а не «каждый N-й кадр». Потолок — частота камеры и время инференса.
- GPU по умолчанию. Инференс идёт через ONNX Runtime с CUDA; если видеокарты NVIDIA нет, программа сама переключается на процессор и пишет об этом в статусе (GPU (CUDA) или CPU).
- Буферы без мусора. Память под вырезки выделяется один раз на поток и переиспользуется; время анализа не скачет от кадра к кадру.
- Модель под задачу. Для ЗОНА-ПАРА программа сама ставит размер входа 128 px и сеть YOLO11 размера «s»: вырезка зоны почти не масштабируется, а сети хватает ёмкости на сотни пар классов.
- Живой конвейер экономит кадры. Кадр уходит в очередь ИИ не чаще периода поиска платы; плата ищется и выравнивается один раз, и только затем режутся зоны.
- Показ не мешает анализу. Плитка перерисовывается не чаще 25 раз в секунду и только по новому кадру камеры, картинка уменьшается до размера плитки до вывода на экран, а журнал пишется в файл фоновым потоком. Интерфейс остаётся отзывчивым при 8-мегапиксельном кадре и сотнях зон.
В строке состояния над видео видны реальные цифры: fps и миллисекунды последнего анализа, а также Eff — сколько анализов фактически прошло за секунду.
1.3. Какую точность ожидать: считаем по своей камере
Программа не обещает «0,5 мм» безотносительно камеры и объектива. Чувствительность к смещению определяется тем, сколько пикселей приходится на миллиметр изделия, и той границей, которой обучена модель. Считается это в две строки:
минимальный заметный сдвиг ≈ 5 px ÷ (px/мм)
Число 5 px — нижняя граница синтетического сдвига в рекомендованных настройках аномалий (разброс нормы при этом 0–2 px). Настройки по умолчанию рассчитаны на 11 px/мм: при таком масштабе 0,5 мм — это 5–6 px, что и является целью, согласованной при разработке. Подставьте свои значения:
| Камера (ширина кадра) | Поле зрения 100 мм | 200 мм | 300 мм | 400 мм |
|---|---|---|---|---|
| 3264 px (USB 8 Мп, как на снимках) | 0,03 мм/px → сдвиг ≈ 0,15 мм | 0,06 → ≈ 0,3 мм | 0,09 → ≈ 0,45 мм | 0,12 → ≈ 0,6 мм |
| 2448 px (HIKROBOT 5 Мп) | 0,04 → ≈ 0,2 мм | 0,08 → ≈ 0,4 мм | 0,12 → ≈ 0,6 мм | 0,16 → ≈ 0,8 мм |
| 1920 px (SICK picoCam, HIKROBOT 2 Мп) | 0,05 → ≈ 0,25 мм | 0,10 → ≈ 0,5 мм | 0,16 → ≈ 0,8 мм | 0,21 → ≈ 1,0 мм |
1.4. Быстрый старт: настройки подобраны, зоны и модель за несколько кликов
Метод рассчитан на то, чтобы технолог без опыта в машинном обучении получил рабочую модель за одну смену. Всё, что можно было подобрать заранее, уже подобрано и хранится в базе программы:
- Зоны за минуту. В редакторе ROI протяните рамку вокруг детали и укажите размер зоны (в примере 256 px). Если деталей много и они стоят ровно, протяните рамку по всей плате — программа сама посчитает строки и столбцы сетки.
- Синтетика нормы и брака преднастроена. Кнопки «По умолчанию», «Смещение элементов» и «Цвет и краска» переключают готовые профили. Число файлов, кадров с камеры и ожидаемое время показываются до нажатия «Снять».
- Параметры обучения выставляются сами. После первого снимка по зонам программа ставит Image Size 128, Model Size s, Epochs 50, Batch 64, а при обучении отключает аугментации, которые конфликтуют с классами аномалий.
- Камера настраивается кнопкой. «Авто-настройка для ИИ (по кадру)» подбирает выдержку, усиление, гамму и баланс белого; для USB-камер есть «Автоподбор под формы» и «Зафиксировать параметры».
- Наборы настроек камеры. Подобранные параметры сохраняются под именем и переключаются из списка, камера принимает их сразу и запоминает в своей памяти.
- Один ONNX-файл на выходе. Обученная модель экспортируется автоматически и сразу назначается на инспекцию, дополнительных шагов нет.
Путь целиком: подключить камеру → создать модель → отметить зоны → зафиксировать область привязки → «Снимок по зонам» на нескольких исправных платах → «Аномалии зон» → TRAIN AI MODEL → вкладка Inspect. Дальше остаётся повесить на зоны звук, выходы и TCP. Что нужно для старта: компьютер с Windows 10/11 (для быстрой инспекции — видеокарта NVIDIA), камера, одна исправная плата и один раз интернет для установки среды обучения. Бракованные платы не нужны.
2. Интерфейс программы за одну минуту
Главное окно разделено на две части. Слева — живое видео с камер и строка состояния над ним. Справа — панель с вкладками, где находится всё управление. Границу между частями можно перетаскивать; размеры, положение всех окон и раскладку программа запоминает в своей базе.

Кнопки над видео
| Кнопка | Что открывает |
|---|---|
| СКРЫТЬ ВИДЕО | Убирает картинку с экрана. Анализ продолжается, экономится только отрисовка. |
| ВЫХОДЫ | Справочное окно: контакты дискретных выходов камер HIKROBOT и SICK, проверка тестером, подключение нагрузки (раздел 7.1). |
| КАМЕРЫ | Окно «Настройки подключённых камер»: добавление, переподключение, удаление камер и просмотр всех параметров, считанных с железа (раздел 3.2). |
| ТРИГГЕРЫ | Подключение внешнего датчика к дискретному входу камеры со схемой и распиновкой (раздел 6). |
| ОБЩИЕ МОДЕЛИ | Именованные наборы «камера → модель», назначаемые всему стенду одним выбором (раздел 8). |
| Раскладка (столбцы) | Сколько плиток камер показывать в ряд; «■» — одиночный режим (выбранная камера крупно), «Авто» — по корню из числа камер, «⛶» — камеры на весь монитор (выход Esc). |
| Показывать ROI зоны | Рисовать ли сетку зон поверх видео. |
Вкладки справа
| Вкладка | Назначение |
|---|---|
| Camera | Параметры выбранной камеры: выдержка, усиление, цвет, разрешение, авто-настройка для ИИ, наборы сохранённых настроек, темп анализа. Порога ИИ здесь больше нет — он только на вкладке Inspect. |
| OUTPUT | Браковщик: правила на зонах — TCP-посылки роботу/ПЛК, дискретные выходы камеры и звуковые оповещения, журнал срабатываний, база данных. |
| AI Model | Создание модели: папка, классы, сетка зон, снимок по зонам, аномалии зон, оригинал платы, настройки и запуск обучения. |
| Inspect | Рабочая вкладка: какая модель инспектирует, проверка зон и порог, живой конвейер, по какому сигналу снимать кадр, слоты много-модельной инспекции. |
| Settings | Язык интерфейса (14 языков), покупка лицензии, сохранение и загрузка настроек, запись видео. |
| Console | Журнал событий: подключение камер, ход обучения, срабатывания браковщика, предупреждения. На экране держится 800–1000 последних строк, всё целиком пишется в файлы logs\engiai-*.log. |
Строка состояния
Над кнопками показано состояние активной камеры: LIVE (Android): 3264×2448 [HD USB Camera] — тип, разрешение и имя; AI: WAITING или AI: GPU (CUDA) — на чём считает модель и сколько миллисекунд занял последний анализ; Net: всего … активная … Мбит/с — нагрузка на сеть от GigE-камер (зелёный до 40 % линка, оранжевый до 70 %, дальше красный). Полоса Exp Load показывает, какую долю кадрового интервала занимает выдержка: если она упёрлась вправо, камера не удержит заявленную частоту.
Плитка каждой камеры имеет свою шапку с именем, статусом LIVE | AI:ON и кнопкой переподключения. Правый клик по кадру открывает меню зоны, правая кнопка с перетаскиванием — панорама по увеличенному кадру.
3. Камеры: подключение и настройка
3.1. Какие камеры поддерживаются
| Тип | Как подключается | Что настраивается из программы |
|---|---|---|
| HIKROBOT MV-CS (GigE, USB3) | Нативный MVS SDK. Открывается строго по серийному номеру, порядок перечисления не важен. | Выдержка от 6 мкс, усиление в дБ, FPS, разрешение (AOI), уровень чёрного 0…4095, все узлы GenICam (авто-режимы, гамма, резкость, баланс белого R/G/B, цифровой сдвиг, переворот, GigE-пакеты). Параметры пишутся в UserSet1 самой камеры. Дискретный вход Line 0, выход Line 1, GPIO Line 2. |
| SICK picoCam (IDS uEye, GigE) | Драйвер uEye. Камера должна быть видна в IDS Camera Manager со статусом «настроена правильно». Серийник сверяется с камерой, потому что DeviceID у uEye меняется при каждом запуске. | Выдержка, усиление 0…100, FPS, разрешение, уровень чёрного 0…255, pixel clock, gain boost, аппаратные усиления каналов R/G/B, аппаратная гамма, раскладка Байера. Параметры пишутся в память камеры. Вход триггера на оптопаре, выход Flash (150 мА). |
| USB / веб-камера (в списке — Android) | DirectShow через OpenCV, различаются по moniker, поэтому две одинаковые камеры не путаются. | Разрешение до 8K, FPS, все свойства драйвера: яркость, контраст, насыщенность, оттенок, резкость, гамма, усиление, выдержка (с авто), фокус (с авто), баланс белого (с авто), компенсация засветки и др. Дискретных входов и выходов нет, доступен только TCP. |
| IP-камера RTSP | Ссылка вида rtsp://admin:пароль@192.168.1.64:554/…, добавляется вручную. | Выдержка, усиление, разрешение и FPS задаются в веб-интерфейсе самой камеры. В программе — зоны, модель и TCP. |
Жёсткого ограничения на число камер нет: плитки раскладываются сеткой любым числом; на реальных стендах работали восемь и девять камер одновременно. У каждой камеры свои модели, свои зоны, свой порог и свой темп анализа.
3.2. Окно КАМЕРЫ: добавить, переподключить, удалить
Галочки под списком действуют на выбранную камеру: Камера включена (иначе она отключается от устройства и пропадает с экрана), Показывать видео/зоны (только отрисовка, анализ работает всегда), AI включён для выбранной камеры. Кнопка Переподключить делает полное отключение и подключение с перезапуском потока ИИ и перезагрузкой моделей.
Правая часть окна показывает все параметры камеры, считанные с железа при подключении, с группами и единицами измерения: «Чьи параметры показать», Перечитать с камеры, Скопировать в буфер. Это только просмотр: изменить параметры можно на вкладке Camera.
3.3. Вкладка Camera для HIKROBOT и SICK
Вкладка работает с камерой, плитка которой выделена синей рамкой. Программа при подключении ничего не записывает в камеру: камера — источник истины, а ползунки подтягиваются к её значениям. Записать настройки можно только осознанно кнопкой Сохранить параметры.
Блок «Hikrobot: параметры камеры (GenICam)»
Показывается только то, что камера отдаёт. Строки: Авто-экспозиция (Off / Once / Continuous), Авто-усиление, Гамма и режим гаммы, Резкость, Оттенок, Насыщенность, Авто-баланс белого, Баланс белого по каналам, Цифровой сдвиг, Уровень чёрного включён, Ограничение FPS включено, Переворот по горизонтали и вертикали, GigE: размер пакета, GigE: межпакетная задержка, GigE: лимит полосы, Тестовое изображение. Кнопка Перечитать параметры с камеры перестраивает таблицу.
Блок «ЦВЕТ ИЗОБРАЖЕНИЯ»
Раскладка Байера (Авто / BGGR / RGGB / GRBG / GBRG), Saturation 0…200 %, Gamma 0,30…3,00, Contrast 50…200 %, кнопка сброса. Программная обработка применяется ко всем потребителям кадра: показ, запись, инференс и снимки для обучения, поэтому картинка при обучении и при инспекции одинакова. Для HIKROBOT раскладка берётся из формата пикселя камеры, для цветных SICK — с сенсора и уточняется по первому кадру.
| Параметр | Что делает | На что влияет |
|---|---|---|
| Анализов в секунду (AI) | верхний предел темпа инспекции, 1…200 | меньше — ниже нагрузка на видеокарту; не зависит от подключения камеры |
| Порог ИИ | на вкладке Camera не задаётся | порог узнавания зоны — только на вкладке Inspect (раздел 5.2), один на камеру |
| Exposure | время экспозиции | короче — меньше смаз движущихся изделий; ноль недопустим |
| Gain / Gain boost | усиление сигнала матрицы | поднимает яркость, но добавляет шум |
| Pixel clock (SICK) | тактовая частота сенсора | меняет диапазоны FPS и выдержки, они перечитываются |
| FPS | частота кадров в свободном режиме | в режиме триггера не используется |
| Ширина / Высота | размер кадра (AOI) | меньше кадр — выше частота и меньше трафик |
3.4. Вкладка Camera для USB/веб-камеры
Для USB-камер вкладка показывает блок «USB-камера: разрешение, FPS и свойства». Свойства драйвера, которые камера не отдаёт, не показываются; границы полей заданы программой, потому что DirectShow диапазонов не сообщает.
3.5. Сохранённые настройки камеры (наборы)
Блок «Сохранённые настройки камеры» показывается для USB, SICK и HIKROBOT. Подобрав параметры под изделие, сохраните их под именем: под другую плату или другое освещение достаточно выбрать набор из списка.
- Сохранить как… — читает текущие значения с камеры и спрашивает имя набора. Если имя занято, предлагает перезаписать.
- Выбор набора в списке сразу пишет параметры в камеру и закрепляет их: для USB — в базу, для SICK и HIKROBOT — в файл параметров и в память камеры (UserSet1 / EEPROM). Затем панель перечитывает значения с железа и показывает, сколько параметров принято, а сколько отклонено.
- Пересохранить перезаписывает выбранный набор текущими значениями, Переименовать и Удалить действуют только на запись в базе, параметры в камере не меняются.
Что входит в набор: у USB — разрешение, FPS, свойства драйвера и авто-режимы; у SICK — усиление, выдержка, FPS, уровень чёрного, pixel clock, gain boost, баланс белого R/G/B, аппаратная гамма и программный цвет; у HIKROBOT — усиление, выдержка, FPS, уровень чёрного и все узлы GenICam. Размер кадра промышленных камер в набор не входит: его смена перезапускает захват. Наборы общие для всех камер одного типа, поэтому на стенде из одинаковых камер один набор ставится на каждую.
3.6. Сеть GigE и переподключение
- Размер GigE-пакета HIKROBOT выставляется автоматически оптимальным при открытии; вручную его можно поправить в блоке GenICam. Jumbo-кадры 8164–9000 снижают нагрузку, при рвущихся кадрах ставьте 1500 и увеличивайте межпакетную задержку.
- Строка Net считает нагрузку от каждой камеры по её собственным данным (размер полезной нагрузки × частота) и сверяет с фактическим входящим трафиком сетевых карт. Заметное расхождение означает потерю кадров или посторонний трафик. Виртуальные адаптеры и NDIS-фильтры (GigEVision, uEye, Npcap) из подсчёта исключены.
- Если камера видна, а поток не идёт, нажмите Переподключить (в окне КАМЕРЫ или на плитке). Обычно причина — пропускная способность сети или USB.
- SICK picoCam при закрытии дескриптора теряет настройки; если набора в самой камере нет, программа применяет файл параметров и предлагает нажать «Сохранить параметры», чтобы записать их в камеру.
4. Модель ЗОНА-ПАРА: от сетки до обученной модели
4.1. Как устроен метод: одна модель, класс на каждую зону
Модель ЗОНА-ПАРА — это обычная классификационная сеть YOLO11, у которой классов столько, сколько зон, плюс необязательные классы аномалий. Класс — это папка внутри train и val. Все папки программа формирует сама; вручную создавать ничего не нужно. Так выглядит папка модели из примера после обучения:



Файлы real_…jpg — настоящие вырезки с камеры (пишутся и в train, и в val), syn_…jpg — синтетика, edit_…jpg — снимки из редактора зоны. В примере после съёмки нескольких плат: zone_001 — 502 файла в train и 111 в val, zone_001_anomaly — 680 и 144, zone_002 — 813 и 181, zone_002_anomaly — 340 и 60.
Программа распознаёт модель как «плату» автоматически, по наличию классов вида zone_NNN. Номер класса — сквозной номер зоны в сетке (1…N). Отсюда главное правило метода:
4.2. Создать модель
4.3. Отметить зоны на плате

Красные зоны: исключить зону из синтетики одним щелчком
На вкладке AI Model щёлкните левой кнопкой по уже созданной зоне прямо на видео: зона станет красной и не будет участвовать в снимке по зонам и в аномалиях. Повторный щелчок возвращает её. Счётчики файлов в окнах синтетики пересчитываются сразу, а надпись «выкл N» над кадром показывает, сколько зон выключено. Список красных зон хранится по камере и модели; на вкладке Inspect эта же зона остаётся обычной (там свои, жёлтые зоны — раздел 5.5).
4.4. Зафиксировать оригинал: область привязки
Зоны инспекции размечены по одному положению платы. Чтобы на линии можно было подсунуть другую плату со сдвигом и поворотом, программа запоминает оригинал: живой кадр и область привязки — участок платы с деталями, по которому изделие ищется в каждом новом кадре. Найдя область, программа переносит на новую плату зоны инспекции. Так работает съёмка, синтетика и инспекция.


| Модель совмещения | Когда выбирать |
|---|---|
| Авто (рекомендуется) | Плата совмещается жёстко (сдвиг, поворот, масштаб); перспектива подключается только если она сходится заметно лучше. Точность на небольшой области привязки — 1–2 px. |
| Жёсткая | Камера смотрит строго сверху, плата лежит плоско. Самый устойчивый вариант, если область привязки маленькая. |
| Перспектива | Камера под углом или плата наклонена. Нужна крупная область с точками по всей ширине, иначе гомография «косит». |
Кнопка Оригинал с зонами открывает сохранённый оригинал с сеткой и номерами зон (раздел 4.8). Найденная плата проверяется на здравый смысл: площадь от 0,5 до 2 площадей оригинала, выпуклый четырёхугольник, опорные точки должны занимать не меньше четверти области по каждой оси — иначе результат отбрасывается, и в консоли пишется «плата не найдена».
4.5. Снимок по зонам: норма и её синтетика
Кнопка ЗОНА-ПАРА: снимок по зонам делает главное: режет живой кадр на зоны, кладёт вырезку каждой зоны в её класс zone_NNN и добавляет синтетику нормы. Синтетика нормы — это разброс съёмки, а не дефект: плату положили чуть не так, свет чуть другой, сенсор шумит.

| Настройка | Что делает и что стоит по умолчанию |
|---|---|
| Синтетических вариантов на каждую зону | Сколько синтетических файлов создать на одну вырезку. Рекомендуется 20, 0 — только оригинал, максимум 500. |
| Снимки по времени: каждый вариант с нового кадра камеры | Включено, период 800–1200 мс (не меньше выдержки). Каждый вариант берётся с нового живого кадра: реальный шум сенсора, вибрация и мерцание света вместо нарисованных. |
| Каждый вариант также в val с вероятностью, % | 20 %. Оригинал попадает в val всегда: у Ultralytics каждый класс обязан быть в обеих папках. |
| Обучать в оттенках серого | Общий флаг модели: цвет убирается из нормы, аномалий и инспекции. Смешивать цветные и серые файлы в одной модели нельзя, программа предупредит. |
| Сдвиг, px · куда | Окно зоны сдвигается по целому кадру на 0…2 px в отмеченных направлениях (← → ↑ ↓); недостающая полоска берётся у соседней области платы, вырезка остаётся ровной. Галочка все направления даёт по файлу на каждое направление, одно случайное — один файл. |
| Поворот, ° · куда | По умолчанию выключен: на плате, зафиксированной по области привязки, поворота нет, а включение размывает границу с браком. «влево / вправо», «все направления / одно случайное» — как у сдвига. |
| Масштаб, % · уменьшение / увеличение | По умолчанию выключен. Две галочки — две стороны: уменьшение (<100) и увеличение (>100, окно зоны берёт соседей из кадра). Каждая отмеченная сторона — свой файл. |
| Яркость / Контраст / Гамма | Случайное значение из диапазона на каждый вариант: яркость 88…112, контраст 88…112 %, гамма 98…102 % (на снимке); в профиле «Смещение элементов» свет шире, чтобы не стал признаком. |
| Шум (сигма) / Размытие | Зерно сенсора 3…8 уровней, лёгкий расфокус 0,4…0,8 px. |
| Колонка «общий» | С галочкой вид входит в общий файл вместе с остальными; без неё создаёт отдельный файл «оригинал + только этот вид». Чем больше отдельных, тем больше файлов на вариант. |


4.6. Синтетика брака в два нажатия: элемент смещается вместе с основанием
Наблюдение, на котором построена синтетика. Модель обучается особенно хорошо, когда в качестве брака ей показывают не нарисованное пятно, а сам инспектируемый элемент вместе с элементами платы вокруг него: линиями шелкографии, дорожками, цветом и текстурой основания. Программа уменьшает кадр зоны до размера элемента, а затем сдвигает или поворачивает эту область, дозаполняя край соседними пикселями кадра. В результате элемент стоит не на своём месте относительно основания: ровно то, что видит контролёр при реальном браке, с реальным шумом сенсора, реальным светом и реальной платой.
Норма и аномалия одной зоны отличаются только положением элемента относительно основания. Всё остальное одинаково, поэтому сеть учится связи «элемент ↔ плата», а не оттенку пятна или освещению.
Два нажатия
Больше ничего настраивать не нужно: ни рисовать брак, ни искать дефектные платы. Дальше — TRAIN AI MODEL.
До и после: чего программа добивается




Папки аномалий такими, какими их видит пользователь
Сравните с папками нормы из раздела 4.5: разница только в положении детали относительно основания.


Маркировка деталей: почему царапина «жирная» и как это настраивается
На корпусах деталей есть маркировка — надписи и штрихи толщиной 1–2 px в кадре. От партии к партии она меняется: другой шрифт, надпись на конденсаторе повёрнута, часть символов стёрта. Если синтетический дефект «царапина» рисовать такой же тонкой линией, сеть не сможет отличить её от штриха маркировки и от шума сенсора и начнёт браковать исправные платы с другой партией деталей.
Синтетика ЗОНА-ПАРА закрывает это с двух сторон. Во-первых, основной брак — смещение элемента — переносит маркировку вместе с корпусом, поэтому надпись не становится признаком: она одинаково выглядит и в норме, и в аномалии. Во-вторых, рисованная линия / царапина по умолчанию жирная (⅛ зоны, не тоньше 3 px) и заведомо не похожа на штрих маркировки. Толщина теперь задаётся явно: поле Толщина линии, px (0 = авто) действует на линию и крест.
Рисованные дефекты (прямоугольник, круг, линия, «пропал элемент», размытое пятно и другие) собраны в сворачиваемой группе Синтетические дефекты поверх вырезки. По умолчанию она свёрнута и выключена: на плате главный брак — смещение. Включайте её для конкретных задач: залитая площадка, лишняя капля, стёртая маркировка.
| Параметры фигур | Что задаёт |
|---|---|
| Размер: от … до, % от зоны / px | Размер или длина фигуры. В процентах — от меньшей стороны зоны (соразмерно на любой зоне); в px — одинаково на всех зонах, удобно, когда известен размер реального дефекта в пикселях кадра. |
| Заливка | сплошная / контур / вперемешку (контур тоже жирный). |
| Толщина линии, px | Линия / царапина и крест. 0 — авто (жирная). Для маркировки деталей не опускайтесь ниже 3 px. |
| Где дефект | по центру, слева, справа, сверху, снизу — куда ставить фигуру (с небольшим случайным разбросом). Галочка все положения — по файлу на каждое отмеченное место; одно случайное — один файл, место случайное из отмеченных. Счётчик файлов внизу окна учитывает это сразу. |
| Цвета фигур: 5 слотов | Пять слотов вместо списка названий. Галочка — слот участвует, цвет берётся случайно из отмеченных (±12 по каналу, чтобы не был одним оттенком). Кнопка с образцом — выбрать цвет в палитре, 💧 пипетка — щёлкнуть по живому кадру камеры (колесо — зум, правая кнопка — панорама) и взять цвет с реальной детали или платы. По умолчанию включены два слота — тёмный и светлый, остальные три выключены. |
| Колонка «общий» | Отмеченный вид дефекта попадает в общий файл вместе с другими «общими» (например, царапина поверх сдвинутого элемента). Без галочки — отдельный файл «норма + только этот дефект». Вид с «все положения» всегда отдельный. |
4.7. Аномалии зон: окно настроек
Кнопка ЗОНА-ПАРА: аномалии зон создаёт классы zone_NNN_anomaly из вырезок нормы. Зоны берутся все, кроме красных (выключенных щелчком на кадре AI Model, раздел 4.3). Классы аномалий нужны не везде: добавляйте их для зон, где брак реально встречается, а остальные зоны модель проверит по узнаванию.

| Настройка | Что делает |
|---|---|
| Копий на дефект | Одно число для всех видов: сколько копий с новыми случайными параметрами сделать на каждый отмеченный вид (по умолчанию 10). |
| ▸ Синтетические дефекты поверх вырезки | Свёрнутая по умолчанию группа: прямоугольник, мелкие прямоугольники, круг, эллипс, треугольник, восьмёрка, линия/царапина, крест, пропал элемент, размытое пятно, шумовая заплатка, кусок другой зоны. Параметры фигур, место и палитра — раздел 4.6. |
| Сдвиг, px · куда · форма | Главный дефект платы. Область (круг или квадрат) сдвигается на 5–12 px в отмеченные стороны: ← → ↑ ↓ и две диагонали ⤡ ⤢. масштаб по вертикали / по горизонтали, ±% — размер области относительно зоны: 0 — вся зона, −30 — область на 30 % меньше (сдвигается только элемент, основание остаётся), +30 — область больше зоны (захватывает соседей из кадра). все направления — по файлу на каждую сторону. |
| Поворот, ° · форма | Область (круг или квадрат, тот же масштаб ±%) поворачивается на случайный угол из диапазона в обе стороны. |
| Масштаб, % · уменьшение / увеличение | Окно зоны как дефект: уменьшение 60–85 % или увеличение 120–160 %. Каждая отмеченная сторона — свой файл. На плате обычно выключен. |
| «общий» у сдвига и поворота | Если обе галочки стоят, это одна деталь в одном файле: сдвиг и поворот применяются одним преобразованием (не по очереди, иначе получалась «каша»), масштаб области и форма общие и задаются у сдвига. |
| ▸ Подзоны | Зона делится на 2, 4 или 9 частей, и внутри каждой поворачивается или сдвигается своя область; галочка «на каждую подзону свой снимок» даёт по файлу на часть. Нужно для крупных зон с несколькими элементами. |
| Освещение и шум поверх каждого файла дефекта | Включено и равно норме: дефект должен отличаться геометрией, а не светом. |
| Снимки по времени / в val | Каждая копия с нового кадра камеры (800 мс), 20 % в val, первый файл класса в val всегда. |
4.8. Оригинал с зонами: бляшки припоя и редактор зоны
Кнопка Оригинал с зонами открывает сохранённый оригинал платы с сеткой. Здесь синтетика делается без камеры: колесо — зум, правая кнопка — панорама, левая — выбор зон (Ctrl — добавить, протяжка — рамкой, Ctrl+A — все), двойной щелчок — редактор зоны.
- Бляшки припоя для выбранных зон… — окно «Бляшки припоя: замыкание между дорожками». Программа сама находит дорожки в зоне (порог Оцу, светлые полосы шириной ≥ 2 px), ставит каплю припоя в зазор между соседними дорожками цветом самих дорожек, с тёмной кромкой и бликом. Настройки: между вертикальными или горизонтальными дорожками, бляшек на снимок 1…3, размер 8…18 % зоны, снимков на зону (5), куда класть — в аномалию или в норму, освещение поверх, в val — новый снимок с другим освещением или точная копия.
- Редактор зоны: инструменты Кисть, Пипетка, Пятно цветом, Копировать область, Вставить, Штамп, Область бляшек; палитра «припой / площадка», «плата», «тень / маска», белый, чёрный; поле «Копий» и кнопка Создать снимок. Так рисуется брак, которого ещё не было на линии: залитая площадка, лишний элемент, отсутствующая маркировка.
Файлы редактора получают имена edit_… и попадают в класс зоны или её аномалии. На вкладке Inspect то же окно открывается только для просмотра.
4.9. Обучение модели
Группа Настройки обучения на вкладке AI Model заполняется сама после первого снимка по зонам: Image Size 128, Model Size s, Epochs 50, Batch 64. Это значения под зоны 108–137 px. Для зон 256 px, как в примере, поставьте Image Size 192 или 256 — вырезка тогда почти не сжимается (на снимке главного окна стоят Epochs 100 и Image Size 192). Проверьте значения и нажмите TRAIN AI MODEL.
| Параметр | Что означает | Как выбирать |
|---|---|---|
| Epochs | сколько раз модель просмотрит весь набор | 50 для платы по умолчанию; 100–150, если классов аномалий много |
| Batch Size | сколько картинок за один шаг | 64; при нехватке видеопамяти уменьшите |
| Image Size | к какому размеру приводятся вырезки, кратно 32 | примерно размер зоны: 128 для зоны 108–137 px; 192–256 для зон 256 px, как в примере |
| Model Size | n / s / m / l / x | s — оптимум для сотен пар классов; n не хватает ёмкости, m и выше — медленнее |
| Device | на чём обучать | 0 (GPU) с видеокартой NVIDIA; без CUDA программа сама переключит на cpu |
| Workers | потоков подготовки данных | 12 по умолчанию для многоядерного процессора |
5. Инспекция
Вся работа идёт на вкладке Inspect. Модель после обучения уже назначена; остаётся проверить зоны, выставить порог, выбрать источник темпа и, если плата приходит в любом положении, включить живой конвейер.

5.1. Назначить модель и проверить зоны
5.2. Порог узнавания зоны
Для каждой зоны сеть отдаёт вероятности всех классов, но решение принимается только внутри пары. Доля нормы q = p(zone_N) / (p(zone_N) + p(zone_N_anomaly)) умножается на «узнавание» — насколько пара вообще заняла выход сети (полное узнавание при 10 % и выше). Итоговая оценка 0…100 % сравнивается с порогом: выше — normal, ниже — anomaly.
Порог по умолчанию 50 %, хранится в board.json рядом с моделью и применяется сразу, без перезапуска. Ниже 50 % порог уходит в сторону нормы всё сильнее: 25 % → отсечка 6 %, 10 % → 0,4 %, 1 % → почти всё зелёное; 99 % пропускает только уверенные зоны. Такая шкала нужна, чтобы оператор видел разницу между 5 % и 99 %, а не сплошные красные зоны.
5.3. Живой конвейер: плата в любом положении
Галочка Живой конвейер: плата в любом положении включает поиск платы по области привязки перед каждым анализом: кадр совмещается с оригиналом, зоны режутся из совмещённого изображения, а на видео рисуются границы области привязки и зоны (зелёные — норма, красные — аномалия). Поле период, мс задаёт, как часто искать плату (по умолчанию 1000, на снимке 2000). Индикатор рядом: зелёный «норма · точек N», красный «АНОМАЛИЯ · точек N», оранжевый «плата не найдена» или «нет оригинала — зафиксируйте». Вердикт принимается по одному анализу, без накопления.
Оригинал и область привязки фиксируются той же кнопкой Зафиксировать оригинал, что и при съёмке (раздел 4.4); Оригинал с зонами открывает его для просмотра. На видео рисуются границы области привязки и голубые опорные точки, по которым сошлась плата. Зоны, вылезающие за края кадра после выравнивания, пропускаются с меткой SKIP.
5.4. По какому сигналу анализировать
Источник темпа всегда один: включая новый, программа снимает предыдущий.
| Способ | Как включить | Когда применять |
|---|---|---|
| По камере | галочка «По камере» | непрерывный контроль; темп ограничен ползунком «Анализов в секунду» на вкладке Camera |
| По таймеру | галочка «По таймеру» и интервал, мс | ровный редкий контроль, например раз в секунду |
| По триггеру | выбрать связь в списке «Trigger» и фронт «анализ по + на входе» или «по −» | конвейер с датчиком на входе камеры: кадр снимается в момент прихода изделия — самый точный способ (раздел 6) |
| GPU | галочка «GPU» | включена по умолчанию; переключение перезагружает модель |
| Анализ серого | галочка «Анализ серого» | включается сама для моделей, обученных в сером; вырезки переводятся в серый перед инференсом |
5.5. Жёлтые зоны: выключить зону кликом
На линии часть зон бывает нужно временно вывести из контроля: элемент не установлен на этой партии, зона закрыта приспособлением, идёт отладка. Для этого не нужно править сетку или модель, зоны выключаются прямо на видео, только на вкладке Inspect.
Что делают жёлтые зоны, задаёт общий чекбокс Жёлтые (отключённые кликом) зоны молчат в окне OUTPUT на вкладке «Звук» (включён по умолчанию):
| Чекбокс | Поведение жёлтых зон |
|---|---|
| Включён (по умолчанию) | Зона не анализируется вовсе: вырезка не подаётся в сеть, метка OFF, ни звука, ни TCP-посылки, ни выхода камеры. В живом конвейере жёлтая зона не влияет на вердикт «норма / аномалия». |
| Выключен | Жёлтая рамка остаётся только пометкой: зона анализируется и срабатывает как обычная. Удобно, чтобы отметить зоны для проверки, не отключая контроль. |
5.6. Что видно на экране и в консоли
- Над зоной подписан результат; рамка — цветом таблицы зон, при срабатывании по триггеру — красная. Когда зон больше 50, уверенная норма показывается только зелёной рамкой, подписи получают аномалии и неуверенные зоны: сотни подписей на каждом кадре мешали читать картинку и нагружали отрисовку. Жёлтые зоны выключены кликом (раздел 5.5).
- Панель «Анализ по триггеру» внизу вкладки показывает каждую сработку строкой [чч:мм:сс.ммм] Камера вход + ТРИГГЕР 4 мс | ИИ 12 мс #57 и результат по каждой зоне. В базу эти строки не пишутся.
- Правый клик по зоне на видео: «Класс обнаружения в этой зоне → считать это «…»» переименовывает ответ модели для этой зоны (не исправляет модель, но браковщик и журнал увидят новое имя); там же «Сделать браковщик для этой зоны» и счётчик правил.
- Галочка Сохранять снимки инспекции и папка: кадры с нарисованными зонами пишутся файлами inspect_….jpg, настройка своя у каждой камеры.
- Раз в 10 минут в подпапку diag модели пишется кадр живого конвейера и текстовый список зон, хранятся последние 20 снимков — для разбора спорных случаев без роста папки.
6. Триггеры: внешний датчик на вход камеры
Основной режим для конвейера: камера снимает кадр по электрическому сигналу датчика на своём дискретном входе. Это самый точный момент съёмки: изделие всегда в одном месте кадра, а анализ идёт ровно один раз на изделие. Окно ТРИГГЕРЫ собирает связь «датчик → камера» и рисует схему подключения под выбранный разъём.


Распиновка разъёмов
| Пин | HIKROBOT MV-CS, 6 pin | SICK picoCam, 6 pin |
|---|---|---|
| 1 | DC_PWR — питание камеры 9–24 В | GND — земля питания камеры |
| 2 | OPTO_IN — вход Line 0 (+), сигнал триггера | VCC — питание камеры 12–24 В |
| 3 | GPIO — Line 2, вход или выход | Trigger − — вход триггера, оптопара (−) |
| 4 | OPTO_OUT — выход Line 1 (+) | Trigger + — вход триггера, оптопара (+) |
| 5 | OPTO_GND — общий оптопар, обратный провод | Flash + — дискретный выход (+) |
| 6 | GND — земля питания камеры | Flash − — дискретный выход (−) |
7. Выходы: браковщик, дискретные выходы камер и TCP
Браковщик превращает результат инспекции в действие. Правило создаётся на конкретной зоне (или сразу на всех зонах модели, класса или отмеченных зонах) и срабатывает, когда модель увидела в этой зоне указанный класс. Действий три: TCP-посылка роботу или ПЛК, переключение дискретного выхода камеры и звуковое оповещение оператора. Каждое срабатывание пишется в журнал.
7.1. Справочник ВЫХОДЫ: контакты и проверка тестером
Кнопка ВЫХОДЫ над видео открывает справочное окно, которое ничего не настраивает: оно показывает, на каких контактах выход, как его проверить тестером без питания и как подключить нагрузку.


- Выход — «сухой контакт» оптопары: своего напряжения он не даёт, только замыкает цепь. Нужен внешний источник питания.
- Проверка тестером в режиме Ω: выход ВЫКЛ — обрыв (OL), ВКЛ — сотни Ом. Зуммер прозвонки молчит в обоих случаях, смотрите цифры. Если ничего не меняется — переверните щупы, оптопара полярна.
- Нагрузка: +24 В → лампа → пин «+», пин «−» → GND. Для HIKROBOT 25 мА — предел: сигнальная арматура на 27 мА уже за ним, снизьте питание или поставьте промежуточное реле. Для SICK запас большой, лампа на 20–30 мА подключается напрямую.
7.2. Окно OUTPUT: правило на зону
Кнопка OUTPUT на правой панели (или правый клик по зоне → «Сделать браковщик для этой зоны») открывает окно «OUTPUT — TCP-посылки и дискретные выходы камер». Слева дерево Камеры → модели ИИ → классы → зоны с галочками на зонах; справа вкладки Правила зоны, Журнал срабатываний, База данных.

Одна зона может нести несколько TCP-правил (разные приёмники), не более одного правила дискретного выхода на класс и не более одного звука на класс. Правило хранится в базе и работает из потока инференса: правила держатся в памяти, один поиск по адресу зоны на кадр, а сокеты и SDK камеры трогает отдельный поток-диспетчер, чтобы анализ не ждал сети.
7.3. TCP-посылка роботу или ПЛК
Программа работает как TCP-клиент: подключается к IP-адрес и Порт приёмника, держит соединение открытым и переиспользует его. При обрыве делает одну попытку переподключения и повтора. Строка уходит в UTF-8 с CR+LF в конце.
| Поле | Назначение |
|---|---|
| Таймаут подключения, мс | 1000 по умолчанию, 100…10000. |
| Таймаут отправки ИИ, мс | Минимальная пауза между автоматическими посылками правила; 0 — без паузы. Даже смена класса ждёт эту паузу. |
| Команда | Слово уходит как есть: «up» — посылка «up». Нужен класс-угол — добавьте подстановку: «J6 {class}» → «J6 235». Пусто — используется шаблон «Данные». |
| Свои данные | Произвольный текст, подставляется вместо {data}. |
| Данные | Шаблон посылки. Пусто = «номер и имя зоны» ({zoneId} {zone}). Нажатие на подстановку добавляет её, повторное — убирает; «Все поля» ставит структурированный шаблон. |
| Подстановка | Значение | Подстановка | Значение |
|---|---|---|---|
| {zoneId} | номер зоны (1, 2, 3…) | {camera} | имя камеры |
| {zone} | имя зоны (редактируется в базе) | {model} | имя модели ИИ |
| {class} | класс, который увидела модель | {time} | время ЧЧ:ММ:СС.мс |
| {conf} | уверенность, % (точка как разделитель) | {date} | дата ГГГГ-ММ-ДД |
| {data} | текст из «Свои данные» |
Пример структурированного шаблона: zoneId={zoneId};zone={zone};class={class};conf={conf};camera={camera};model={model};time={time};date={date};data={data}. Числа всегда в инвариантном формате, чтобы «87,6» не ломал разбор на ПЛК.
- Проверить связь только открывает сокет и сообщает «соединение установлено» или «нет ответа за N мс».
- Отправить тест реально шлёт строку; результат показывается рядом с кнопкой, а не окном.
- Квитирование. Без галочки «повторять» правило шлёт одну посылку при смене класса и повторяет её, пока приёмник не ответит строкой ok <посылка>. С галочкой — повтор по интервалу, пока класс держится.
- «Последняя команда побеждает»: если модель успела дать несколько результатов, пока диспетчер занят, уйдёт последний. Очередь ограничена 512 заданиями.
7.4. Дискретный выход камеры

| Поле | Назначение |
|---|---|
| Выход | Способ: авто, у SICK — Flash-пин (постоянный уровень) или GPIO; у HIKROBOT — UserOutputValue или LineInverter (строб выключен). Модели MV-CS020/016-10GC узла UserOutput не имеют — программа сама выберет LineInverter. |
| Линия | Flash-пин / GPIO1…6 у SICK; Line1 (выход), Line2 (двунаправленная) у HIKROBOT; Line0 — только вход. |
| Уровень | true / false / off. «off» — правило есть, но выход не трогается. |
| Импульс, мс (0 — держать) | 0 — уровень держится до смены класса; иначе импульс 10…5000 мс с возвратом. |
Кнопки Включить выход, Выключить выход, Импульс проверяют пин тестером или лампой; Что умеет камера опрашивает все способы и печатает отчёт. Ручные тесты пишутся в тот же журнал.
7.5. Звуковое оповещение: свой звук на каждую зону
Третий тип правила — звук на компьютере с программой. Оператору не нужно смотреть на экран: по сигналу он слышит, что зона ушла в брак, а разные звуки на разных зонах подсказывают, где именно. Звук доступен для любых камер, включая USB и RTSP, у которых нет дискретных выходов.
| Поведение | Как это работает |
|---|---|
| Без галочки «повторять» | Звук один раз при подтверждённой смене класса зоны (после «Подтверждение смены класса»). Пока класс держится, тишина. |
| С галочкой «повторять, пока класс держится» | Сигнал повторяется через «Интервал повторов», но не чаще паузы между звуками, пока зона остаётся в указанном классе. |
| Несколько зон в браке одновременно | Каждая зона играет свой звук; сигналы разных зон не гасят друг друга, гасится только повтор одной и той же зоны. |
| Журнал | Каждое проигрывание пишется в «Журнал срабатываний» строкой «Звук «…»»; если файл не найден или звуковое устройство отказало — строка с ошибкой, программа продолжает работать. |
| Проверка | Проверить это правило проигрывает звук сразу; Эмулировать срабатывание зоны прогоняет звук вместе с TCP и выходами через боевую очередь. |
7.6. Журнал срабатываний и база данных
Вкладка Журнал срабатываний показывает последние 300 записей строками ЧЧ:ММ:СС.ммм ✔/✖ Камера · Модель · Класс · Зона → Действие [сообщение] и обновляется живьём. Кнопки Обновить и Очистить журнал.

Вкладка База данных: программа хранит всё в файле SQLite rejectors.db рядом с exe — отдельной службы нет, порт не слушается, ничего устанавливать не нужно. Таблицы: settings (настройки), cameras (профили камер), camera_models (модели на камерах), zones (имена и геометрия зон), rejectors (правила), reject_log (журнал), camera_param_files (копии параметров камер), camera_presets (наборы настроек камер). Сохранить копию базы… делает целостный снимок командой VACUUM INTO прямо на работающей базе; Загрузить базу из копии… восстанавливает, предварительно сохранив текущую. Базу можно смотреть в DBeaver, не закрывая программу; писать в неё извне не стоит.
8. Другие режимы и задачи
Обычные модели: normal / anomaly и любые классы
Тот же редактор ROI работает и для обычной классификации: таблетки, крышки, этикетки, детали в ложементе. Классы задаются в диалоге «Новая ИИ модель» (по умолчанию normal и anomaly, имена латиницей), зоны ставятся на изделия, кнопка Сделать снимок с числом кругов 1…50, серия Создать снимки по камере (кадр/с) или по энкодеру. Панель Синтетика для ИИ: точные повороты 90°/180°, полный оборот 360° с шагом и диапазоном, зеркало, «классы по градусам» (каждый угол в свой класс — браковщик отправит угол по TCP), диапазоны яркости и контраста. Обучение — с полными аугментациями Ultralytics. Порог уверенности для таких моделей задаётся там же, где и для ЗОНА-ПАРА — на вкладке Inspect.
Много-модельная инспекция (слоты 1–20)
На одной камере можно держать до 20 моделей: Добавить ONNX в слот, затем ROI → Добавить класс в выбранную модель — у каждой модели в слоте своя разметка зон, результаты всех моделей показываются на одном кадре.
Когда много-модельность всё же применяется:
| Ситуация | Как настроить |
|---|---|
| Разные задачи на одном кадре | ЗОНА-ПАРА проверяет раскладку и наличие элементов, а обычная модель во втором слоте — маркировку, наклейку, цвет разъёма или направление ключа. Зоны второй модели ставятся отдельно через «ROI → Добавить класс в выбранную модель». |
| Изделие без фиксированной сетки | Таблетки, крышки, детали в ложементе: несколько классов вида изделия в обычных моделях. Похожие классы разводятся по разным слотам, чтобы не сливались. |
| Две разные платы в одном кадре | Две модели ЗОНА-ПАРА в разных слотах, у каждой свой оригинал и своя сетка. Живой конвейер работает с оригиналом основной модели. |
| Переходный период | Старая обученная модель остаётся в слоте, пока новая ЗОНА-ПАРА набирает статистику; обе видны на одном кадре, правила браковщика переносятся по мере доверия. |
Порог, темп анализа, жёлтые зоны и правила браковщика действуют на все модели камеры. Кнопка УБРАТЬ МОДЕЛЬ очищает и слоты, поэтому спрашивает подтверждение; Удалить выбранную убирает одну модель из слота, её файлы и зоны в базе остаются.
Общие модели
Кнопка ОБЩИЕ МОДЕЛИ сохраняет набор «камера → модель» под именем: Создать из текущих моделей, Применить ко всем камерам, Обновить из текущих, Переименовать, Удалить набор. Переход стенда из восьми камер на другое изделие — один выбор. Удаление набора убирает только группировку: папки, ONNX, зоны и правила остаются. Зоны принадлежат паре «камера + модель»: одна модель на восьми камерах — восемь независимых разметок.
Энкодер и браковщик по конвейеру
Для линий с энкодером на COM-порту (115200, ESP32): подключение CONNECT ENCODER, автоподключение, позиция, шаг снимка и коррекция, Установить ноль + СНИМОК. Съёмка для обучения и анализ могут идти «По энкодеру» — кадры равномерны по пути изделия. Старый браковщик по времени с задержкой и антиспамом отправляет команду REJECT на контроллер энкодера.
Запись видео и снимки
Вкладка Settings: НАЧАТЬ ЗАПИСЬ ВИДЕО с активной камеры в файл record_дата_время.avi (MJPG, реальный FPS камеры). Снимки для обучения — real_….jpg, снимки инспекции — inspect_….jpg с нарисованными зонами.
9. Настройки, консоль, требования и лицензия
Settings
- СОХРАНИТЬ В ФАЙЛ / ЗАГРУЗИТЬ ИЗ ФАЙЛА — все настройки (камеры, модели, правила) в JSON, удобно перед переустановкой или для переноса на второй компьютер. Источник истины — база, JSON — страховка на случай её недоступности. Каждое изменение настроек сохраняется автоматически.
- СБРОСИТЬ НА НАЧАЛЬНЫЕ — необратимо: удаляет конфиг и раскладку окон.
- Язык интерфейса — 14 языков; главное окно переключается сразу, остальные окна — при следующем открытии.
- Положение, размер и монитор всех окон, позиции разделителей — в базе; при отключённом мониторе окно возвращается в видимую область.
Console
Галочки «Камеры» и «Триггер» по умолчанию сняты и включают показ соответствующих сообщений (в режиме триггера сообщения камеры идут в «Триггер»); в файлы logs\engiai-*.log пишется всё и до фильтров. Консоль рассчитана на недели работы без внимания: на экране держится 800 строк, при 1000 старые 200 удаляются; новые строки собираются пачкой 4 раза в секунду, а не по одной; автопрокрутка вниз включена, пока вы сами не прокрутили вверх; звука у консоли нет. Смены класса зон пишутся не чаще 10 строк в секунду (остальное сворачивается в счётчик), файл журнала делится по 20 МБ, файлы старше 14 дней удаляются при запуске, журнал срабатываний в базе хранит последние 20 000 записей. Необработанные ошибки — в crash.log, причины принудительного завершения — в runtime.log рядом с exe. Если что-то работает не так — смотрите сюда в первую очередь.
Требования
| Компонент | Требование |
|---|---|
| Операционная система | Windows 10/11 x64. |
| Видеокарта для инспекции | NVIDIA с драйвером CUDA; библиотеки CUDA 13 и cuDNN 9 поставляются с программой. Без видеокарты инспекция идёт на процессоре автоматически. |
| Обучение | Python 3 (с галочкой «Add python.exe to PATH» при установке) и пакеты ultralytics, onnx, onnxslim, onnxruntime — программа устанавливает их сама при первом обучении, нужен интернет. GPU для обучения определяется по PyTorch; без CUDA обучение идёт на CPU медленнее, результат тот же. |
| Камеры SICK | Драйвер IDS uEye; камера должна быть видна в IDS Camera Manager. |
| Камеры HIKROBOT | MVS SDK (библиотека поставляется с программой); для GigE — сетевая карта с поддержкой jumbo-кадров. |
Лицензия и пробный режим
При запуске программа обращается к серверу лицензий engi.live; отправляются только хэши идентификаторов оборудования и версии, без серийников и имён пользователей. Если сервера нет, а разрешение закэшировано — программа работает по кэшу (для линий без интернета). Без лицензии действует пробный режим 20 минут: в заголовке окна и в строке ИИ идёт отсчёт «ТЕСТ ММ:СС», кнопка КУПИТЬ на вкладке Settings открывает страницу покупки. При действующей лицензии отсчёта нет.
10. Короткий чек-лист и поиск неисправностей
Чек-лист с нуля для платы
Если что-то пошло не так
| Симптом | Что проверить |
|---|---|
| Камера не появилась в списке | питание и кабель; для SICK — IDS Camera Manager и IP из подсети адаптера; для HIKROBOT после аварийного закрытия подождать до 25 с и «Переподключить» |
| Картинка тёмная, серая или неправильные цвета | Camera → «Авто-настройка для ИИ»; для цветной SICK — раскладка Байера и баланс белого; у USB — «Типовые», затем «Зафиксировать параметры» |
| Кадры рвутся, Net красный | GigE: размер пакета 1500 или jumbo на сетевой карте, межпакетная задержка; меньше FPS или меньше кадр; отдельная сетевая карта на камеру |
| «Плата не найдена» / снимок пропущен | оригинал не зафиксирован или снят при другом свете; мало опорных точек — взять область привязки больше и с деталями; в область попал стол или конвейер; увеличить период поиска |
| Зоны съезжают на другой плате | плата искалась по самим зонам инспекции: перефиксировать оригинал с областью привязки по деталям платы вокруг (раздел 4.4); модель совмещения «Авто» |
| Бракует исправные платы другой партии деталей | маркировка на корпусах другая: добавить снимки нормы с этой партии; синтетическую царапину не делать тоньше 3 px (раздел 4.6); проверить, что дефект — смещение, а не цвет |
| Зоны с меткой NO_ZONE_CLASS | сетка менялась после обучения; вернуть сетку или создать новую модель и переснять |
| Все зоны красные на исправной плате | другая плата или другое положение без живого конвейера; порог слишком высок; снимки сделаны при другом освещении; смешаны цветные и серые файлы |
| Модель не видит сдвиг элемента | пересчитать px/мм (раздел 1.3): при малом масштабе сдвиг меньше 5 px; уменьшить поле зрения или взять камеру с большим разрешением; не расширять сдвиг нормы |
| Обучение падает или очень медленное | Device = cpu, если нет видеокарты NVIDIA; уменьшить Batch Size; смотреть Console; проверить, что Python в PATH |
| Инспекция не срабатывает | выбран ли best.onnx; включён ли источник темпа (По камере / таймер / триггер); не нажата ли «НЕ ИСПОЛЬЗОВАТЬ ИИ»; галочка «AI включён» у камеры |
| Правило браковщика молчит | нажато ли «Создать на N зонах»; галочка «Включён»; класс правила совпадает с ответом модели (anomaly / normal); для выхода — уровень не «off»; у USB-камер выходов нет, только TCP |
| Звук не играет | правило создано и включено; файл есть в папке sounds (или sounds\custom); не идёт ли пауза между звуками; без «повторять» звук играет только при смене класса; громкость Windows и устройство вывода |
| TCP-посылка уходит один раз | без «повторять» правило ждёт ответа «ok <посылка>» от приёмника; поставьте галочку «повторять, пока класс держится» или настройте ответ на стороне ПЛК |
engiAI Ethernet System. Все названия кнопок и полей в руководстве приведены так, как они отображаются в программе на русском языке. Снимки экрана сделаны на модели «model_4» (две зоны 256×256: конденсатор C30 и мост BR1), USB-камера 3264×2448, модель обучена в оттенках серого. Редакция 3, сентябрь 2026: пример на двух зонах, формирование папок модели, область привязки, синтетика «элемент с основанием» с картинками «до / после», палитра и толщина линии, красные зоны, консоль.
