$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Набор данных, использованный в этой статье, был приобретён из поля AS/RS отдела логистики компании Longyan Tobacco Industry Co., Ltd. В этом исследовании не участвовали люди или животные. Этическое одобрение не требовалось.
Сбор и настройка наборов данных
Аппаратная конфигурация: Установите промышленную камеру (например, MV-CA013-A0GM) с объективом фокусного расстояния 8 мм (например, MVL-HF0828M-6MPE) на грузовую платформу крана-стекера. Подключите камеру к управляющему ПК через кабель GigE и беспроводное устройство точки доступа (например, BH-ANT5158S-14HV, BH-MS-AC1600HWH). Разместите ленточную светодиодную лампу (например, MV-LLDS-1002-38-W) вокруг камеры для обеспечения равномерного освещения.
Настройка параметров камеры: Настройте камеру с помощью программного обеспечения производителя (например, MVS). Установите разрешение получения на 1280 x 1024 пикселя. Установите режим спуска на Hardware Trigger и синхронизируйте его с системой позиционирования крана стекера. Установите время экспозиции на 100 мс и усиление на 5 дБ, чтобы минимизировать размытие движения и шум. Рабочее расстояние между камерой и сигаретными коробками составляет примерно 550 мм.
Коллекция изображений: промышленная камера с триггером автоматически захватывает изображение при размещении лотка во время хранения и извлечения коробок сигарет. Соберите всего 4 835 RAW; типичные изображения показаны на рисунке 1.
Аннотация изображения: Используйте инструмент с открытым исходным кодом LabelImg. Для каждого изображения нарисуйте ограничивающие рамки вокруг каждого видимого элемента бренда сигарет. Присваивайте правильное название бренда (например, Hongzhuang, Gutian) в качестве классовой метки для каждого ограничивающего рамки. Сохраняйте аннотации в стандартном формате одноступенчатого обнаружения, с одним txt-файлом на каждое изображение.
Контроль качества: второй аннотатор проверяет случайно выбранные 20% аннотированных изображений. Любые несоответствия обсуждаются и устраняются, обеспечивая согласованность маркировки.
Стратегия дополнения данных
В этом разделе подробно описаны как традиционные, так и продвинутые методы аугментации, применяемые к наборам данных. Начальные данные и дополненные данные объединяются в новый набор данных, который затем делится на обучающий набор, набор валидации и тестовый набор для обеспечения справедливости оценки.
Традиционное дополнение данных32: Эти преобразования применяются в реальном времени обучающим конвейером (например, с использованием библиотек Albumentations или PyTorch Transforms) с определённой вероятностью для каждой партии.
Геометрические преобразования: Вращение: Случайное поворот изображений под углом от -45° до +45°. Масштабирование: Случайное масштабирование изображений в диапазоне от 0,8 до 1,2 раза. Горизонтальный переворот: случайным образом переворачивайте изображения горизонтально с вероятностью 100%. Случайное обрезывание: случайным образом обрезайте участок от 80% до 100% исходной площади изображения.
Фотометрические преобразования: яркость и контраст: Регулировать яркость и контраст случайным образом из [0.6, 1.4]. Гауссов шум: Добавьте гауссовский шум со стандартным отклонением, случайным образом выбранным от [0, 0,01 * 255] до 10% изображений. Гауссовское размытие (Gaussian blur) с размером ядра от 3x3 до 10% изображений.
Симуляция окклюзии: случайным образом разместите от 1 до 3 прямоугольных участков окклюзии (покрывающих до 5% площади изображения) на изображениях. Эти участки заполнены случайным шумом или средними значениями пикселей изображения.
Расширенное дополнение данных: региональное копирование и вставка
Мотивация и влияние: Основной целью этого целевого увеличения было решение критической проблемы данных: у некоторых брендов сигарет было очень мало экземпляров (всего одно изображение). Стандартный случайный сплит теста проверки поездов может потенциально выделить все экземпляры редкого бренда в один набор (например, все в тестовый набор), в результате чего модель не имеет возможности изучать или проверять этот бренд. Этот метод искусственно увеличил размер выборки для этих недостаточно представленных брендов, обеспечивая достаточное количество экземпляров, распределённых по обучающим, валидационным и тестовым наборам. Этот фундаментальный шаг предотвращает катастрофические сбои в редких категориях и является необходимым условием для значимой производительности модели и обобщения по полному набору брендов.
Этот этап требует предварительно обученной сегментной базовой модели на начальном наборе данных и модели Segment Anything (SAM)33.
Объекты источника сегментов: Для изображений коробок сигарет от недостаточно представленных брендов используйте модель SAM для создания точных сегментационных масок. Используйте режим подсказки, кликнув по функции бренда коробки сигарет для запуска сегментации. Ручную валидацию и доработку сгенерированных масок для обеспечения точности. Сохраните сегментированные изображения коробок сигарет с прозрачным фоном в формате PNG. Это создаёт библиотеку изолированных экземпляров объектов.
Генерируйте фоновые маски: Используйте заранее обученную сегментальную базовую модель для сегментации экземпляра на наборе фоновых изображений (изображения с достаточным свободным пространством или простые фоны). Модель будет выводить бинарные маски, показывающие области, уже занятые объектами.
Обработка масок и вставка объектов: для каждой фоновой маски используйте библиотеку OpenCV (функция 'cv2.approxPolyDP' с эпсилонным коэффициентом 0,02 * контурного периметра) для подгонки кривой и линеаризации рёбер маски, получая упрощённое многоугольное представление свободного пространства. Определите самую большую непрерывную область полигона внутри фоновой маски как область целевой пасты. Случайным образом выберите сегментированный исходный объект из библиотеки. Измените размер (сохраняя соотношение сторон) и примените аффинное преобразование (небольшое вращение между -5° и +5°, небольшое сдвиг), чтобы естественно вписаться в целевой область пасты, чтобы она не перекрывалась с границами существующих объектов. Используйте альфа-смешивание, чтобы плавно вставить преобразованный объект на фоновый образ в рассчитанном месте. Общая структура технологии дополнения данных, основанная на методе копирования-вставки в конкретных областях, показана на рисунке 2. Программно генерируйте соответствующий новый файл аннотации txt для вставленного объекта, обновляя координаты ограничивающих рамок и метку класса.
Окончательный дополненный набор данных: этот офлайн-процесс генерирует 600 новых синтетических изображений. Комбинируйте их с исходными 4 835 изображениями и ещё 1 167 изображениями, полученными с помощью традиционных технологий увеличения, описанных выше, чтобы получить окончательный набор из 6 602 изображений. Разделите итоговый набор данных на обучающие (70%, 4 621 изображение), валидацию (20%, 1 320 изображений) и тестовые (10%, 661 изображение), чтобы изображения из той же оригинальной последовательности оставались в одном разделе для предотвращения утечки данных.
Модификация модели для создания предлагаемого улучшенного детектора
Оптимизированные алгоритмы обнаруженияобъектов 34 добились заметного прогресса в промышленной инспекции за последние годы. В этом разделе представлена подробная, пошаговая процедура модификации архитектуры базовой модели для создания предлагаемой модели. Модификации реализуются путём редактирования конфигурационного файла модели (например, config.yaml) и обеспечения включения соответствующих определений пользовательских модулей в кодовую базу. Объяснение каждой модификации приводится для разъяснения её роли в решении конкретных задач обнаружения. Структура предлагаемой модели показана на рисунке 3.
Замена модулей понижения дискретизации на модуль ADown: Стандартный модуль Convolution-BatchNorm-SiLU (CBS), используемый для понижения дискретизации, использует одноступенчатую свёртку, которая может служить информационным узкимместом 35, потенциально исключая мелкие детали, важные для распознавания маленьких коробок сигарет и детализированных логотипов брендов. Модуль ADown разработан для облегчения этой проблемы путём реализации структуры с двумя ветвями, которая захватывает и сохраняет более богатый набор признаков при сокращении пространственного разрешения. Одна ветвь уделяет приоритетное внимание сохранению локальных деталей высокой частоты, а другая охватывает более широкую и насыщенную контекстом обзор. Слияние этих дополняющих признаков приводит к более прочному и информативному представлению для последующих слоёв.
Шаги реализации действий
Определение модуля: Убедитесь, что пользовательский модуль PyTorch под названием ADown определен в файлах определения модели проекта. Этот модуль должен содержать две параллельные ветви. Первая ветвь должна состоять из двумерного слоя свёртки с ядром 3x3 и шагом 2. Вторая ветвь должна последовательно состоять из слоя максимального пула 2x2 (с шагом 2), за которым следует слой свёртки 1x1. Выходы этих двух ветвей должны быть объединены вдоль размера канала, а полученная карта признаков затем проходит через последний слой свёртки 1x1 для интеграции каналов и получения выхода. Структура модуля ADown показана на рисунке 4.
Редактирование конфигурационных файлов: Откройте базовый конфигурационный файл модели (config.yaml). Систематически идентифицируйте каждый экземпляр модуля CBS, настроенный для понижения дискретизации (то есть параметр шага установлен в 2). Замените каждый из этих модулей CBS новым модулем ADown.
Мотивация дизайна: Дизайн ADown мотивирован необходимостью минимизировать потерю информации в стандартных ступенчатых свертках, которые могут быть вредными для небольших объектов. Её структура с двумя ветвями вдохновлена идеей параллельной обработки для захвата как высокочастотных пространственных деталей (с помощью свёртки), так и низкочастотной контекстной информации (через пулирование), что обеспечивает более богатое многомасштабное представление признаков для последующих слоёв.
Интеграция модуля iEMA
Обоснование и принцип проектирования: Для повышения способности модели обнаруживать малые и частично скрытые цели необходимо включить механизм, способный эффективно моделировать многомасштабный пространственный контекст. Модуль iEMA достигает этого путём встраивания компонента эффективного многомасштабного внимания (EMA)36 в структуру инвертированного остаточного блока (iRMB)37 . iRMB обеспечивает вычислительно эффективную основу с использованием глубинно разделяемых сверток, тогда как компонент EMA явно фиксирует межмасштабные пространственные взаимодействия с помощью параллельного многоветвного дизайна. Эта интеграция позволяет модели динамически перекалибровать веса признаков, фокусируя внимание на наиболее разборчивых пространственных областях на разных масштабах, тем самым улучшая распознавание при окклюзии и для небольших объектов.
Шаги по реализации действий
Определение модуля: Убедитесь, что определен пользовательский модуль PyTorch с именем iEMA. Этот модуль должен сначала реализовать инвертированный остаточный блок. Этот блок обычно начинается с точечной свёртки для расширения канала, затем с глубинной свёрткой (например, 3x3) для извлечения пространственных признаков и, наконец, с поточечной свёрткой для проекции канала. Сразу после этого блока следует внедрить механизм внимания EMA. Механизм EMA обычно использует сгруппированные свёртки и межмерные взаимодействия для эффективного создания многомасштабной пространственной карты внимания без чрезмерных вычислительных затрат. Структура модуля iEMA показана на рисунке 5.
Редактирование конфигурационных файлов: В конфигурационном файле config.yaml найдите разделы, определяющие сеть шеи, а именно слои, непосредственно следующие за модулями C2f. В этих стратегических точках вставьте новый слой, который вызывает модуль iEMA.
Мотивация проектирования: модуль iEMA основан на принципе повышения различия признаков путём интеграции локального извлечения признаков (с помощью глубинной свёртки) с лёгким, но эффективным механизмом глобального моделирования контекста (EMA). Такой гибридный подход позволяет модели адаптивно фокусироваться на информативных областях на разных масштабах, что крайне важно для распознавания частично видимых логотипов и текста брендов.
Замена головки обнаружения на модуль DynamicHead
Обоснование и принцип проектирования: Оригинальная головка обнаружения может не оптимально справляться с существенными вариациями масштабов сигарет и сложной взаимосвязью задач локализации и классификации. Модуль DynamicHead решает эту проблему, объединяя три формы внимания в когерентную структуру: осознанное масштабирование, пространственное осознание и внимание к задаче. Компонент, учитывающий масштаб, динамически объединяет признаки с разных уровней пирамиды признаков, обеспечивая эффективное представление объектов всех размеров. Пространственный компонент использует стратегию разрежённой выборки для фокусировки вычислительных ресурсов на наиболее информативных областях в картах признаков. Компонент, ориентированный на задачи, адаптирует представление признаков специально для конкретных целей регрессии ограничивающих коробок и классификации категорий. Такой унифицированный подход приводит к более точным и надёжным прогнозам.
Шаги по реализации действий
Определение модуля: Это комплексный модуль, охватывающий три механизма внимания, описанные уравнениями (1) по (4). Внутренняя структура будет включать слои для вычисления масштабных весов, выполнения деформируемого пространственного внимания и применения специфических преобразований признаков, специфичных для задач.
(1)
(2)
(3)
(4)
Где WL(F) обозначает окончательное отображение признаков, уточнённое вниманием, полученное последовательно применением механизмов осознанного масштаба π L(F), пространственного осознанногоπ S(F) и задачно-осознанного πC(F) внимания к входной признаку F. Конкретно, в уравнении (2) πL(F) вычисляет вес внимания по шкале, сначала усредняя пространственные (S) и канальные (C) измерения, пропуская его через линейную функцию f(⋅) и жёсткую сигмоидную активацию σ(⋅). В уравнении (3) πS(F) выполняет разрежённое пространственное внимание, агрегируя признаки из K, выбранных ключевых точек pk, каждая с обучаемым смещением Δpk для фокусировки на дискриминативных областях и скаляром важности Δmk. В уравнении (4) πC(F) реализует задачно-осознанное внимание, применяя линейное преобразование (управляемое изученными параметрами (α1, β1,α 2,β 2)) к каждому каналу и выбором максимального отклика, что позволяет руководителю специализироваться на задачах классификации и регрессии. Структура модуля DynamicHead показана на рисунке 6.
Редактирование конфигурационных файлов: в файле config.yaml найдите раздел, определяющий голову модели, который изначально содержал модуль Detect. Замените его новой записью, которая вызывает модуль DynamicHead.
Мотивация дизайна: модуль DynamicHead основан на наблюдении, что головки обнаружения объектов должны быть адаптивны к масштабу, пространственному расположению и задаче. Её единая система внимания, формализованная в эквалайзерах. (1-4), позволяет модели динамически перекалибровать, что откликается на признаки на основе этих трёх измерений, что приводит к более надёжным прогнозам относительно вариаций масштаба и фоновых помех.
Обучение моделям
Убедитесь, что PyTorch 2.1.0, CUDA 12.1 и все зависимости установлены.
Командование подготовкой
Перед повторным обучением подготовьте разделённые изображения и аннотационные данные в стандартном одноступенчатом формате обнаружения. Создайте .yaml-файл, содержащий путь изображения и категорию данных. Согласно улучшению модели, исходный файл детектора .yaml заменяется на предложенный файл модели .yaml. Напишите train.py-файл, импортируйте пакет одноступенчатого детектора, загрузите обучающую модель и путь данных, а также установите некоторые параметры обучения, включая imgze=640, epochs=100, batch=4, workers=0, device='0', optimizer='SGD', close_mosaic=10 и т.д.
Гиперпараметры: ключевые параметры: размер входного изображения (640 x 640), размер пакета (4), начальная скорость обучения (0,01) с помощью планировщика косинусного отжига, оптимизатор SGD с импульсом (0,937) и снижение веса (0,0005). Мозаичное усиление включено по умолчанию.
Мониторинг обучения: Процесс обучения будет выдавать метрики для каждой эпохи. Следите за кривыми для потерь в обучении/валидации и mAP при 0,5, чтобы обеспечить сходимость и избежать перенагона. Обычно достаточно тренировки на протяжении 100 эпох.
Оценка и внедрение модели
Оценка: После тренировки лучшая модель сохраняется как runs/train/exp/weights/best.pt. Оценивайте это на наборе val, используя : bash python val.py --data cigarette_dataset.yaml --weights runs/train/exp/weights/best.pt. Скрипт будет выводить Precision, Recall, mAP на 0.5 и т.д. Убедитесь, что mAP соответствует необходимому порогу (например, 97,9%).
Вывод для верификации: запустить вывод на образцах изображений для визуальной проверки результатов обнаружения: bash python detect.py --weights runs/train/exp/weights/best.pt --source path/to/test/images --conf 0.5. Проверяя рассуждение, можно получить результаты обнаружения каждого изображения и скорость обнаружения модели.
Развертывание: Для развертывания в реальном времени в системе стекера-крана преобразите модель PyTorch (best.pt, ~4,7 МБ) в формат, например TensorRT или ONNX, для оптимальной скорости вывода. Итоговый результат — это ограничивающие рамки с метками классов (брендовыми названиями) и оценками доверия.