Введение
Развитие систем компьютерного зрения на основе глубокого обучения позволяет эффективно решать задачи автоматического обнаружения дефектов в промышленности. Одним из популярных решений в данной области является модель YOLOv9-s, обеспечивающая высокую скорость и точность распознавания. В рамках данного исследования разработан программный модуль, позволяющий пользователю задавать параметры обучения модели, которые затем автоматически интегрируются в конфигурацию YOLOv9-s и запускают процесс обучения. Это решение внедряется в проект по контролю качества металлопродукции, обеспечивая адаптивность модели под конкретные задачи. В статье рассматриваются обоснование выбранного стека, реализация кода и его интеграция в проект.
Выбор стека технологий
Создание эффективного программного обеспечения для взаимодействия с моделью глубокого обучения требует осознанного выбора технологического стека, учитывающего как специфические задачи проекта, так и характеристики применяемых моделей. При разработке модуля настройки и запуска обучения модели YOLOv9-s были выбраны инструменты, обеспечивающие стабильность, расширяемость и простоту интеграции в существующую архитектуру.
В качестве основного языка программирования был использован Python, который на сегодняшний день является стандартом де-факто в области машинного обучения и анализа данных благодаря широкому спектру специализированных библиотек и сообществу разработчиков [1]. Его синтаксис способствует быстрому прототипированию и разработке, а также легкой интеграции с фреймворками глубокого обучения.
Для взаимодействия с моделью YOLOv9-s был применён PyTorch — один из наиболее популярных фреймворков глубокого обучения, обладающий гибкой архитектурой, поддержкой динамических вычислительных графов и активной разработкой со стороны исследовательского сообщества и индустрии [2]. PyTorch используется в оригинальной реализации YOLOv9 и, таким образом, является естественным выбором для адаптации и обучения модели на новых данных.
Для обработки пользовательского ввода и генерации конфигурационных файлов была использована стандартная библиотека argparse, а также работа с YAML-файлами через модуль PyYAML. Конфигурационные файлы модели YOLOv9 представлены в формате .yaml, что делает работу с данной структурой предпочтительной и облегчает интеграцию пользовательских параметров.
Особое внимание было уделено модульности решения. Программа строится по принципу CLI-утилиты (command-line interface), что позволяет интегрировать её как в графические интерфейсы, так и в пайплайны автоматизации (например, через shell-скрипты, CI/CD или cron-задачи). Этот подход особенно важен в промышленных условиях, где автоматизация процессов играет ключевую роль.
Реализация и внедрение в проект
Основу реализованного решения составляет CLI-утилита на языке Python, логически разделённая на три функциональных блока:
- ввод пользовательских параметров;
- формирование конфигурационного YAML-файла;
- запуск процедуры обучения с заданными параметрами.
Входные данные от пользователя собираются через простой и интуитивно понятный интерфейс (рис. 1), где пользователь указывает параметры модели (например, batch size, количество эпох, размер изображения и пути к данным). Эти данные автоматически сохраняются в соответствующем YAML-файле, предназначенном для модели YOLOv9-s. Использование PyYAML позволило эффективно адаптировать данные в нужный формат, соответствующий требованиям модели.
Рисунок 1. Интерфейс программы
На этапе инициализации код проверяет наличие базового файла data.yaml и весов модели. В случае отсутствия — модуль может предложить загрузить необходимые зависимости или уведомить пользователя об ошибке. Все переменные, влияющие на процесс обучения (размер батча, количество эпох, learning rate и др.), могут быть заданы вручную. Это делает систему гибкой и даёт пользователю возможность точно настраивать модель под специфику своей задачи.
Выбор конкретных параметров для первоначальной реализации основывался на серии экспериментов с использованием стандартной архитектуры YOLOv9-s на датасете дефектов листового проката компании «Северсталь». В этих экспериментах были получены следующие базовые метрики:
- точность (P) — 0.763;
- полнота (R) — 0.684;
- mAP50 — 0.759;
- mAP50–95 — 0.415.
Эти значения были использованы в качестве контрольных при дальнейших сравнениях.
После внедрения описанного кода в проект, обучение модели проводилось на расширенном наборе данных, сформированном на основе дополнительных аннотированных изображений дефектов. Благодаря адаптации параметров, оптимизации размера батча и индивидуальной настройке гиперпараметров, удалось достичь значительного улучшения качества модели:
- точность увеличилась до 0.835;
- полнота — до 0.771;
- значение mAP50 — до 0.851;
- а mAP50–95 — до 0.475.
Особенно ощутимое улучшение наблюдалось при детекции класса scratch, где mAP50 вырос с 0.75 до 0.903, а mAP50–95 — с 0.426 до 0.573. Это подтверждает эффективность автоматизированной настройки модели под конкретный набор данных и специфику дефектов.
Внедрение модуля в основную архитектуру проекта предполагает его использование как стартовой точки в пайплайне подготовки модели. Код может быть интегрирован в пользовательский интерфейс, реализованный, например, с помощью Tkinter или PyQt, где пользователь заполняет параметры через форму. После этого параметры передаются в генератор YAML-файла, а затем запускается процесс обучения через вызов subprocess с передачей скрипта train.py и соответствующих аргументов командной строки.
Инфраструктурно модуль совместим с большинством CI/CD-платформ (например, GitHub Actions или GitLab CI), что позволяет использовать его в регулярных тестах и сборках моделей. Это особенно актуально в случае многократного переобучения моделей на актуальных данных, поступающих с производственного оборудования (например, систем промышленного зрения на прокатных станах).
Кроме того, модуль может быть обёрнут в REST API с помощью Flask или FastAPI, что позволит вызывать обучение удалённо, передавая параметры через HTTP-запрос. Это решение уместно в случае построения централизованной платформы, где обучение происходит на выделенных серверах, а взаимодействие с клиентскими интерфейсами осуществляется удалённо.
Заключение
Разработанный программный модуль, обеспечивающий сбор пользовательских параметров и автоматическую генерацию конфигурации для обучения модели YOLOv9-s, продемонстрировал практическую эффективность. Результаты эксперимента показали улучшение точности и полноты обнаружения объектов по сравнению с обучением на стандартных настройках. Модуль легко интегрируется в существующие пайплайны и может использоваться в проектах по автоматизированной визуальной инспекции, в том числе в задачах промышленной дефектоскопии. Дальнейшая работа предполагает адаптацию решения под другие архитектуры и расширение функциональности ввода.
Список литературы
- Лутц М. Изучаем Python. — 5-е изд. — СПб.: Питер, 2021. — 1216 с.
- Paszke A., Gross S., Massa F., et al. PyTorch: An Imperative Style, High-Performance Deep Learning Library // Advances in Neural Information Processing Systems. — 2019. — Vol. 32