Добрый день, коллеги! Меня зовут Елена Волченко. В компании Финолаб я являюсь руководителем отдела машинного обучения и анализа данных. Этой статьей я хочу начать цикл публикаций о создании нашей командой сервиса дистанционной оценки технического состояния автомобилей на основе технологий искусственного интеллекта.

Мой рассказ будет разделен на две части. В первой расскажу о потребностях и проблемах в дистанционной оценке повреждений автомобилей. Во второй - о том, как мы решали эту задачу с помощью нейронных сетей и классического machine learning, с какими проблемами сталкивались, каких результатов достигли и что еще предстоит сделать.

Кому нужно онлайн-страхование автомобилей?

Для каждого автовладельца оформление ОСАГО или КАСКО является большой проблемой, требующей временных и финансовых затрат: подача заявки, приезд страхового агента в назначенное время, оплата и получение полиса. При ДТП получение страховых выплат связано еще с более длинным и сложным процессом: оформление протокола, приезд аварийного комиссара, долгое ожидание решения страховой компании и, возможно, судебные разбирательства по поводу суммы компенсации. Те, кто пользуется каршерингом, также сталкиваются с различными проблемами - компании после поездки находят непонятные повреждения и выставляют счета за ремонт. Все эти ситуации показывают проблемы в процессе оценки транспортных средств, решения которых ждут бизнес и автовладельцы.

Почему задача автоматизировать процесс осмотра повреждений автомобиля не была решена раньше? Дело в том, что именно сейчас совпало очень много факторов. Вырос уровень проникновения интернета, функциональность смартфонов, появилась возможность работы с массивами больших данных, а крупные индустрии столкнулись с острой необходимостью в снижении издержек за счет дальнейшей автоматизации процессов.

Бизнес нашей компании заключается в разработке, внедрении и сопровождении информационных систем для решения финансовых и технологических задач, в том числе и на основе технологий искусственного интеллекта. Мы следим за инновациями и много общаемся с бизнесом. Поэтому одними из первых в России увидели запрос на новое решение – автоматическую оценку технического состояния авто. Далее я расскажу о том, как разрабатывался наш сервис.

Как мы разрабатывали наш сервис

Предварительная обработка данных

Работы по созданию сервиса, как, впрочем, и любой другой интеллектуальной системы, начались с понимая того, что мы хотим получить на выходе готового продукта. И в этом нам очень помогли страховые компании и существующие нормативные документы, регулирующие страхование автомобилей. Виды определяемых повреждений и детектируемые сегменты автомобилей полностью соответствуют их требованиям. Наш сервис выделяет 24 сегмента на автомобилях и определяет 11 классов повреждений, начиная от мелких сколов краски и ржавчины и заканчивая отсутствующими деталями.

Классы детектируемых повреждений
Классы детектируемых повреждений

Если с выходами системы все оказалось достаточно просто, то для получения качественной входной информации пришлось приложить много усилий. На старте работ мы получили датасет размером 250 000 изображений автомобилей, среди которых были как целые, так и авто с повреждениями. Далее мы набрали команду разметчиков и начали обучение, а ровно через неделю поняли, что один разметчик за смену размечает 12-15 изображений и для разметки всего датасета нам нужны годы. Да и размечать изображения “с нуля” оказалось для них очень сложно.

Чтобы ускорить процесс разметки и облегчить работу разметчиков мы предложили и внедрили следующее решение. Разметив вручную первую тысячу изображений, обучили нейронную сеть выполнять черновую разметку. Корректировка такой разметки занимает в среднем на 36% меньше времени. Получив размеченный датасет из нескольких тысяч изображений, мы дообучили GAN (генеративно-состязательную сеть), добавили фильтрацию ансамблем нейронных сетей и получили возможность генерировать синтетические размеченные изображения, большинство из которых нуждается в минимальной корректировке. Периодически проверяли точность генерации изображений и при необходимости вносили корректировки. Даже на первых этапах такой подход позволил нам сократить время разметки в 4,2 раза, а постоянное дообучение обеих нейронных сетей на вновь размеченных данных позволило нам ускорить разметку более чем в 7 раз.

Сейчас наш датасет — это объединение реальных и искусственных авто, имеющих одинаковую ценность для создания сервиса. Это решение подходит как для сегментации изображений, так и для разметки повреждений.

Ручная разметка сегментов и сегментированное искусственное изображение
Ручная разметка сегментов и сегментированное искусственное изображение

Следующим этапом являлся вопрос предварительной обработки данных, которые мы получаем от клиента. Страховые компании традиционно оценивают автомобиль по 5 изображениям, сделанным на уровне задних и передних фар и фотографии крыши, но проведя анализ удобства таких требований для клиента, функциональности современных мобильных приложений, да и просто оценив, насколько правильно делают фотографии клиенты, мы приняли решение не ограничивать наших клиентов фотографиями, а дать им возможность записывать круговое видео автомобиля.

Таким образом, для работы с нашим сервисом клиент может как сделать фотографии, так и записать круговое видео (можно даже по частям) своего автомобиля. Ну а если он что-то не снимет или снимет некачественно, мы ему об этом сообщим и попросим доснять.

Кроме оценки полноты входных данных (наличие автомобиля на фото или видео в целом и всех частей кузова в частности) предобработка изображений в нашем сервисе включает в себя оценку затемненности и засвеченности изображений, анализ присутствия всех деталей кузова на предоставленных материалах. Также для ПСО, согласно требованиям страховых компаний, предусмотрена фильтрация изображений, на которых присутствует грязь и снег. Для выполнения этих задач нами разработана модель фильтрационной воронки с использованием нескольких типов нейронных сетей глубокого обучения, позволяющая не только качественно выполнить фильтрацию, но и сделать это за минимальное время.

Размытое и затемненное изображения автомобиля, отклоненные на этапе предобработки
Размытое и затемненное изображения автомобиля, отклоненные на этапе предобработки

Завершает этап предобработки разработанная нами модель идентификации автомобиля в пространстве, благодаря которой мы не только корректно определяем правую и левую сторону автомобиля, но и с погрешностью не более 5,3 градуса определяем местоположение снимающего относительно автомобиля в момент съемки.  Реализация этого этапа позволила отказаться от выделения классов левых и правых передних дверей, левых и правых задних дверей и т.д. Заменить их классами – передняя дверь, задняя дверь, передняя стойка и т.д. Тем самым мы сократили количество сегментов с 36 до заявленных ранее 24, улучшив сходимость алгоритма.

Сегментация деталей автомобиля

Для успешного решения задачи сегментации деталей корпуса на разных этапах работы над сервисом было протестировано несколько типов нейронный сетей глубокого обучения, таких как двухстадийные детекторы  Mask R-CNN и Faster R-CNN и одностадийные семейства YOLO с разнообразными метриками и значениями параметров. Однако на первых порах мы получили парадоксальную ситуацию: качество работы сервиса на 5 изображениях было выше, чем на видео, где в нашем распоряжении была сотня фотографий. Причина этой коллизии оказалась в психологии автолюбителей: оказывается существуют “любимые” и “нелюбимые” углы съемки автомобилей.

Распределение количества фотографий, снятых с различных ракурсов
Распределение количества фотографий, снятых с различных ракурсов

Как видим, фотографии обычно делаются со стороны пассажира на уровне передней и задней фар.

Добавив фотографий с “нелюбимых” ракурсов в обучающий датасет и разработав ансамбль классификаторов с дополнительной пред- и постобработками, мы получили 90,5% точности автоматического определения сегментов автомобилей.

Сегментация автомобиля
Сегментация автомобиля

Сегментация повреждений также имела свои ожидаемые и неожиданные трудности. С одной стороны, невозможно получить от даже опытных разметчиков идеально размеченные фотографии, поскольку человеческий глаз не всегда может отличить ржавчину от грязи, а тени от окружающих объектов от царапин. С другой стороны разнообразный характер повреждений; принципиально разные классы повреждений на стекле и металле; грязь, снег, капли дождя, всевозможные тени, отражения и блики существенно усложнили и так сложную задачу.

Примеры ложных повреждений
Примеры ложных повреждений

Классификация повреждений

 На сегодняшний день классификатор повреждений — это ансамбль трех алгоритмов, обученных как на подмножествах классов повреждений, так и на всех классах вместе. Для обучения сегментатора была разработана собственная аугментация MosCut на базе библиотеки Albumentations, снижающая вариативность классов во время обучения. Преимуществом решения является не только качественная детекция повреждений, но и низкий процент ложных срабатываний, когда за повреждения принимаются тени, отражения и грязь. Об этом подробнее мы расскажем в следующих наших публикациях.

Детекция царапины без детекции ложных отражений линий разметки и солнечных бликов
Детекция царапины без детекции ложных отражений линий разметки и солнечных бликов

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

В целом процесс работы нашего сервиса от загрузки фото и видео изображений до формирования решений представляется следующим образом.

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

Результаты работы сервиса
Результаты работы сервиса

Что дальше?

Сейчас мы предлагаем свой продукт в виде приложения для мобильных устройств и API, которое интегрируется в IT-систему заказчика. Продукт имеет конкурентные показатели на глобальном рынке. На обработку запроса по оценке одного автомобиля требуется всего несколько минут. Точность классификации повреждений нашим сервисом достигает 87% и это один из самых высоких результатов на сегодняшний день, достигнутых в нише дистанционной оценки повреждений авто в мире.

Но мы не останавливаемся на достигнутом. Сейчас мы разрабатываем ряд инновационных решений для расширения нашего сервиса: заканчиваем тестирование модуля калькуляции стоимости ремонта, работаем над возможностью оценки технического состояния такси и корпоративного транспорта, добавляем новые компоненты для использования его в каршеринге.

В наших планах - создание полноценной цифровой экосистемы по страхованию автомобилей, чтобы предоставить автомобилистам удобный и простой сервис, повысить прозрачность бизнеса и снизить операционные расходы для страховых компаний. 

 И в заключении мне хотелось бы спросить у вас, какой из этапов разработки нашего сервиса наиболее интересен и о каком хотелось бы узнать более подробно?

Комментарии (15)


  1. Stas911
    12.09.2022 19:52
    +3

    А что с внутренними повреждениями?


    1. sunnybear
      12.09.2022 22:37
      +1

      Их можно достаточно точно рассчитать, зная внешние и внутреннюю начинку. 87% все таки :)


    1. ElenaVolchenko Автор
      12.09.2022 22:55
      +1

      Пока не работаем с ними, но планируем начать работы в этом направлении в ближайшее время. Спасибо)


  1. Silkov
    12.09.2022 20:40
    +3

    Наш сервис выделяет 24 сегмента на автомобилях и определяет 11 классов
    повреждений, начиная от мелких сколов краски и ржавчины и заканчивая
    отсутствующими деталями.

    Как работаете со скрытыми повреждениями или данные виды в задачу не входили? Спасибо


    1. ElenaVolchenko Автор
      12.09.2022 22:53
      +4

      Спасибо за вопрос! На данном этапе стояла задача оценки внешнего состояния автомобиля. В дальнейших планах прогнозирование скрытых повреждений в зависимости от внешних - одна из приоритетных задач


  1. Didimus
    12.09.2022 21:53
    -3

    Каско пишется с маленькой буквы, это не сокращение.


    1. atri24
      13.09.2022 07:10

      На эту тему целые войны ведутся.


  1. OracleLabs
    12.09.2022 23:17

    Можно получить API и потестировать сервис?


    1. ElenaVolchenko Автор
      15.09.2022 11:07

      В ближайшее время наше приложение появится в сторах, чему мы обязательно посвятим новость или публикацию.


  1. konst90
    13.09.2022 09:59
    +4

    Скорее не "техническое состояние", а "наличие внешних повреждений". Мне вообще показалось по заголовку, что статья про удалённую оценку состояния двигателя, трансмиссии, подвески.


  1. amarao
    13.09.2022 12:07

    А вы чертежи от производителей используете? Или там слишком абстрактно?


    1. ElenaVolchenko Автор
      13.09.2022 13:48

      Нет, мы используем ручную разметку фотографий автомобилей. Использование чертежей предполагало бы их наличие по всем маркам, моделям, годам выпуска, модификациям, а, как мы понимаем, получить такие сведения очень сложно, да и разработанный нами ансамбль нейронных сетей практически идеально сегментирует детали автомобилей


      1. amarao
        13.09.2022 15:37

        Ну, когда деталь найти надо, обычно тут же всё находится в интернетах. По всем годам, моделям и т.д. Я аж удивлён был обилием этой информации и каталогов деталей.

        Кстати, крутая идея: по году, модели и фотографии определять сломанные partnumber'ы. Типа, LEFT HEADLIGHT ASSEMBLY XXX-YY-ZZ


  1. Ilya_Zakharau
    15.09.2022 10:54

    Спасибо за интересную статью!

    Несколько лет назад я работал, как подрядчик, с одной из систем калькуляции стоимости ущерба для автомобилей и, с тех пор, продолжаю следить за этой темой. 2 года назад я делал небольшой обзор стартапов, которые занимаются visual intelligence в это же домене. Надеюсь, что у вашей команды все получится.

    В последующих статьях было бы интересно узнать:

    1. Как и с какими существующими решениями вы сравнивали?

    Точность классификации повреждений нашим сервисом достигает 87% и это один из самых высоких результатов на сегодняшний день, достигнутых в нише дистанционной оценки повреждений авто в мире.

    Коммерческие продукты, которые уже в production (как tractable.ai, например), редко предоставляют публичные API.

    1. Как вы, в итоге, подойдете к идентификации и оценке внутренних повреждений?

    Пару лет назад я не нашел ответа на этот вопрос ни среди стартапов, ни среди знакомых менеджеров в домене insurtech для автострахования. Со внутренними повреждениями могут быть такие крайние случаи, как на этом видео.

    То есть внутренние повреждения можно "предсказать" по внешним, но для оценки стоимости ущерба все равно кто-то должен будет "залезть под капот". Иначе, или страховая, или страхователь попадут на деньги.


    1. ElenaVolchenko Автор
      15.09.2022 11:06

      Спасибо за такой развернутый комментарий и вопросы.
      Сравнение с существующими решениями сделаем в следующих публикациях, когда будем рассказывать более подробно о каждом из этапов разработки нашего сервиса: о предобработке, включая задачу определения стороны автомобиля, о сегментации деталей кузова и, конечно, о детекции повреждений.
      Что касается идентификации внутренних повреждений, то на текущем этапе мы начали реализовывать и тестировать некоторые частные гипотезы, которые позже планируем объединить в итоговое решение. Уже есть некоторые победы, но говорить о них пока еще рано)