BAISim (Biomorphic Artificial Intelligence Simulator) – это библиотека для распознавания образов с возможностью адаптивной коррекции ошибок. Проект разработан в рамках системы БСИИРОКО («Биоморфная система искусственного интеллекта для распознавания образов с коррекцией ошибок»). BAISim предоставляет инструменты для создания каскадных детекторов, объединения их в иерархические структуры и улучшения качества распознавания за счет корректоров ошибок [1].
Библиотека ориентирована на разработчиков C++ (с поддержкой Python-обертки) и предназначена для исследований и приложений в области компьютерного зрения, где требуется объяснимая и адаптивная модель распознавания (например, распознавание лиц, символов или сложных объектов).
BAISim может быть использован для:
- анализа видеопотока “на лету”;
- нахождения объектов заданного типа и их атрибутов;
- определения контекста, в котором находятся эти объекты (классификации фона) и автоматического связывания объектов наблюдения с контекстом, на котором они появляются;
- разработки сложных систем, в которых вовлечены сотни интеллектуальных агентов, реализующих семантический анализ видеопотока и выявление нестандартных ситуаций или появление в зоне наблюдения нетипичного явления (например, задымление);
- систем видеонаблюдения, систем аннотации видеоданных, систем контроля качества, систем автоматического управления мобильными платформами и любых других систем, где требуется компьютерное зрение с возможностью понимания происходящего.
-
Многокаскадные детекторы
Поддерживается создание и обучение каскадных детекторов [2,6]. ИнструментCSBuilderпозволяет пошагово собирать детектор из нескольких стадий и обучать его на выборках. -
Иерархическая детекция объектов
Модульtree_builderпозволяет объединять несколько детекторов в древовидную структуру. Это необходимо для распознавания составных объектов – например, последовательностей цифр на изображении (номера вагонов, автомобильные номера и т.п.) путем объединения отдельных детекторов цифр в единый иерархический распознаватель. -
Адаптивная корректировка ошибок
С помощью модуляsupervisor_correctorsреализована возможность корректировки детекторов. Супервизор анализирует результаты первичного детектора на наборе эталонных данных и выявляет ошибки. По найденным ошибкам обучаются специальные модели-корректоры [1], которые интегрируются в агента и улучшают качество детекции в трудных случаях. -
Интеллектуальный агент
Основным объектом системы являетсяTLFAgent– агент распознавания. Он включает в себя детектор (TLFObjectDetector), сканер (ILFScanner) для фрагментации изображения, тренер корректоров и список корректоров для уточнения результатов. -
Гибкая настройка и сохранение моделей
Все компоненты (детекторы, деревья, агенты, корректоры) могут конфигурироваться через XML-файлы. Предусмотрены функции загрузки/сохранения конфигурации агента, что облегчает эксперименты и воспроизведение результатов. В репозитории приведены готовые примеры конфигураций (например,random_agent.xml,agent_tree.xmlи др.). -
Python-API
Для удобства интеграции имеется Python-модуль обертки (python/awplflib.py), позволяющий вызывать основные функции (обучение корректоров, экспорт/слияние деревьев, сборка каскада) через Python. Это облегчает быструю проверку идей и написание скриптов без необходимости работы напрямую с C++ кодом. -
Примеры и готовые сценарии
В каталогеexamples/представлены примеры использования библиотеки – готовые.cppфайлы с демонстрацией API, а также скрипты.cmd/.batдля запуска типовых задач (обучение корректоров, тестирование детектора, сборка детектора на основе лицевых изображений и др.).
Библиотека BAISim реализует следующие базовые компоненты:
-
ILFObjectDetector
Интерфейс, представляющий каскадный детектор объектов [2] и позволяющий осуществлять поиск объектов на изображении (а также в отдельных фрагментах) с помощью интерфейса сканераILFScanner. Исходное изображение разбивается на множество фрагментов, в которых запускается алгоритм каскадного классификатора и находятся кандидаты объектов. -
TCSBuildDetector
Класс построения каскадного детектора объектовILFObjectDetector. Алгоритм использует базовые признаки типа модифицированного Цензуса для построения слабых классификаторов. Из слабых классификаторов формируются сильные с помощью алгоритма AdaBoost. Сильные классификаторы объединены в последовательность каскадов, отсечение (“нет”) может произойти на любом уровне, а ответ “да” – в случае срабатывания всех сильных классификаторов. -
TLFAgent
Интеллектуальный агент, использующий механизмы коррекции для уточнения результатовILFObjectDetector. Включает:- Детектор (
agent::IDetector) – классификатор фрагментов (например, каскадный классификатор или ансамбль слабых классификаторов), выполняющий основное распознавание. Интерфейс позволяет извлекать признаки из фрагментов для дальнейшего использования в корректорах. - Супервизор (
ILFSupervisor) – интерфейс, позволяющий подключать внешнюю разметку изображений (например, заранее подготовленную или получаемую “на лету”). - Корректоры (
agent::TCorrectorCollection) – набор корректоров, в базовом варианте включающий корректоры типа FN и FP (исправляющие ошибки 1-го и 2-го рода соответственно). В процессе работы агента этот набор может расширяться с помощью механизма обучения корректоров. - Обучатель корректоров (
agent::ICorrectorTrainer) – алгоритм сбора ошибок и обучения корректоров. С помощью разметки супервизора трейнер определяет фрагменты, где детектор ошибается, и формирует списки пропусков или ложных срабатываний. При достижении необходимого количества ошибок, запускается алгоритм обучения корректора определенного типа. Алгоритм сбора и запуска обучения реализован в базовом классеagent::TCorrectorTrainerBase[4, 5]. - NMS (Non-Maximum Suppression) - Алгоритм, объединяющий классифицированные фрагменты для точной локализации детектированного объекта, используя заданный порог пересечения [3].
- Детектор (
-
TLFEngine/TreeEngine
Опциональный компонент, представляющий древовидную структуру детекторов или агентов, если задача требует иерархического распознавания, контекстного распознавания или семантического описания сцены.
Взаимодействие компонентов происходит так:
- С помощью сканера изображение разбивается на фрагменты.
- Фрагменты классифицируются с помощью детектора.
- Признаки, извлеченные из каждого проверенного фрагмента, поступают на корректоры, и результат классификации уточняется.
- После чего уточняется локализация объекта алгоритмом NMS.
- Если к агенту подключен супервизор, то возможно добавление новых корректоров с помощью обучателя корректоров.
- Windows 10/11 (64-bit).
- Компилятор Visual C++ с поддержкой C++17 (рекомендуется Microsoft Visual Studio 2019 или новее).
- Python 3.11 (x64)
- Библиотека Boost 1.87
- Рекомендуемые ресурсы: 8-ядерный CPU, 16 ГБ ОЗУ, дисковое пространство ~30 ГБ, GPU NVIDIA RTX 2080 Ti (или лучше) при использовании GPU-функционала.
-
Установка Python 3.11
Установите Python версии 3.11 (64-bit) с официального сайта. При установке убедитесь, что добавили Python в системный PATH. -
Установка Python-зависимостей
Перейдите в корневой каталог BAISim и выполните команду установки зависимостей:pip install -r requirements.txt
-
Подготовка Visual Studio Установите Visual Studio Community 2019 (или 2022) с компонентами для разработки на C++ и сборки проектов под Windows (Platform Toolset v142 или v143).
-
Установка Boost 1.87 Скачайте архив Boost 1.87 и распакуйте, либо склонируйте его в папку
3rdparty/boostвнутриBAISim. Откройте командную строку Windows cmd.exe, перейдите в каталог, куда распакован исходный код библиотеки Boost 1.87, и выполните:bootstrap.bat b2 --build-type=complete --prefix="C:\Path\to\BAISim\3rdparty\boost" -a --reconfigure installЗамените
C:\Path\to\BAISimна фактический путь к папке BAISim.README.mdПризнаком успешной сборки и инсталляции является наличие в папке C:\Path\to\BAISim\3rdparty\boost\lib файлов:
- boost_numpy311-vc142-mt-gd-x64-1_87.dll
- boost_numpy311-vc142-mt-gd-x64-1_87.lib
- boost_numpy311-vc142-mt-x64-1_87.dll
- boost_numpy311-vc142-mt-x64-1_87.lib
- boost_python311-vc142-mt-gd-x64-1_87.dll
- boost_python311-vc142-mt-gd-x64-1_87.lib
- boost_python311-vc142-mt-x64-1_87.dll
- boost_python311-vc142-mt-x64-1_87.lib
-
Конфигурация пути к Python
Откройте файлvc2019/BAISim.propsв любом редакторе и найдите параметрPythonPath. Пропишите путь к установленному Python 3.11 (например,C:\Python311\python.exe). -
Сборка BAISim
- Откройте решение
vc2019/BAISim.slnв Visual Studio. - Выберите конфигурацию Release x64.
- Соберите решение: Build > Build Solution (или клавиши
Ctrl+Shift+B).
Должны успешно скомпилироваться все модули, в том числе исполняемые файлы:
supervisor_correctors.exetree_builder.execsbuilder.exe
- Откройте решение
-
Сборка Image Marker (опционально)
В составе проекта есть компонент Image Marker. Чтобы его собрать, перейдите вlibrary/photon41/и следуйте инструкциям вREADME.md. -
Проверка установки
После сборки в папкеbuild/bin/x64/Releaseпоявятся исполняемые модули.
Запустите Python-обертку:python python/test.py
Или , если установлен Py Launcher:
py python/test.py
При успехе появятся сообщения "Test passed!" для каждого теста.
После сборки библиотеки можно опробовать ее возможности на примерах из папки examples/.
- library/awplflib – Исходники C++-библиотеки: агенты, детекторы, корректоры и др.
- examples/ – Примеры:
example_agent.cpp,train_correctors.cmdи др. - models/ – XML-файлы конфигураций:
models/agent/– конфигурации агентовmodels/face/– сценарии обучения детектора лицmodels/railway/– примеры для цифр на вагонах
- python/ – Python-обертка (
awplflib.py,test.py) - utils/ – Вспомогательные скрипты
- tools/ – Утилиты: подготовка датасетов, запуск агентов и др.
- 3rdparty/ – Внешние зависимости
- vc2019/ – Проект Visual Studio 2019 (
BAISim.sln,BAISim.props) - Documentation/ – Руководство пользователя (.docx)
- README.md – Основное описание проекта
- LICENSE – Лицензия (GNU GPL v3.0)
BAISim может работать с любыми датасетами, подготовленными в нужном формате.
Примеры и формат описаны в папке dataset/.
Проект распространяется под лицензией GNU GPL v3.0.
Вы можете свободно использовать, изменять и распространять программный продукт, сохраняя лицензию для производных работ.
Текст лицензии — в файле LICENSE.
- Руководство пользователя – В папке
Documentation/находится файл пользователського руководства (формат DOCX) с описанием интерфейса вспомогательного модуляImageMarker. - Документация разработчика – В папке
library/awplflib/doc/htmlприведена документация разработчика в формате Doxigen. Для отображения необходимо запустить файлindex.htmlв браузере. - Комментарии в коде – Основные классы снабжены комментариями (на английском языке) в заголовочных файлах. Например, откройте library/agent/supervisors.h и corrector_trainer.h для понимания, как реализовано обучение корректоров, какие метрики считаются и т.д.
- XML-конфигурации – примеры конфишгураций для обучения детекторов в
models/face/ - README (установка) – текущее описание
BAISim (Biomorphic Artificial Intelligence Simulator) is a pattern recognition library with adaptive error correction capability. The project is part of the BSIIROKO system ("Biomorphic AI System for Pattern Recognition with Error Correction"). BAISim provides tools for creating cascade detectors, combining them into hierarchical structures, and improving recognition quality via error correctors [1].
The library targets C++ developers (with Python wrapper support) and is intended for research and applications in computer vision where an explainable and adaptive recognition model is required (e.g., face recognition, symbol recognition, or complex object recognition).
BAISim can be used for:
- Real-time video stream analysis;
- Detecting objects of a specified type and their attributes;
- Determining the context in which these objects appear (background classification) and automatically linking observed objects with the context;
- Developing complex systems with hundreds of intelligent agents that perform semantic video stream analysis and detect unusual events or phenomena (e.g., smoke detection);
- Video surveillance systems, video data annotation systems, quality control systems, automatic control for mobile platforms, and other computer vision systems requiring scene understanding.
-
Multi-cascade Detectors
Supports creation and training of cascade detectors [2,6]. TheCSBuildertool allows step-by-step construction and training on datasets. -
Hierarchical Object Detection
Thetree_buildermodule merges detectors into tree structures. Useful for recognizing compound objects – e.g., digit sequences (railcar numbers, license plates) via combining digit detectors into a hierarchical recognizer. -
Adaptive Error Correction
Thesupervisor_correctorsmodule implements error correction. The supervisor analyzes detection results on ground-truth data, identifies errors, and trains special corrector models [1] that integrate with the agent to improve detection in hard cases. -
Intelligent Agent
The core object isTLFAgent– a recognition agent. It includes a detector (TLFObjectDetector), scanner (ILFScanner) for image fragmentation, corrector trainer, and a list of correctors to refine results. -
Flexible Configuration and Model Saving
All components (detectors, trees, agents, correctors) are configurable via XML. Load/save functions simplify experiments and reproducibility. Sample configs provided (e.g.,random_agent.xml,agent_tree.xml). -
Python API
Python wrapper module (python/awplflib.py) enables calling core functions (corrector training, tree export/merge, cascade building) from Python. This facilitates scripting and rapid prototyping. -
Examples and Ready-to-Run Scenarios
Theexamples/folder contains.cppfiles showing API use and.cmd/.batscripts for common tasks (corrector training, detector testing, face image-based detector building, etc.).
BAISim implements the following components:
-
ILFObjectDetector
Interface representing a cascade detector [2] capable of searching objects in images or fragments using a scannerILFScanner. -
TCSBuildDetector
BuildsILFObjectDetector. Uses modified Census features for weak classifiers, AdaBoost for strong classifier training, and cascade structure for early rejection. -
TLFAgent
Intelligent agent using correction mechanisms to refineILFObjectDetectorresults. Includes:- Detector (
agent::IDetector) – fragment classifier. - Supervisor (
ILFSupervisor) – provides external image annotations. - Correctors (
agent::TCorrectorCollection) – set of FN/FP correctors. - Corrector trainer (
agent::ICorrectorTrainer) – error collection and training algorithm using ground-truth data. - NMS – Non-Maximum Suppression for localization using overlap threshold [3].
- Detector (
-
TLFEngine/TreeEngine
Optional component for hierarchical or semantic recognition when needed.
Workflow:
- The scanner splits the image into fragments.
- The detector classifies fragments.
- Extracted features are passed to correctors to refine classification.
- NMS localizes the object.
- If a supervisor is connected, new correctors can be added during training.
- Windows 10/11 (64-bit)
- Visual C++ compiler with C++17 (Visual Studio 2019 or newer recommended)
- Python 3.11 (x64)
- Boost 1.87
- Recommended: 8-core CPU, 16 GB RAM, ~30 GB disk, NVIDIA RTX 2080 Ti GPU (for GPU features)
-
Install Python 3.11
Download and install Python 3.11 (64-bit). Add it to PATH. -
Install Python Dependencies
In BAISim root, run:pip install -r requirements.txt
-
Prepare Visual Studio
Install Visual Studio Community 2019/2022 with C++ and Windows build tools (v142 or v143). -
Install Boost 1.87
Download/unpack or clone into3rdparty/boost.
Open the Windows command line (cmd.exe), navigate to the directory where the Boost 1.87 source code has been extracted, and execute:bootstrap.bat b2 --build-type=complete --prefix="C:\Path\to\BAISim\3rdparty\boost" -a --reconfigure installIn case of successful build and installation the following files should be in the folder C:\Path\to\BAISim\3rdparty\boost\lib:
- boost_numpy311-vc142-mt-gd-x64-1_87.dll
- boost_numpy311-vc142-mt-gd-x64-1_87.lib
- boost_numpy311-vc142-mt-x64-1_87.dll
- boost_numpy311-vc142-mt-x64-1_87.lib
- boost_python311-vc142-mt-gd-x64-1_87.dll
- boost_python311-vc142-mt-gd-x64-1_87.lib
- boost_python311-vc142-mt-x64-1_87.dll
- boost_python311-vc142-mt-x64-1_87.lib
-
Set Python Path
Editvc2019/BAISim.props, setPythonPathto installed Python (e.g.,C:\Python311\python.exe). -
Build BAISim
- Open
vc2019/BAISim.slnin Visual Studio - Select Release x64
- Build: Build > Build Solution (
Ctrl+Shift+B)
Executables:
supervisor_correctors.exetree_builder.execsbuilder.exe
- Open
-
Build Image Marker (optional)
ForImage Marker, go tolibrary/photon41/and followREADME.md. -
Verify Installation
After build, run:python python/test.py
Or, using Py Launcher:
py python/test.py
On success you will see "Test passed!" for each test.
After build, see examples/ for usage.
library/awplflib– C++ sources: agents, detectors, correctorsexamples/– Examples likeexample_agent.cpp,train_correctors.cmdmodels/– Config files:models/agent/– agent configsmodels/face/– face detector trainingmodels/railway/– digit detection
python/– Python wrapper (awplflib.py,test.py)utils/– Utility scriptstools/– Tools for dataset prep, agent run, etc.3rdparty/– External dependenciesvc2019/– Visual Studio 2019 projectDocumentation/– User manual (.docx)README.md– Project overviewLICENSE– GNU GPL v3.0 license
BAISim works with any dataset in the required format.
See dataset/ for examples and format.
This project is licensed under GNU GPL v3.0.
You are free to use, modify, and distribute the software, preserving the license in derived works.
See LICENSE.
- User Manual –
Documentation/includes a DOCX manual for theImageMarkertool. - Developer Docs – Doxygen HTML in
library/awplflib/doc/html(openindex.html). - Code Comments – Key classes documented in headers (
supervisors.h,corrector_trainer.h, etc.). - XML Configs – Examples in
models/face/ - README (Install) – This file
- Gorban et al. (2021). High-Dimensional Separability. Entropy, 23(8), 1090.
- Viola & Jones (2001). Rapid object detection using a boosted cascade. IEEE CVPR.
- Bodla et al. (2017). Soft-NMS. arXiv preprint.
- Stasenko et al. (2022). Biomorphic AI system with adaptive error correction, IEEE CNN 2022.
- Stasenko et al. (2024). Adaptive Correction of the Multi-Cascade Detector. IEEE CNN 2024.
- Telnykh et al. (2021). A Biomorphic Model of Cortical Column. Entropy, 23(11), 1458.