В статье «Каждая царапина на виду. Видим битые машины и экономим деньги автопарка» мы взглянули на проект со стороны бизнеса и разобрались, как цифровизация техосмотра помогает экономить ресурсы, снимать нагрузку со специалистов и ускорять процессы в автопарке.
Но за выгодами стоит интересная техническая история.
Как из сырых фотографий, собранных с Avito и Kaggle, удалось построить работающую систему?
Какие алгоритмы лежат в основе «компьютерного зрения»?
И почему оно распознаёт вмятины, отсутствующие детали и разбитые стекла не хуже внимательного механика?
Сегодня мы расскажем, как создавалось решение: от подготовки нестандартного датасета до интеграции. Эта статья для тех, кому мало экономических выгод и хочется заглянуть глубже, чтобы понять, как все устроено.
Задачи, скрытые за “хочу” от заказчика
За лаконичными бизнес-целями всегда скрывается длинная цепочка технических вызовов.
Крупный автопарк требует постоянного контроля состояния машин, однако традиционные проверки занимают время и ресурсы. Для эффективной работы важно оптимизировать затраты времени, не увеличивать нагрузку на персонал и оценивать объективную картину состояния транспорта.
Но простые строки запроса превратились для нас в настоящий айти-квест. Нужно было научить систему видеть детали кузова, различать типы повреждений и встроить всё в корпоративную инфраструктуру клиента, не ломая привычные процессы.
Поэтому задачи для команды звучали куда сложнее:
- создать модуль, который автоматически определяет повреждения;
- фиксировать не только факт наличия дефекта, но и его тип;
- принимать снимки с разных ракурсов (спереди, сзади, сбоку);
- работать как часть корпоративной инфраструктуры заказчика через API и RabbitMQ.
А главным вызовом проекта стало отсутствие готового датасета. Нам предстояло собрать и разметить картинки с нуля, чтобы научить компьютерное зрение смотреть на машины так же внимательно, как опытный механик.
Сложности на пути к автоматическому техосмотру
Когда цели ясны и амбициозны, настоящая битва начинается внутри проекта. Разработчики NooSoft должны были создать устойчивую, точную и интегрированную подсистему для автопарка. И вот с чем пришлось столкнуться:
- Ограниченный датасет
Изображений «ГАЗелей» и «ГАЗонов» в открытых источниках слишком мало, а те, что удавалось найти, разнились по качеству, освещению и углам съёмки. Каждое фото требовало ручной сегментации через MakeSense.AI. - Обработка разных типов повреждений
Решение должно уметь различать вмятины, сильные царапины и отсутствие элементов. Первые попытки классифицировать каждый тип отдельно оказались нестабильными. Программистам пришлось корректировать классы и перемаркировать файлы, чтобы достичь необходимой точности. - Ограниченные вычислительные ресурсы
Обучение проходило в Google Colab, где есть строгие лимиты на GPU и время работы. Чтобы не потерять качество распознавания, пайплайн пришлось оптимизировать и тщательно тестировать, балансируя между скоростью и стабильностью. - Влияние ракурса и освещения
Даже малые отклонения камеры, тени или блики снижали детекцию. Выходом стала аугментация кадров и калибровка на специально подготовленных кадрах с нестандартными условиями.
Каждый фактор формировал архитектуру решения, влиял на выбор моделей и подход к обработке данных. В итоге родилась система, способная точно видеть мельчайшие повреждения и отдавать результат в привычной для бизнеса форме.
Компьютерное зрение на службе автопарка
Когда задачи и технические вызовы были определены, начался этап обычного многочасового кодинга (ну или реальной магии, если вы не сталкиваетесь с этим ежедневно). Разработчики приступили к превращению хаотичных фото в структурированный массив информации и работающий модуль распознавания повреждений.
Подготовительный этап
Обучение модели требовало тщательной подготовки. Мы собрали изображения с Avito, Kaggle и других источников, вручную размечали их через MakeSense.AI. Итоговый набор получился около 3200 картинок.
После ручной сегментации мы столкнулись с классической проблемой компьютерного зрения: недостаточное разнообразие набора данных может сильно влиять на достоверность результата.
Машины в реальных условиях могут фотографироваться под разным освещением, с лёгкой или сильной тенью, под разными углами и на фоне разных объектов. Нужно учесть множество условий, чтобы алгоритм не «запутывался» и не ошибался.
Для решения проблемы пришлось применить аугментацию – набор техник, которые искусственно увеличивают датасет. На практике это выглядело так:
- повороты и сдвиги: снимки немного наклонялись, отражая вариации угла съёмки водителей;
- изменение яркости и контрастности: имитировались условия от яркого солнца до сумерек и облачности;
- шум и размытие: добавлялись мелкие искажения, как если бы съемка была быстрая и неаккуратная;
- отражения и блики: для того, чтобы корректно обрабатывать бликующие стекла и металлические детали;
- масштабирование и обрезка: меняли масштаб и положение в кадре, имитируя вариации позиций камеры.
Такие действия позволили сбалансировать датасет, сделать его более «жизнеспособным» и подготовить к «боевым» условиям, где качество может быть далеким от идеала. Теперь модель устойчива к внешним факторам и точнее распознает повреждения в самых разных сценариях.
Архитектура и и обработка данных
Система построена как модуль, который легко интегрируется в корпоративную ERP через API и очередь сообщений RabbitMQ. Водитель делает снимки автомобиля с четырёх ракурсов и загружает их в приложение. Фото не обрабатываются напрямую, а сначала становятся в очередь.
Дальше запускается внутренний процесс, незаметный для обычного глаза, из нескольких последовательных шагов:
- Детекция элементов
На фото алгоритм ищет ключевые детали: стекла, фары, зеркала, поворотники, дверные ручки, крышку бензобака. Для этого используется YOLO – она умеет быстро и точно выделять объекты на изображении, даже если они маленькие или частично закрыты. - Классификация состояния
Каждое выделенное «окно» с деталью передаётся классификатору на базе модифицированного ResNet. Он решает, есть ли повреждение, и какого оно типа: вмятина, сильная царапина, отсутствие элемента или потеря пластика. - Агрегация
Система объединяет результаты с разных ракурсов в единый ответ – JSON-объект, который содержит всю информацию о состоянии автомобиля и готов к интеграции в ERP.
Архитектура построена так, чтобы любой новый шаг или проверка легко вписывались в рабочий поток.
Модуль обрабатывает до 10 снимков за один запрос, формируя общий вывод для каждого автомобиля. Он просто масштабируется: можно добавлять новые классы повреждений, расширять типы транспортных средств или интегрировать дополнительные аналитические инструменты.
Результаты
После нескольких месяцев разработки, тестов и тонкой настройки проект показал впечатляющие показатели на тестовом запуске.
- Точность распознавания повреждений
Решение уверенно определяет до 90% наличия вмятин, сильных царапин, отсутствие элементов и повреждения ключевых деталей автомобилей. Что для реальных условий, с разным освещением и ракурсами, является отличными показателями. - Скорость обработки
Один запрос обрабатывается всего за 1–2 минуты. Задержка зависит от очереди сообщений и ресурсов сервера. RabbitMQ позволяет интегрировать модуль в существующие бизнес-процессы. - Эффективность работы с данными
Начальный датасет включал около 3200 изображений. При работе на реальном автопарке постепенно алгоритм дообучается на новых снимках. Поэтому, чем больше автомобилей проходит проверку, тем точнее становятся результаты. - Влияние на бизнес-процессы
Теперь техосмотр можно проводить без лишней рутины. Водителю достаточно сделать несколько фото. Такой формат снижает нагрузку на специалистов, экономит человеко-часы, ускоряет обслуживание и помогает компании одновременно сокращать расходы и повышать эффективность автопарка.
Масштабирование и развитие
Распознавание повреждений изначально создавалось как модульная система, готовая к росту и адаптации под новые задачи. Архитектура продумана так, чтобы с расширением датасета и ростом количества обрабатываемых машин точность и надежность только увеличиваются.
Технологию легко дообучить под новые марки автомобилей, грузовиков и даже спецтехнику – достаточно собрать и разметить соответствующие изображения. Кроме того, она подходит для предрейсовых осмотров: автомобили можно проверять автоматически перед выходом на линию, снижая риски аварий и соблюдая регуляторные требования без участия инспекторов.
В будущем функционал можно расширить, добавив прогноз ресурса автомобилей и аналитику для обновления автопарка. Привычный техосмотр превращается в управляемый и прозрачный процесс.
По запросу можно продолжать развитие – подключать внешние API (например, агрегаторы запчастей), расширять набор анализируемых данных или добавлять сценарии для каршеринга, вторичного рынка и страховых кейсов.
Итоги работы над системой распознавания повреждений
Проект показал, как продуманный комплексный подход к созданию ИИ-систем трансформирует ограниченные исходные данные в масштабируемые решения.
NooSoft сумел сбалансировать бизнес-цели и технические вызовы:
- заказчик получил быстрый и управляемый инструмент, способный обрабатывать несколько фото за один запрос и минимизировать участие специалистов;
- разработчики решили задачи по ограниченному датасету, нестандартным ракурсам, освещению и оптимизации моделей.
Система спроектирована так, чтобы её можно было развивать дальше под новые задачи и форматы проверки. Это еще один шаг к тому, чтобы техосмотр превратился в управляемый процесс, где любые действия совершаются на основе данных, а не догадок.
Дальше дело масштаба: интеграция с корпоративными продуктами, страховыми платформами, внешними API и новыми типами транспорта.
Модуль уже стал основой для будущих цифровых сервисов.
Если интересно, как внедрять подобные технологии в ваш бизнес, свяжитесь с нами и мы обсудим конкретные кейсы.