Обучить детектор российских автомобильных номеров на случайном наборе картинок из интернета почти невозможно: модель начнёт путать регионы, терять символы на грязных пластинах и сбоить на прицепах с квадратными знаками. Для задачи распознавания госномеров РФ нужен специализированный russian license plate dataset — размеченная выборка изображений с координатами пластин и транскрипцией символов, собранная с учётом формата ГОСТ Р 50577.
В этой статье разберём, какие открытые датасеты существуют для русских номеров, как устроена разметка, как подготовить данные к обучению YOLO или OCR-модели и на какие подводные камни обратить внимание при сборе собственной выборки.
Что такое датасет российских номеров и зачем он нужен
Датасет номерных знаков — это набор изображений, где каждая пластина снабжена аннотацией. Минимальная аннотация включает bounding box (рамку вокруг номера), полная — координаты углов пластины и строку с текстом номера. Такие данные используются на двух этапах конвейера ANPR (Automatic Number Plate Recognition): детекция пластины в кадре и последующее распознавание символов.
Российская специфика усложняет задачу. Стандартный номер формата «А123БВ77» отличается от европейских и американских пластин шрифтом Road Numbers, кириллическим набором букв (используются только 12 букв, имеющих латинские аналоги) и трёхзначным кодом региона. Кроме того, существуют отдельные типы знаков: для прицепов, мотоциклов, тракторов, такси, дипломатических и военных машин — у каждого своя геометрия.
Поэтому датасет, собранный на зарубежных данных, для РФ не подходит: модель, обученная на европейских пластинах, будет систематически ошибаться в коде региона и путать буквы «В» и «В» кириллической раскладки.
Обзор доступных открытых датасетов
Полноценных публичных датасетов именно российских номеров немного, и их качество сильно различается. Ниже — основные варианты, которые можно найти в открытом доступе. Перед использованием обязательно проверяйте лицензию конкретной выборки: часть данных публикуется только для исследовательских целей.
- 📦 Nomeroff Net dataset — данные, собранные вокруг одноимённого open-source проекта; включают номера нескольких стран, в том числе РФ, с разметкой углов пластин и текстов.
- 🎓 Выборки на Kaggle и GitHub — энтузиасты регулярно публикуют наборы кадров с российскими номерами, часто в формате YOLO или COCO; качество разметки нужно проверять вручную.
- 🚗 OpenALPR / подобные бенчмарки — универсальные выборки, где российские номера присутствуют фрагментарно; годятся для дообучения, но не как единственный источник.
- 🛠️ Синтетические генераторы — скрипты, рендерящие пластины по ГОСТу с наложением на фоны; полезны как дополнение к реальным кадрам.
⚠️ Внимание: номерной знак — персональные данные в спорном правовом статусе. Перед сбором собственного датасета с камер или видеорегистраторов убедитесь, что использование изображений не нарушает законодательство о персональных данных и авторские права владельцев видео.
Форматы разметки и структура данных
Разметка определяет, какую задачу сможет решить модель. Для детекции достаточно прямоугольной рамки, а вот для выравнивания перспективы пластины перед OCR нужны координаты четырёх углов. Транскрипция текста номера требуется для обучения распознавателя символов.
| Формат | Что содержит | Типовая задача |
|---|---|---|
| YOLO (txt) | Класс + нормированные координаты центра и размеров рамки | Детекция пластины |
| COCO (JSON) | Рамки, сегментация, категории, метаданные | Детекция и сегментация |
| Pascal VOC (XML) | Рамки объектов с классами | Детекция, совместимость со старыми фреймворками |
| Кропы + текст | Вырезанные пластины и строка-метка | OCR / распознавание символов |
| Ключевые точки | Координаты 4 углов пластины | Выравнивание перспективы |
На практике удобнее всего хранить мастер-разметку в одном формате (например, COCO) и конвертировать под конкретный фреймворк скриптом. Так проще исправлять ошибки разметки — правка делается в одном месте.
Конвертацию между форматами удобно делать через библиотеки вроде pycocotools или утилиты типа roboflow — они снижают риск ошибок при пересчёте координат.
Как подготовить датасет к обучению
Сырые данные почти никогда не готовы к обучению напрямую. Ниже — типовой порядок подготовки, который не зависит от конкретного фреймворка.
☑️ Подготовка датасета номеров РФ
Ключевой момент — сплит выборки. Кадры из одного видео должны попадать только в одну часть (train или val), иначе модель запомнит конкретные сцены, и метрики на валидации будут обманчиво высокими. Проверить это можно, сгруппировав кадры по источнику перед разбиением.
Второй момент — валидация транскрипций. Российский номер подчиняется строгому шаблону: буква, три цифры, две буквы, код региона. Простая регулярная проверка отсеивает большинство ошибок ручной разметки:
^[АВЕКМНОРСТУХ]\d{3}[АВЕКМНОРСТУХ]{2}\d{2,3}$
Строки, не прошедшие проверку, стоит отсмотреть вручную: это либо опечатка, либо нестандартный тип знака, который нужно разметить отдельным классом.
Аугментация: как компенсировать нехватку реальных кадров
Реальные условия съёмки — дождь, грязь на пластине, ночная подсветка фарами, заснеженность — в открытых датасетах представлены слабо. Аугментация позволяет синтетически расширить выборку, имитируя эти условия.
- 🌧️ Погодные эффекты: дождь, снег, туман — библиотека Albumentations имеет готовые трансформации.
- 🔆 Освещение: изменение яркости, контраста, имитация засветки фарами.
- 📐 Геометрия: повороты, перспективные искажения, масштабирование — камеры редко смотрят на пластину строго фронтально.
- 🟤 Загрязнения: наложение пятен и разводов на область пластины повышает устойчивость OCR.
Важно не переусердствовать: чрезмерная аугментация уводит распределение данных от реального, и модель начинает хуже работать на чистых кадрах. Разумный подход — применять аугментацию с умеренной вероятностью к части батча.
⚠️ Внимание: при аугментации изображений с разметкой трансформации должны применяться и к аннотациям. Если повернуть картинку, но не пересчитать координаты рамки, обучение даст смещённые детекции. Используйте библиотеки, которые трансформируют изображение и разметку синхронно.
Типичные ошибки при работе с датасетами номеров
Первая и самая частая ошибка — утечка данных между train и validation, когда кадры одного видео оказываются в обеих выборках. Модель показывает отличные метрики на валидации и резко проседает в реальной работе. Диагностика проста: сравните метрики на val и на полностью независимом тестовом наборе с другой камеры.
Вторая ошибка — игнорирование редких типов знаков. Если в обучении 99% стандартных пластин, квадратные номера прицепов модель будет детектировать плохо или не детектировать вовсе. Решение — целевой досбор данных по слабо представленным классам или взвешивание классов при обучении.
Третья — разметка «вслепую» без проверки. Даже в популярных открытых датасетах встречаются смещённые рамки и опечатки в транскрипциях. Выборочный ручной аудит хотя бы нескольких сотен примеров даёт представление о реальном качестве данных.
Как оценить качество готового датасета перед обучением
Возьмите случайные 200–300 примеров и проверьте: совпадают ли рамки с реальным положением пластин, корректны ли транскрипции, нет ли дублей. Доля явных ошибок выше нескольких процентов — повод либо чистить данные, либо искать другой источник. Также проверьте разнообразие: ракурсы, освещение, типы транспорта, регионы.
Сбор собственного датасета
Если открытые данные не покрывают вашу задачу (например, нужна конкретная камера, ракурс или тип транспорта), остаётся собственный сбор. Источники кадров: записи с видеорегистраторов, камер наблюдения, парковочных систем — при условии, что у вас есть право на их использование.
Разметку удобно выполнять в инструментах вроде CVAT или Label Studio: оба поддерживают рамки, полигоны и ключевые точки, а также предразметку — сначала прогоняете кадры через готовую модель-детектор, а затем вручную исправляете ошибки. Это сокращает время разметки в разы по сравнению с разметкой с нуля.
Качество датасета важнее объёма: несколько тысяч чисто размеченных разнообразных кадров дают модель лучше, чем десятки тысяч дублей с ошибочной разметкой.
При сборе заранее продумайте покрытие сценариев: день и ночь, разные сезоны, скорость движения, расстояние до камеры. Датасет, собранный за один солнечный день на одной парковке, не обобщится на другие условия.
FAQ: частые вопросы
Можно ли обучить распознавание российских номеров только на синтетических данных?
Полностью — вряд ли. Синтетика хорошо передаёт геометрию и шрифт, но плохо имитирует реальные загрязнения, блики и артефакты камер. Рабочая стратегия — предобучение на синтетике с последующим дообучением (fine-tuning) на реальных кадрах.
Какой минимальный размер датасета нужен для детектора?
Точного порога нет: он зависит от разнообразия сцен и архитектуры модели. На практике начинать эксперименты можно с нескольких тысяч размеченных изображений, оценивая по валидационным метрикам, достаточно ли данных, или требуется досбор.
Нужно ли размечать код региона отдельно?
Обычно нет — весь номер размечается как одна строка, а OCR-модель учится читать его целиком. Отдельная разметка региона имеет смысл только для специальных задач, например для отсева машин по регионам без полного распознавания.
Подойдёт ли датасет украинских или казахских номеров для русских пластин?
Форматы знаков различаются, поэтому напрямую — нет. Однако смешанное обучение на данных нескольких стран иногда улучшает общую устойчивость детектора, если финальное дообучение делается на российской выборке.
Как проверить, что модель переобучилась на датасете?
Признаки: метрики на train и val сильно расходятся, а на независимом тестовом наборе с другой камеры качество заметно ниже валидационного. Лечение — расширение и разнообразие данных, аугментация, регуляризация.