Данные г**** и их мало... гоу нагенерим.
Конец.
Repo - https://github.com/HeinrichWirth/banana-road-synth
Это было краткое содержание последующего текста.

Всем привет.
Без долгих вступлений - сразу к делу.
Есть задача: обучить модель для поиска заплаток на дороге и выбоин.
Данных мало. Разметка так себе.
Предобученная модель на наших данных работает плохо.
Да, существуют открытые датасеты. Например, RDD2022.
Но у них среднее качество разметки и другой домен.
Заплатки в России - это отдельный вид "искусства" и они не похожи на заплатки из Японии.
Плюс камеры совсем разные, и это ломает переносимость.
Вопрос простой:
как за минимальное время и небольшие деньги получить дополнительные данные?
Не хочется:
ездить на дорожной лаборатории и специально искать убитые дороги
лазить по Google Maps в поисках дефектов
а главное - размечать всё это руками
Даже 100 изображений разметить это несколько часов минимум.
Выход очевидный: пробовать синтетику.
Если у нас уже есть видео десятков километров хорошей дороги, значит, логично сделать из неё плохую. ?
Выбор модели
Первым делом попробовал ChatGPT.
Результат ужасен.
Маска и сгенерированные выбоины/заплатки плохо совпадают.
Модель заметно перерисовывает всё изображение, и это сразу бросается в глаза (не критично, но я это запомнил).
Про контроль можно забыть.



Flux, SD и похожие решения из коробки хуже ChatGPT.
Нужно дообучать. Без этого они ощущаются как уровень моделей середины 2024 года.
В итоге осталась одна опция - Nano Banana / Pro.
(Гугл как знал: при привязке карты к AI Studio выдал $300 бесплатно на 3 месяца)
И вот тут стало интересно.
Результаты почти идеальные



Как выглядит пайплайн на практике
Сначала прошу модель сгенерировать маску потенциальных заплаток.
Важно: заплатки не существуют в оригинальном изображении.
Промпт:
Generate a binary segmentation mask of asphalt road repair patches.
The mask should represent realistic, randomly shaped road patches that DO NOT exist in the original image.
Patches must appear only on the asphalt road surface.
No patches on sidewalks, curbs, grass, buildings, cars, poles, or road markings.
Patch shapes should be irregular, organic, and varied in size, similar to real asphalt repairs.
The mask must be white (255) for patches and black (0) for everything else.
Do not modify the original image.
Do not add textures, colors, lighting, or shadows.
Output only the segmentation mask image (no text).
В примерно 8 случаях из 10 маска оказывается строго на дороге, без тротуаров, бордюров и прочего.
Дальше всё просто:
передаю оригинальное фото + маску и прошу сгенерировать заплатки строго по белым пикселям.
Ничего вне маски трогать нельзя.
Промпт
You are given two images:
(1) the original photo
(2) a binary mask where WHITE (255) indicates the exact pixels to edit and BLACK (0) indicates pixels that must remain unchanged.
Task: Generate realistic asphalt road repair patches ONLY where the mask is white.
The patches must look OLD and worn (not fresh): low-contrast, slightly blended into the existing road, almost the same color as the road.
Do NOT change anything outside the white mask.
Do NOT touch sidewalks, curbs, grass, buildings, cars, poles, or road markings.
No new objects, no extra shadows, no added text.
Output only the edited photo (no text).
И… всё.
Остаётся упаковать это в скрипт и пройтись по папке с изображениями через API.
С выбоинами логика ровно та же самая, но меняется только формулировка промпта.
Вообще, этот подход оказался рабочим не только с заплатками.
Например, мне нужно было немного дообучить модель на пешеходные переходы. Banana сгенерировала и эти данные тоже.


Где грань возможностей?
Стало интересно: а может ли модель нормально сегментировать сцену целиком?
Ответ:
ну… не совсем.
Цветовая палитра при сегментации:
Зеленый - дорожная разметка
Синий - бордюр
Красный - пешеходный переход
Белый - дорожный знак






Модель хорошо определяет дорожную разметку и даже понимает, где зебра, а где разметка для авто.
Но:
- путает бордюры, парапеты, барьеры и тротуар
- придумывает дорожные знаки там, где их нет вовсе. (Очень часто)
- путается в тенях (на этих примерах не видно)
Так что специализированные модели, которые мы обучали под задачи, справляются в разы лучше. И это нормально - Nano Banana вообще не создавалась как сегментационная модель, поэтому удивили даже такие результаты.
Погода, освещение и время суток
Дальше возник ещё один вопрос.
Не хочется ждать нужную погоду.
Не хочется ждать вечер.
Не хочется переснимать всё заново.
Можно ли просто поменять условия?
Да, можно.
И делает это модель хорошо.


AI vs человек. Про деньги.
Теперь самое важное - экономика.
Если отбросить $300 бесплатных бонусов от Google, цифры такие:
1 000 000 токенов ~ $120
одно изображение ~1K разрешения ~ 1120 токенов
итого ~13 центов за генерацию одного изображения
В моём пайплайне минимум:
генерация маски
генерация заплаток по маске
С запасом получаем ~30 центов за изображение.
Много это или мало - зависит от альтернативы.
Без генерации есть два варианта.
Первый:
ездить самим, искать убитые дороги, платить водителю, учитывать износ авто, бензин, время.
Потом всё равно платить разметчику.
По времени - несколько часов съёмки + неделя разметки (если говорим про ~800 изображений).
Второй:
искать дефекты по Google Maps.
Тоже время.
И всё равно ручная разметка, всё равно неделя.
На этом фоне для меня становится очевидно:
проще заплатить ~$150 за 500 сгенерированных изображений.
Это без оптимизаций цена.
Можно не генерировать уникальную маску для каждого кадра: достаточно 20–30 базовых масок, которые дальше отзеркаливаются, сдвигаются, дробятся на сабсемплы и проходят аугментации. В этом случае генерация вообще становится однократной.
P.S.
Совпадение, пару дней назад Waymo показала, как использует генеративную модель мира от Google для обучения своих роботакси.
Если раньше для таких задач брали игровые движки (вроде CARLA, когда речь про дороги и автопилоты или платные от Nvidea и тд), то теперь данные можно получать дешевле и проще.
Комментарии (24)

neodavinchi
08.02.2026 08:45Есть задача: обучить модель для поиска заплаток на дороге и выбоин.
Данных мало. Разметка так себе.
Предобученная модель на наших данных работает плохо.
Не увидел в статье самое интересное: как в итоге работает модель, предобученная на синтетике?
heinrich_wirth Автор
08.02.2026 08:45Привет
Согласен
На неделе дополню эту публикацию или сделаю новую о результатах

Viktor-T
08.02.2026 08:45Интересно, а зачем это нужно? Выбоины ещё понятно - для роботакси пригодится, чтобы объезжать. А заплатки как пригодятся?

qwe101
08.02.2026 08:45Заплатка - та же выбоина. По действию на колесо.

Viktor-T
08.02.2026 08:45Это какая-то новая альтернативная физика? Можете объяснить подробнее? А то я каждый ощущаю разницу и в воздействии на колесо и в последствиях.

qwe101
08.02.2026 08:45Выбоина - те же 2 ступеньки, только у заплатки они обычно пониже. На большой скорости иная заплатка - как бы не выбросила с дороги. Ровных заплаток не видел.

Viktor-T
08.02.2026 08:45только у заплатки они обычно пониже
Это как: "белое это то же самое чёрное, только обычно белое".
Разница по воздействию на колесо между ступеньками 20 см и 0,5 см колоссальная.
Я реально это ощущаю каждый раз, когда доводится сравнивать. Ну и колёса с кошельком тоже ощущают.

qwe101
08.02.2026 08:45Раньше я тоже так думал. Раз ехали по чиненой, но хорошей, казалось бы, дороге, у которой заменяли асфальт полосами. Огорожено было символически. Едем по асфальту, рядом полоса без покрытия, крупный щебень. Ехали быстро, поймали толстую заплатку, вылетели на щебень на скорости около сотни, да ещё от толчка перепутались педали, и вместо тормоза - газ. Это было не вчера, но запомнил надолго.
И в любом случае - это лишняя неровность, которую надо учитывать.

Viktor-T
08.02.2026 08:45Вы, конечно, извините. Но почему вы не притормозили, если только одна полоса асфальтированная, рядом щебень, а у вас от заплаток педали путаются? И как вас от заплатки выбросило? Ладно мы тут в деревне ездим на нивах да на уазах, но вы то, наверняка, живёте в крупном городе и ездите на нормальной машине с кучей электронных помощников? Вы реально думаете, что живёте в дистиллированном мире с мягкими стенами, который обязан соответствовать вашим ожиданиям?
Вы не подумайте, пожалуйста, что я просто стебусь. Просто, если вы будете воспринимать мир таким, как он есть, т.е. полным опасностей, вам же будет легче в нём жить

qwe101
08.02.2026 08:45Загородная дорога, 1000 км от Москвы, ГАЗ-24. Как выбросило, не уловил, помню только, что в свете фар мелькнула толстая заплатка и дёрнуло руль.

Viktor-T
08.02.2026 08:45И Вы уверены, что выражаете точку зрения автора? То есть ему это нужно для того, чтобы роботакси объезжало заплатки?

heinrich_wirth Автор
08.02.2026 08:45Привет
Логика такая, что заплатка != “идеально ровный асфальт”. Если дорога много ремонтировалась и заплатки слишком частые, то в какой-то момент назначаются ремонтно-восстановительные мероприятия, вплоть до укладки слоя(ёв) покрытия на участке.

alextoo
08.02.2026 08:45Yolo нет?

heinrich_wirth Автор
08.02.2026 08:45Привет
Увы, нет. Слишком много пропускает модель. В лоб не получилось.
Так же пропускала ёлка не очень идеальные заплатки (как это обычно бывает на дорогах за мск). Можно было бы насобирать больше разнообразных данных по регионам, но это затраты времени и денег. Хотелось попробовать решить задачу дешевле и быстрее, что и получилось в итоге.
В комментариях верно указали на косяк, что не хватает "как обучилась модель на синтетике". На этой неделе дополню эту статью или новую опубликую с результатами.

Rion333
08.02.2026 08:45Если проблема была в сложности ручной разметки данных google maps, то почему нельзя было использовать модель для разметки?

heinrich_wirth Автор
08.02.2026 08:45Привет
Какую именно модель для разметки вы имеете в виду в данном случае, чтобы получилось быстрее по времени, чем синтетика, и дешевле по затратам?

Dren0r
08.02.2026 08:45Так как время ожидания генерации не важно, можно еще сэкономить, создавая изображения через Batch API
ialexander
Garbage in, garbage out? Нет?
Заплатки выглядят реалистичными на первый взгляд, но это не значит, что модель, обученная на вроде бы реалистичных, но фейковых данных сможет распознавать реальные заплатки. Все-таки человеческий мозг и ANN по разному работают.
heinrich_wirth Автор
Привет
Резонное предположение, спасибо))
Следующая публикация будет о результатах тогда