Добрый день, коллеги! Меня зовут Елена Волченко. В компании Финолаб я являюсь руководителем отдела машинного обучения и анализа данных. Этой статьей я хочу начать цикл публикаций о создании нашей командой сервиса дистанционной оценки технического состояния автомобилей на основе технологий искусственного интеллекта.
Мой рассказ будет разделен на две части. В первой расскажу о потребностях и проблемах в дистанционной оценке повреждений автомобилей. Во второй - о том, как мы решали эту задачу с помощью нейронных сетей и классического 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% и это один из самых высоких результатов на сегодняшний день, достигнутых в нише дистанционной оценки повреждений авто в мире.
Но мы не останавливаемся на достигнутом. Сейчас мы разрабатываем ряд инновационных решений для расширения нашего сервиса: заканчиваем тестирование модуля калькуляции стоимости ремонта, работаем над возможностью оценки технического состояния такси и корпоративного транспорта, добавляем новые компоненты для использования его в каршеринге.
В наших планах - создание полноценной цифровой экосистемы по страхованию автомобилей, чтобы предоставить автомобилистам удобный и простой сервис, повысить прозрачность бизнеса и снизить операционные расходы для страховых компаний.
И в заключении мне хотелось бы спросить у вас, какой из этапов разработки нашего сервиса наиболее интересен и о каком хотелось бы узнать более подробно?