Данные г**** и их мало... гоу нагенерим.
Конец.

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 сгенерировала и эти данные тоже.

Исходное изображение
Исходное изображение
Сгенерированная разметка
Сгенерированная разметка

Где грань возможностей?

Стало интересно: а может ли модель нормально сегментировать сцену целиком?

Ответ:
ну… не совсем.

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

Исходное изображение 1
Исходное изображение 1
Сгенерированная маска 1
Сгенерированная маска 1
Исходное изображение 2
Исходное изображение 2
Сгенерированная маска 2
Сгенерированная маска 2
Исходное изображение 3
Исходное изображение 3
Сгенерированная маска 3
Сгенерированная маска 3

Модель хорошо определяет дорожную разметку и даже понимает, где зебра, а где разметка для авто.

Но:
- путает бордюры, парапеты, барьеры и тротуар
- придумывает дорожные знаки там, где их нет вовсе. (Очень часто)
- путается в тенях (на этих примерах не видно)

Так что специализированные модели, которые мы обучали под задачи, справляются в разы лучше. И это нормально - 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)


  1. ialexander
    08.02.2026 08:45

    Garbage in, garbage out? Нет?

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


    1. heinrich_wirth Автор
      08.02.2026 08:45

      Привет

      Резонное предположение, спасибо))

      Следующая публикация будет о результатах тогда


  1. neodavinchi
    08.02.2026 08:45

    Есть задача: обучить модель для поиска заплаток на дороге и выбоин.
    Данных мало. Разметка так себе.
    Предобученная модель на наших данных работает плохо.


    Не увидел в статье самое интересное: как в итоге работает модель, предобученная на синтетике?


    1. heinrich_wirth Автор
      08.02.2026 08:45

      Привет

      Согласен

      На неделе дополню эту публикацию или сделаю новую о результатах


  1. Viktor-T
    08.02.2026 08:45

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


    1. qwe101
      08.02.2026 08:45

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


      1. Viktor-T
        08.02.2026 08:45

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


        1. qwe101
          08.02.2026 08:45

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


          1. Viktor-T
            08.02.2026 08:45

            только у заплатки они обычно пониже

            Это как: "белое это то же самое чёрное, только обычно белое".

            Разница по воздействию на колесо между ступеньками 20 см и 0,5 см колоссальная.

            Я реально это ощущаю каждый раз, когда доводится сравнивать. Ну и колёса с кошельком тоже ощущают.


            1. qwe101
              08.02.2026 08:45

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

              И в любом случае - это лишняя неровность, которую надо учитывать.


              1. Viktor-T
                08.02.2026 08:45

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

                Вы не подумайте, пожалуйста, что я просто стебусь. Просто, если вы будете воспринимать мир таким, как он есть, т.е. полным опасностей, вам же будет легче в нём жить


                1. qwe101
                  08.02.2026 08:45

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


                  1. Viktor-T
                    08.02.2026 08:45

                    Ну, раз так, то спорить и умничать не буду. Бывает всякое на дорогах, согласен. Ещё раз извиняюсь если что не так. Просто изначально рассматривал наиболее частые и вероятные ситуации. В любом случае удачи.


                    1. qwe101
                      08.02.2026 08:45

                      Всё хорошо, нормальная дискуссия, спасибо.


          1. Viktor-T
            08.02.2026 08:45

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


            1. qwe101
              08.02.2026 08:45

              Снизить скорость (дорога с дефектами, если есть заплатки, логично ожидать ещё выбоины). Да и объехать по возможности.


              1. Viktor-T
                08.02.2026 08:45

                Ладно, закончим это. Извините меня и берегите себя. Будьте более внимательны и бдительны.


    1. heinrich_wirth Автор
      08.02.2026 08:45

      Привет

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


  1. alextoo
    08.02.2026 08:45

    Yolo нет?


    1. heinrich_wirth Автор
      08.02.2026 08:45

      Привет

      Увы, нет. Слишком много пропускает модель. В лоб не получилось.

      Так же пропускала ёлка не очень идеальные заплатки (как это обычно бывает на дорогах за мск). Можно было бы насобирать больше разнообразных данных по регионам, но это затраты времени и денег. Хотелось попробовать решить задачу дешевле и быстрее, что и получилось в итоге.

      В комментариях верно указали на косяк, что не хватает "как обучилась модель на синтетике". На этой неделе дополню эту статью или новую опубликую с результатами.


  1. Rion333
    08.02.2026 08:45

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


    1. heinrich_wirth Автор
      08.02.2026 08:45

      Привет

      Какую именно модель для разметки вы имеете в виду в данном случае, чтобы получилось быстрее по времени, чем синтетика, и дешевле по затратам?


  1. Daxifl
    08.02.2026 08:45

    Трата времени.


  1. Dren0r
    08.02.2026 08:45

    Так как время ожидания генерации не важно, можно еще сэкономить, создавая изображения через Batch API