Multi-label классификация на встраиваемых устройствах: полное руководство 2026 | AiManual
AiManual Logo Ai / Manual.
12 Мар 2026 Гайд

Практическое руководство по multi-label классификации изображений для встраиваемых устройств

Пошаговое руководство по созданию multi-label классификатора изображений для встраиваемых устройств. Сбор датасета, разметка, выбор модели, оптимизация и деплой

Зачем вообще это нужно?

Представьте: у вас есть планшет, который работает как умная камера в квартире. Он должен не просто детектировать движение, а понимать, что именно находится в кадре: телевизор, диван, стол, лампа. И все одновременно. Это multi-label классификация - задача, где одно изображение может принадлежать нескольким классам сразу.

И вот здесь начинается боль: большинство туториалов показывают multi-label на мощных GPU, но как быть, когда у вас встроенное устройство с ограниченной памятью и процессором? Давайте разбираться.

Важно: все примеры и инструменты актуальны на 12 марта 2026 года. Если вы читаете это позже - проверяйте версии. MobileNetV4 уже вышел, EfficientNet-Lite обновился, а TensorFlow Lite получил новые оптимизации.

1Определяем задачу и собираем данные

Первая ошибка - начать с модели. Не делайте так. Сначала ответьте: какие объекты вы хотите распознавать? Конкретно. "Мебель" - плохо. "Кресло, стол, диван, торшер" - лучше.

Сбор данных для встраиваемого устройства имеет специфику: снимайте в условиях, максимально близких к эксплуатации. Если камера будет висеть под углом 45 градусов - собирайте фото именно с таких ракурсов. Используйте сам планшет для съемки, чтобы учесть особенности его камеры (широкоугольник, дисторсию, цветопередачу).

💡
Сколько нужно изображений? Минимум 200 на класс для старта. Но в multi-label это условно: один кадр может содержать несколько классов, так что общее число изображений может быть меньше. Главное - покрыть все возможные комбинации объектов.

2Размечаем как профи

Multi-label разметка - это не bounding boxes. Это бинарные флаги для каждого класса. На изображении с диваном и столом отмечаете оба класса. Звучит просто, но здесь поджидают две ловушки.

Ловушка первая: частичная видимость. Виден только угол дивана - это диван или нет? Решайте заранее и документируйте правила. Ловушка вторая: контекстные объекты. На столе стоит ваза - отмечать вазу как отдельный класс или считать частью стола?

Используйте инструменты с поддержкой multi-label. Например, Roboflow (да, это партнерская ссылка, но я действительно им пользуюсь) Roboflow позволяет быстро размечать такие датасеты. Если бюджет нулевой - CVAT или LabelImg с доработками.

Про автоматизацию разметки я подробно писал в статье "Разметка данных: автоматизируй, экономь, избегай ошибок". Основная мысль: не размечайте вручную то, что можно предразметить моделью-учителем. Используйте предобученный классификатор для начальной разметки, потом только корректируйте.

3Выбираем архитектуру под железо

Вот здесь многие ошибаются. Берем ResNet-50 потому что "она хорошая". А потом удивляемся, почему на планшете инференс занимает 3 секунды.

Для встраиваемых устройств на 2026 год у нас есть несколько фаворитов:

  • MobileNetV4 - последняя версия от Google, оптимизирована specifically для мобильных устройств. Поддержка аппаратного ускорения через делегаты TFLite.
  • EfficientNet-Lite - без механизма squeeze-and-excitation для лучшей совместимости с TFLite. Выбор номер один для многих embedded проектов.
  • GhostNet - легкая архитектура, которая использует дешевые операции для генерации дополнительных feature maps. Потребляет меньше памяти.

Критерии выбора простые: размер модели (MB), FLOPs (вычислительная сложность), поддержка квантования. Проверяйте benchmark для вашего конкретного устройства - производительность сильно зависит от процессора и наличия NPU.

АрхитектураРазмер (MB)Точность на ImageNetПоддержка TFLite
MobileNetV4 Small5.274.5%Полная
EfficientNet-Lite06.175.1%Полная
GhostNet 1.0x5.273.9%Частичная

4Готовим данные и аугментируем

Multi-label классификация ненавидит несбалансированные данные. Если у вас 1000 изображений с диваном и 50 с торшером - модель проигнорирует торшер. Решений несколько:

  • Oversampling для редких классов (повторение изображений с этими объектами)
  • Class weighting в функции потерь (даем больший вес ошибкам на редких классах)
  • Генерация synthetic данных с помощью аугментаций

Аугментация для multi-label имеет особенность: некоторые трансформации могут сделать объект неузнаваемым, но метка останется. Повернули стол на 90 градусов - это все еще стол. Но если вырезали кусок изображения, где был только край дивана - стоит ли оставлять метку "диван"? Решайте.

Подробнее про аугментацию смотрите в моей статье "Аугментация данных для борьбы с переобучением". Там разобраны практические методы, которые работают в 2026 году.

5Обучаем с учетом multi-label

Функция потерь - binary cross-entropy для каждого класса отдельно, потом суммируем. Не используйте softmax! Softmax предполагает, что классы взаимоисключающие, а у нас они могут сосуществовать.

Важное обновление 2025-2026: появились асимметричные функции потерь для multi-label, которые по-разному штрафуют false positive и false negative. Проверяйте последние исследования - иногда они дают прирост в 2-3%.

Метрики качества: precision и recall для каждого класса отдельно. Не усредняйте слепо! Если "торшер" имеет recall 30%, а "диван" 95% - у вас проблема с редкими классами. F1-score - хороший компромисс.

Порог классификации: по умолчанию 0.5, но для каждого класса оптимальный порог может быть свой. Используйте precision-recall curve чтобы найти лучшие пороги.

6Оптимизируем для устройства

Обученная модель весит 50MB? На планшете с 2GB памяти это приемлемо, но если у вас устройство с 256MB - нужно сжимать.

  1. Квантование - уменьшаем точность весов с float32 до int8. TFLite поддерживает post-training quantization и quantization-aware training. Второе лучше, но требует переобучения.
  2. Прунинг - обрезаем малозначимые веса. В 2026 году появились методы structured pruning, которые удаляют целые каналы, а не отдельные веса. Это дает реальное ускорение на железе.
  3. Дистилляция - обучаем маленькую модель (студент) на предсказаниях большой (учитель). Для embedded работает хорошо.

Используйте TensorFlow Lite с аппаратными делегатами. Для Android с NPU - NNAPI Delegate. Для процессоров ARM - XNNPACK Delegate. Это может ускорить инференс в 5 раз.

7Деплоим и мониторим

Ура, модель готова! Теперь самое интересное - перенос на устройство. И здесь поджидает главная ловушка: отладка.

На десктопе модель работала с точностью 92%. На планшете - 78%. Почему? Разные препроцессинги (библиотеки ресайза изображений дают разный результат), разная арифметика с плавающей точкой, кэширование.

Решение: делайте golden tests - набор из 50-100 изображений, для которых знаете правильные ответы. Запускайте инференс на устройстве и сравнивайте с эталоном. Расхождения более 5% - ищите проблему в препроцессинге или квантовании.

Что может пойти не так (и обязательно пойдет)

Я собрал типичные ошибки, которые встречал в проектах за последний год:

ОшибкаСимптомыЛечение
Классы коррелируютЕсли есть "стол", то всегда есть "стул". Модель путаетСобирать данные без корреляции или объединять классы
Фон слишком однообразныйТочность 95% в тесте, 60% в продакшенеАугментировать фон, собирать разнообразные данные
Разрешение не соответствует железуИнференс 2 секунды, устройство перегреваетсяУменьшить input resolution, пожертвовать точностью
Метаданные не отслеживаютсяНеизвестно, какая версия модели на устройствеВнедрить versioning моделей и A/B тесты

Подробнее о причинах падения моделей читайте в статье про ошибки компьютерного зрения.

Вместо заключения: что будет дальше

К 2027 году multi-label классификация на встраиваемых устройствах станет тривиальной задачей. Почему? Появятся специализированные NPU в каждом планшете и телефоне, фреймворки автоматически будут оптимизировать модели под конкретное железо, а сбор данных можно будет делать симуляцией в Unreal Engine 6.

Но пока что - вам придется пройти весь этот путь. От сбора данных до деплоя. Главный совет: начните с самого простого пайплайна. MobileNetV2 (да, второй версии, она проще), 5 классов, минимальный датасет. Получите работающий прототип за неделю. Потом улучшайте.

И последнее: не зацикливайтесь на точности. Для умной камеры точность 85% может быть достаточной, если false positive не критичны. Лучше работающая система с приемлемой точностью, чем идеальная модель, которая никогда не попадет на устройство.

Подписаться на канал