Страховому агенту нужно около часа, чтобы оценить и описать повреждения авто после аварии. Осмотреть каждую деталь, оформить документы. А если посчитать время на дорогу, то оценка и вовсе затянется на полдня.
Нейросеть же справляется за 30 секунд. 29 из которых нужно владельцу, чтобы обойти машину и сделать четыре фото.
В этой статье я расскажу, зачем мы вообще создаем такую модель и где планируем ее использовать. А еще углубимся в принципы работы системы и расскажем, как мы обучали алгоритм и какие планы у проекта на будущее.
Начнем с того, что ниша дистанционной оценки повреждений авто на российском рынке достаточно свободна. Страховые иногда пользуются услугами сотрудников-людей, которые визуально оценивают повреждения по фото. Однако полностью автоматическая оценка, когда снимки обрабатывает нейросеть с учетом калькуляции повреждения, для России в новинку.
Существующий уклад дорогой и неэффективный с точки зрения бизнеса — за 8 рабочих часов человек способен оценить до 30 авто. Больше физически не получится.
Автоматизировать процесс до недавнего времени получалось лишь в ограниченном формате.
Немного похвастаемся. В России мы первые, кто в принципе стал разрабатывать систему автоматической оценки состояния авто. Мы провели исследование и увидели: спрос есть в этих сферах:
Первая модель служит для обнаружения автомобиля на фото. Это препроцессинг, который нужен для фильтрации входных данных.
Сейчас мы работаем только с автомобилями. Поэтому если алгоритм не может найти на снимке авто, пригодное к обработке, то выдает ошибку, не запуская основной анализ.
Если вместо машины на фото будет лодка, как на примере, то система остановит обработку. То же произойдет, если на снимке сразу несколько автомобилей и невозможно выделить центральный.
Но даже если авто есть, то не факт, что фото подходит для обработки и анализа. Мы пока не работаем с крупными ракурсами, на которых видны отдельные детали авто. Сейчас фото с неподходящими ракурсами отбраковываются, но мы уже активно работаем над инструментами, которые позволят их полноценно анализировать.
На нижнем снимке трудно сказать, что это за колесо. Левое переднее? Правое заднее? Такие фото брать в работу сложнее, нужен другой инструмент, но он пока в режиме разработки.
Система не распознает детали отдельно от авто. Если сфотографировать оторванный бампер, анализа не будет. Также не сработает, если машина разбита в тотал — система просто не сможет найти границы деталей на фото. Хотя в таком случае это все равно не поможет.
Еще одна модель препроцессинга нужна, чтобы определить засвет на фото. Ведь даже если автомобиль есть, а фото сделано в правильном ракурсе, из-за засвета его невозможно использовать — засвет просто скроет повреждения и от человеческого, и от компьютерного зрения.
Итак, все процедуры препроцессинга пройдены, авто на фото есть, оно в подходящем ракурсе и нормальном освещении. Тогда в дело вступают основные модели, которые сегментируют отдельные детали кузова и находят на них повреждения.
Мы обучали нейросеть на ракурсах, которые используют в своей работе страховые агенты при оценке повреждений. Для полной оценки авто нужно всего 4 фото из угловых ракурсов. Получается, что одна точка на поверхности машины снимается дважды (за исключением углов). Это позволяет обеспечить высокую точность анализа.
@ 2021 Copart Inc.
Именно на таких пулах снимков мы обучали основную модель. Алгоритм сможет обработать и автомобиль, снятый чисто спереди или сбоку, но наибольшая точность анализа нужна для таких ракурсов — именно их будут использовать в работе.
В основе лежит две модели: сегментация деталей и сегментация повреждения на деталях. Если три препроцессинговые модели служат для корректной оценки, то здесь делается вся работа.
Теперь объясним подробнее. Сначала нужно разметить фото автомобиля на конкретные детали. Для оценки повреждений и подсчета стоимости ремонта это основа. Нужно абсолютно точно знать, какая деталь повреждена и насколько сильно. Можно ли ее просто покрасить, нужно рихтовать или спасет только замена — все имеет значение.
Но собрать выборку и обучить модель размечать детали — это огромная работа, в чем-то даже сизифов труд с той лишь разницей, что в нашем случае мы получаем классный результат.
Сначала мы взяли базу данных из миллиона снимков в подходящих ракурсах. И чтобы создать базовый датасет из миллиона фоток для обучения стали отмечать все детали на фото самостоятельно.
Но на 25 000 мы получили отличную азу для обучения, но вручную это было долго и очень дорого. Просто для понимания объемов работы — на одном фото нужно с максимальной точностью выделить очертания 40-50 категорий объектов. Даже у человека с идеальным владением графическим редактором на это уйдет минимум 30-40 минут. Бюджеты у нас не резиновые, поэтому пришлось искать другой путь.
Сначала попробовали 3D-редактор Blender. Для генерации выборки можно было скачать или купить 3D-модель автомобиля и разметить детали всего один раз. А затем — генерировать сколько угодно сцен в разных ракурсах с участием размеченного авто.
С точки зрения разметки — шикарно. Но для правдоподобности сцен нужно было дополнительно скачивать кучу пресетов. По факту это получалась все та же работа вручную, но теперь руками нужно было не размечать детали, а создавать разные ракурсы и сцены. Аксиома Эскобара во всей красе.
Летом этого года стало интереснее, потому что мы попробовали DatasetGAN. Другими словами, мы использовали генеративную сеть для того, чтобы генерировать и изображения автомобилей, и сразу маски с размеченными деталями.
Картинка слева — несуществующий автомобиль, сгенерированный нейросетью. Рисунок справа — маска деталей для несуществующего автомобиля, сгенерированного этой же сетью.
Настроить генеративную нейросеть для создания и авто, и масок оказалось несложно. Для этого потребовалось всего лишь особым образом сгенерировать обучающую выборку и разметить ее — всего около 50 изображений. А после нейросеть может генерировать уже размеченную выборку несуществующих авто почти до бесконечности.
Не все полученные примеры от нейросети качественные.
Контроль все равно нужен, но уже этот способ позволял на порядки увеличить скорость генерации выборки для обучения основной модели. Не одну-две, а полторы тысячи размеченных масок в час. А чтобы фильтровать результаты, создали отдельный классификатор под это дело.
Генеративная модель сильно улучшила качество разметки. Слева результаты алгоритма до использования обучения на сгенерированных изображениях, а справа — после. Результат, как говорится, налицо. Модель стала стабильнее.
Теперь расскажем о второй основной модели, которая оценивает конкретно повреждения деталей. Принцип действия прост — мы собрали большую выборку повреждений. К примеру, царапина, вмятина, трещина, ржавчина. А затем натренировали модель находить их на фото.
Модель ищет повреждения не на конкретных деталях, а непосредственно на изображениях. Затем генерирует маску повреждения и оценивает его характер, применимо к деталям. А после этого все оформляется в сухие выводы, которые и получает человек. В случае сверху это «комплексная вмятина передней правой и задней правой дверей, множественные глубокие царапины лакокрасочного покрытия, повреждение правой междверной стойки».
С последней неисправностью, кстати, связана идея, над которой мы будем работать в обозримом будущем. Чтобы по внешнему повреждению кузова алгоритм мог также оценивать и прогнозировать внутренние повреждения «органов».
К примеру, при сильном повреждении переднего бампера алгоритм должен выдавать информацию, что «скорее всего, поврежден радиатор охлаждения». Идея амбициозная, но мы переключимся на нее не раньше, чем обеспечим хорошую точность основных моделей.
Зимой также будем собирать датасет автомобилей с плохим освещением, в грязи или снегу. Человек не будет мыть машину на месте ДТП, чтобы сфотографировать ее, поэтому нужно обучить модель правильно оценивать и не слишком опрятные авто. А самое главное — научить разделять грязь и царапины, потому что на фото они могут быть сильно похожи.
Весной у нас в планах начать собирать датасет по другим видам автотранспорта. Мопеды, мотоциклы, фургоны, фуры — будем анализировать все, что двигается по дорогам.
Если рассматривать перспективы использования его как продукта для обычных пользователей, то он будет очень полезен при небольших ДТП и оформлении европротокола. После подписания документа нужно сделать четыре фотки — мы планируем, что система сама сможет отправлять характеристику повреждений в страховую компанию.
В будущем сервис сможет здесь и сейчас определять, сколько стоит повреждение. И уже на базе этой оценки можно пытаться урегулировать ДТП в рамках европротокола. Мы заранее не знаем, сколько стоит царапина на «Гелендвагене», который притерли. А сервис поможет это узнать за пару минут.
Пока что финансовые фичи мы не добавляли совсем. Это отдельный большой кусок работы, где нужно партнериться с производителями запчастей и официальными дилерами авто, собирать огромные базы с динамическими ценами, а потом строить модель финансовой оценки повреждений. Это обязательная часть сервиса — и в следующем 2022 году мы ею плотно займемся.
В целом мы планируем разработать не просто узконаправленную утилиту для оценки повреждений авто, а полноценную экосистему, которую можно будет внедрить в работу компаний и жизнь простого автолюбителя, чтобы упростить жизнь во многих ситуациях: от покупки б/у авто и использования каршерингов до оформления ДТП и страховых случаев. Сложно? Само собой. Выполнимо? Еще бы!
Нейросеть же справляется за 30 секунд. 29 из которых нужно владельцу, чтобы обойти машину и сделать четыре фото.
В этой статье я расскажу, зачем мы вообще создаем такую модель и где планируем ее использовать. А еще углубимся в принципы работы системы и расскажем, как мы обучали алгоритм и какие планы у проекта на будущее.
Я почему оценивать не мог? Потому что у меня данных не было
Начнем с того, что ниша дистанционной оценки повреждений авто на российском рынке достаточно свободна. Страховые иногда пользуются услугами сотрудников-людей, которые визуально оценивают повреждения по фото. Однако полностью автоматическая оценка, когда снимки обрабатывает нейросеть с учетом калькуляции повреждения, для России в новинку.
Существующий уклад дорогой и неэффективный с точки зрения бизнеса — за 8 рабочих часов человек способен оценить до 30 авто. Больше физически не получится.
Автоматизировать процесс до недавнего времени получалось лишь в ограниченном формате.
- Первая причина — это технологии. До недавнего времени их вовсе не было. Можно сказать, что мы сейчас поднимаем целину. Нужно сначала научить нейросеть различать детали и повреждения, а после — оценивать стоимость повреждений для каждой модели отдельно. . Потому что небольшая царапина на «Бентли» будет стоить как «Девятка» целиком.
- Вторая причина — в 2010-м телефон с хорошей камерой стоил дорого, его не каждый мог себе позволить. Да и не особо много таких телефонов было. А для обучения модели нужны фото с разрешением минимум 2 МП. И чем больше, тем лучше.
Немного похвастаемся. В России мы первые, кто в принципе стал разрабатывать систему автоматической оценки состояния авто. Мы провели исследование и увидели: спрос есть в этих сферах:
- Автомобильная страховка. Мы уже немного о ней рассказали. Автоматический алгоритм оценки повреждений с помощью компьютерного зрения поможет сэкономить миллионы человеко-часов и десятки миллионов рублей для страховщика. Один объект обрабатывается одну секунду. Это сильно экономит время оценщиков-людей.
- Каршеринговые компании. В теории автоматическая оценка способна полностью решить проблему необоснованных штрафов за повреждение машины. Клиенту нужно просто сделать несколько фото до посадки в авто и после завершения поездки — и все. Компания при этом получает максимально точную информацию о повреждениях своего парка машин и не имеет имиджевых потерь от «случайных штрафов».
- Агрегаторы по продаже авто. Посетители будут сразу получать максимально полную информацию о внешнем виде автомобиля. Как дополнительная функция для удобства покупателей — самое то.
- Компании и дилеры, которые занимаются предпродажной подготовкой авто. Чтобы оценить стоимость ремонта царапин, сколов или вмятин, клиенту не нужно приезжать, а специалисту не нужно детально осматривать каждый сантиметр авто. Время экономят оба.
Как мы строили и обучали алгоритм
Теперь расскажем чуть больше технических подробностей. Начнем с архитектуры решения. Она состоит из серии моделей.Первая модель служит для обнаружения автомобиля на фото. Это препроцессинг, который нужен для фильтрации входных данных.
Сейчас мы работаем только с автомобилями. Поэтому если алгоритм не может найти на снимке авто, пригодное к обработке, то выдает ошибку, не запуская основной анализ.
Если вместо машины на фото будет лодка, как на примере, то система остановит обработку. То же произойдет, если на снимке сразу несколько автомобилей и невозможно выделить центральный.
Но даже если авто есть, то не факт, что фото подходит для обработки и анализа. Мы пока не работаем с крупными ракурсами, на которых видны отдельные детали авто. Сейчас фото с неподходящими ракурсами отбраковываются, но мы уже активно работаем над инструментами, которые позволят их полноценно анализировать.
На нижнем снимке трудно сказать, что это за колесо. Левое переднее? Правое заднее? Такие фото брать в работу сложнее, нужен другой инструмент, но он пока в режиме разработки.
Система не распознает детали отдельно от авто. Если сфотографировать оторванный бампер, анализа не будет. Также не сработает, если машина разбита в тотал — система просто не сможет найти границы деталей на фото. Хотя в таком случае это все равно не поможет.
Еще одна модель препроцессинга нужна, чтобы определить засвет на фото. Ведь даже если автомобиль есть, а фото сделано в правильном ракурсе, из-за засвета его невозможно использовать — засвет просто скроет повреждения и от человеческого, и от компьютерного зрения.
Итак, все процедуры препроцессинга пройдены, авто на фото есть, оно в подходящем ракурсе и нормальном освещении. Тогда в дело вступают основные модели, которые сегментируют отдельные детали кузова и находят на них повреждения.
Мы обучали нейросеть на ракурсах, которые используют в своей работе страховые агенты при оценке повреждений. Для полной оценки авто нужно всего 4 фото из угловых ракурсов. Получается, что одна точка на поверхности машины снимается дважды (за исключением углов). Это позволяет обеспечить высокую точность анализа.
На фото это выглядит так:
Именно на таких пулах снимков мы обучали основную модель. Алгоритм сможет обработать и автомобиль, снятый чисто спереди или сбоку, но наибольшая точность анализа нужна для таких ракурсов — именно их будут использовать в работе.
В основе лежит две модели: сегментация деталей и сегментация повреждения на деталях. Если три препроцессинговые модели служат для корректной оценки, то здесь делается вся работа.
В общих чертах их работу можно объяснить так:
Теперь объясним подробнее. Сначала нужно разметить фото автомобиля на конкретные детали. Для оценки повреждений и подсчета стоимости ремонта это основа. Нужно абсолютно точно знать, какая деталь повреждена и насколько сильно. Можно ли ее просто покрасить, нужно рихтовать или спасет только замена — все имеет значение.
Но собрать выборку и обучить модель размечать детали — это огромная работа, в чем-то даже сизифов труд с той лишь разницей, что в нашем случае мы получаем классный результат.
Сначала мы взяли базу данных из миллиона снимков в подходящих ракурсах. И чтобы создать базовый датасет из миллиона фоток для обучения стали отмечать все детали на фото самостоятельно.
Но на 25 000 мы получили отличную азу для обучения, но вручную это было долго и очень дорого. Просто для понимания объемов работы — на одном фото нужно с максимальной точностью выделить очертания 40-50 категорий объектов. Даже у человека с идеальным владением графическим редактором на это уйдет минимум 30-40 минут. Бюджеты у нас не резиновые, поэтому пришлось искать другой путь.
Сначала попробовали 3D-редактор Blender. Для генерации выборки можно было скачать или купить 3D-модель автомобиля и разметить детали всего один раз. А затем — генерировать сколько угодно сцен в разных ракурсах с участием размеченного авто.
Примерно так:
С точки зрения разметки — шикарно. Но для правдоподобности сцен нужно было дополнительно скачивать кучу пресетов. По факту это получалась все та же работа вручную, но теперь руками нужно было не размечать детали, а создавать разные ракурсы и сцены. Аксиома Эскобара во всей красе.
Летом этого года стало интереснее, потому что мы попробовали DatasetGAN. Другими словами, мы использовали генеративную сеть для того, чтобы генерировать и изображения автомобилей, и сразу маски с размеченными деталями.
Картинка слева — несуществующий автомобиль, сгенерированный нейросетью. Рисунок справа — маска деталей для несуществующего автомобиля, сгенерированного этой же сетью.
Настроить генеративную нейросеть для создания и авто, и масок оказалось несложно. Для этого потребовалось всего лишь особым образом сгенерировать обучающую выборку и разметить ее — всего около 50 изображений. А после нейросеть может генерировать уже размеченную выборку несуществующих авто почти до бесконечности.
Не все полученные примеры от нейросети качественные.
Контроль все равно нужен, но уже этот способ позволял на порядки увеличить скорость генерации выборки для обучения основной модели. Не одну-две, а полторы тысячи размеченных масок в час. А чтобы фильтровать результаты, создали отдельный классификатор под это дело.
Генеративная модель сильно улучшила качество разметки. Слева результаты алгоритма до использования обучения на сгенерированных изображениях, а справа — после. Результат, как говорится, налицо. Модель стала стабильнее.
Теперь расскажем о второй основной модели, которая оценивает конкретно повреждения деталей. Принцип действия прост — мы собрали большую выборку повреждений. К примеру, царапина, вмятина, трещина, ржавчина. А затем натренировали модель находить их на фото.
Происходит примерно так:
Модель ищет повреждения не на конкретных деталях, а непосредственно на изображениях. Затем генерирует маску повреждения и оценивает его характер, применимо к деталям. А после этого все оформляется в сухие выводы, которые и получает человек. В случае сверху это «комплексная вмятина передней правой и задней правой дверей, множественные глубокие царапины лакокрасочного покрытия, повреждение правой междверной стойки».
С последней неисправностью, кстати, связана идея, над которой мы будем работать в обозримом будущем. Чтобы по внешнему повреждению кузова алгоритм мог также оценивать и прогнозировать внутренние повреждения «органов».
К примеру, при сильном повреждении переднего бампера алгоритм должен выдавать информацию, что «скорее всего, поврежден радиатор охлаждения». Идея амбициозная, но мы переключимся на нее не раньше, чем обеспечим хорошую точность основных моделей.
Что планируем на будущее и какие фичи еще хотим сделать
Планы у нашего проекта наполеоновские. С технической стороны мы собираемся добиться хорошей точности детекции деталей и повреждений до весны 2022. Уже такую версию, которую не стыдно будет релизить.Зимой также будем собирать датасет автомобилей с плохим освещением, в грязи или снегу. Человек не будет мыть машину на месте ДТП, чтобы сфотографировать ее, поэтому нужно обучить модель правильно оценивать и не слишком опрятные авто. А самое главное — научить разделять грязь и царапины, потому что на фото они могут быть сильно похожи.
Уже к февралю 2022 планируем запустить инструмент для работы с близкими ракурсами.Это крайне важно, если мы хотим предложить проект для партнерства с каршерингами. Ведь во время дождя авто по-любому заляпается. А если грязевые потеки система распознает как царапины, это будет очень неприятно. И клиенту, и каршерингу, и нам.
Весной у нас в планах начать собирать датасет по другим видам автотранспорта. Мопеды, мотоциклы, фургоны, фуры — будем анализировать все, что двигается по дорогам.
Если рассматривать перспективы использования его как продукта для обычных пользователей, то он будет очень полезен при небольших ДТП и оформлении европротокола. После подписания документа нужно сделать четыре фотки — мы планируем, что система сама сможет отправлять характеристику повреждений в страховую компанию.
В будущем сервис сможет здесь и сейчас определять, сколько стоит повреждение. И уже на базе этой оценки можно пытаться урегулировать ДТП в рамках европротокола. Мы заранее не знаем, сколько стоит царапина на «Гелендвагене», который притерли. А сервис поможет это узнать за пару минут.
Пока что финансовые фичи мы не добавляли совсем. Это отдельный большой кусок работы, где нужно партнериться с производителями запчастей и официальными дилерами авто, собирать огромные базы с динамическими ценами, а потом строить модель финансовой оценки повреждений. Это обязательная часть сервиса — и в следующем 2022 году мы ею плотно займемся.
В целом мы планируем разработать не просто узконаправленную утилиту для оценки повреждений авто, а полноценную экосистему, которую можно будет внедрить в работу компаний и жизнь простого автолюбителя, чтобы упростить жизнь во многих ситуациях: от покупки б/у авто и использования каршерингов до оформления ДТП и страховых случаев. Сложно? Само собой. Выполнимо? Еще бы!