Benzin: как в Новороссийске нечаянно создали крутой сервис для удаления фона с фотографий

Южный портовый город Новороссийск не сказать, чтобы сильно заметен на IT-карте России. Когда-то здесь вырос Евгений Касперский, создатель известного антивируса — этого не отнять. Но обычно от Новороссийска ничего особенного не ждут.

Это город-порт как бы про цемент, виноделие и морские грузы, снующие из Азии, Африки, Южной Америки в Россию и обратно.

Однако географически идеи рождаются где попало, не спрашивая о «профессиональной специализации» городов. И вообще предпочитают появляться случайно, в процессе решения каких-то совершенно других задач. Примерно так, как это описано у Ахматовой — «Когда б вы знали, из какого сора растут стихи, не ведая стыда…»

Такое произошло с компанией «Нативи». Парни день за днем рутинно улучшали свой облачно-мобильный софт, помогающий автоматизировать ведение бизнеса. Пока один клиент, заинтересованный в быстром запуске собственного интернет-магазина, не произнес фразу «Вот если бы…»

Так появился сервис по удалению фона с фоток Benzin.io — фактически конкурент всем известного Remove.bg. И это его история, записанная со слов основателей.

Итак, жила-была команда, разрабатывала мобильные приложения для бизнеса. Увязывала их с 1С и с интернет-магазинами. Упрощала жизнь людям, объединяющим свой офлайн-бизнес с интернет-продажами. И однажды для большого строительного магазина с ассортиментом в 30+ тысяч наименований, парни написали программу, способную быстро загружать фото из зеркальной камеры прямо в карточку товара в 1С. А также позволяющую штатными средствами выгружать оттуда все фотографии товаров в интернет-магазин.

Рассказывает Сергей Зырянов:

«Мы хотели многократно ускорить процесс загрузки фотографий товаров в интернет-магазины. Потому что некоторым клиентам нужно снимать и выкладывать на сайт фотки для 10-20 тысяч наименований, причем по четыре картинки на один товар — и это очень долго, это месяцы работы. Наш опыт помог быстро и недорого написать софт, забирающий фотки из камеры в 1С. И мы решили своим клиентам предлагать эту фишку бесплатно — просто чтобы отличаться от других разработчиков.

Но на одном из проектов, потенциальный заказчик, владелец сети обувных магазинов, сотрудник которого уже «пощупал» наш софт, сказал: «Да что толку? Это экономит не так уж много времени, потому что картинкам все равно требуется обработка в фоторедакторе — нам нужен идеально белый фон».

«…Вот если бы ваш софт еще и быстро удалял фон с фотографий…»

Услышав это, я пришел в офис и закинул удочку Денису, нашему главному разработчику. Честно говоря, я незамысловато попытался взять его на слабо. Заявил, что у меня есть хороший проект в предпродаже, но там «возник один нюанс» — люди спрашивают, сможем ли мы сделать автоматическое удаление фона?

Денис сразу назвал мне несколько онлайн-сервисов, которые предоставляют эту услугу за деньги, потому что уже не раз думал о такой интеграции. На следующей встрече с заказчиком я так и сказал — мол, мы можем интегрировать в нашу обработку сервис remove.bg и таким способом ваша задача будет решена.

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

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

Я снова пришел к Денису и рассказал об этом довольно заманчивом предложении. А потом спросил: «А что, если мы сделаем свой remove.bg, представляешь скольким клиентам мы сможем это потом продавать? И дело даже не в количестве, а в том, что это был бы наш самый быстрый выход на западный рынок».

Дело было за несколько дней до начала прошлогоднего «локдауна» и отказываться от денег было бы странно. Мы согласились, я получил аванс прямо перед самым «карантином», выдал половину Денису и пообещал, что дам еще столько же, когда он покажет результат…»

Без приличной видеокарты даже не пытайтесь это делать

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

Однако «мозг» проекта Денис всё не говорил «Сделано!» и молчал, как партизан. До тех пор, пока из него не удалось вытянуть, что для тренировки нейросети нужна не простая, а очень хорошая видеокарта, поскольку и для работы, и для тренировки нейросети GPU намного эффективнее чем CPU. Получив «добро», Денис нашел на «Авито» б/у видеокарту с 8Gb памяти за двадцать тысяч рублей.

От первой opensource нейросети быстро отказались. Ее заменили, но Денис посоветовал Сергею не распространяться в подробностях, на что именно. Говорят, что теперь все работает на связке из нескольких нейросетей. Сергей Зырянов аккуратно сообщает:

«Если мы будем в деталях рассказывать, о том, что у продукта внутри — нашим возможным конкурентам это может сократить решение подобной задачи на полгода-год».

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

Сервер под столом, на котором работал Benzin до декабря 2020 года

Затем дело в который раз уперлось в возможности видеокарты. Денис опять пошел на «Авито» и добыл там еще один девайс — карту из семейства NVIDIA, входившую в ТОП 10 по производительности. Ее продавец ни капли не сомневался, что покупатель, пришедший по объявлению — майнер криптовалют.

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

Материнская плата – ASROCK B450 PRO4
Процессор — AMD Ryzen 5 3500X
ОЗУ — 16Gb (noname)
Видеокарта — Gigabyte GeForce GTX 1070 Ti Gaming 8G
Видеокарта — MSI GeForce GTX 1080 Ti Gaming X 11G

Вот так, на столе Денис собирал сервер
Сервер пришлось ставить в коридор, пригодился старый листок
Высокий корпус был нужен, чтобы влезла видеокарта и кулер

Проблемы и нетривиальные способы их решения

Когда до отдельного сервиса было еще далеко, парни старались чтобы продукт устроил заказчика из обувной сети. Результат оценивался по двум параметрам: качество и скорость. В процессе разработки вылезло несколько проблем.

Рассказывает Сергей Зырянов:

«Поначалу наш софт работал только с камерами Canon, а у этого клиента был Nikon. Нам пришлось искать универсальный драйвер, чтобы он поддерживал фотоаппараты обоих производителей. Денис нашел такую библиотеку, поначалу она жутко глючила, когда мы её интегрировали с 1С. Цифровой видоискатель там постоянно зависал. Фотограф заказчика возмущалась, что нельзя кадрировать фото прямо в 1С. Мы много время на это потратили, но вылечили.

И тут возникла проблема с обувью белого цвета. Та-дам! У нас отлично получалось со всеми цветами, но не с белым. Стали думать, в чем причина. Денис предложил затемнить фон в лайтбоксе, в котором фотографируют обувь. С первой попытки замена фона не сработала. Тем не менее, Денис убеждал, что нужно попробовать еще один, более тёмный вариант ткани. Я никак не мог поверить, что выбор оттенка может на что-то повлиять.

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

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

За «обувной» проект с нами полностью рассчитались. Причем мы заранее договаривались, что исключительные права на этот софт остаются у нас…»

Непреодолимый соблазн захвата мира

Сергей вспоминает, что идея превратить нейросеть без названия в отдельный интернет-сервис возникла именно тогда, когда первый клиент не захотел пользоваться Remove.bg:

«… В этот момент я понял, что по факту мы делаем конкурента Remove.bg. Работали под одного клиента, а в результате построили нечто универсальное».

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

Основатель компании Сергей Зырянов описывает суть дела так:

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

В том, что потенциальная аудитория у нашего сервиса Benzin большая, мы убедились в августе 2020-го, когда Remove.bg публично сообщил, что обработал уже 100 миллионов фотографий. Я как руководитель компании стоял перед выбором: маленький, узко-заточенный простой сервис, но на весь мир, или большой и сложный софт для маленького B2B рынка в России.

Трезво оценивая свои силы, мы планировали со своим бизнес-софтом войти в ТОП 100 российских разработчиков года через два-три. Но оказалось, что с нашим комплексом нейросетей мы теперь относительно легко сможем прыгнуть в ТОП 3 в узкой нише во всем мире. Ведь по качеству мы почти догнали лидера.

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

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

Инвесторы не дают денег, объясняя это отсутствием выручки, но мы полностью отключили всю монетизацию у Benzin, чтобы клиентская база росла быстрее. И должен сказать, что с момента запуска сервиса в прошлом октябре в нем зарегистрировалось уже более 5,5 тысяч человек…»

Почему всё-таки «Benzin», кто и как придумал название?

«…Идея так назвать сервис пришла Кириллу — партнеру и одному из вдохновителей проекта. Мы долго думали какой зарегистрировать домен, и в процессе этого у Кирилла возник образ: «Benzin смывает фон с изображений». А продаваться «бензин» должен, само собой, литрами. Отсюда возникли и названия тарифных планов — «Литр», «Пятерка», «Десятка», «Канистра», «Баррель», «Цистерна».

К тому же химическая формула бензола очень подходила для основы логотипа. В общем, Кирилла так сильно захватили потенциальные возможности сервиса, что он полностью посвятил себя развитию Benzin в роли менеджера продукта, а «мозгом» сервиса по-прежнему оставался Денис».

Сергей Зырянов не жалеет эпитетов, чтобы описать компетенции Дениса:

«Он пишет код с 14 лет. С ходу даже не могу назвать все языки, на которых Денис программирует, для него освоить новый язык – это два-три дня. Я, например, уверен, что до Benzin он даже не прикасался к Python.

Это мега-универсал, который способен подключить электронные весы к смартфону на Android, превратить терминал сбора данных в онлайн кассу. Ну и конечно — затянуть фотку с зеркальной камеры прямо в 1С. И все это достаточно быстро. Я думаю, что Денис и есть наша главная нейросеть.

В 2019-м году у нас проходил преддипломную практику Антон. Учитывая его незаурядные способности в программировании, я рассчитывал после окончания практики сделать ему предложение присоединиться к нашей команде. Мы все были сильно загружены, и было непонятно, когда Benzin начнет приносить деньги. Когда и кто будет его делать, этот вопрос не давал мне покоя. Кирилл больше всех не хотел, чтобы мы откладывали Benzin в долгий ящик и поэтому предложил задействовать Антона в разработке фронтенда для сервиса, а также пообещал быть его наставником.

Это было сумасшествием — кидать новичка на проект, но именно так мы и разрабатывали: Денис по вечерам и выходным писал бэкенд, Антон делал фронтенд, а Кирилл все это контролировал и тянул лямку менеджера продукта, пока в декабре 2020-го Антон нас внезапно не покинул.

Но несмотря на все эти трудности, я считаю, что у нас получился лучший в России сервис для удаления фона. Это легко проверить простым сравнением результатов обработки фотографий. Вот посмотрите на эти примеры:

Слева исходник, в центре — результат обработки remove.bg, а справа — наш результат
На примере выше видно, что remove.bg «съел» меч, а наш сервис выдал результат лучше
Если приглядеться к шнуркам, становится очевидным, что наш Benzin neural network обрабатывает выемки не хуже remove.bg

Как оно все-таки работает?

«Не хотел этого сообщать, но «расколюсь» — под капотом у Benzin не одна, а три нейросети. Их обучение идет итерациями на отдельном сервере, которому и была нужна видеокарта именно на чипе Nvidia».

Объясняя, как оно происходит, CEO «Нативи», развеивает некоторые популярные мифы:

«Нередко люди думают, что нейросеть — это «черный ящик». Что разработчики подают что-то на вход, отделяют неправильные результаты на выходе, получают правильные, но толком не знают, что происходит внутри нейросетей. В нашем случае это не так. Мы построили свой программный комплекс удаления фона таким образом, что можем на каждом этапе обработки фотографии что-то подкрутить, изменить настройки. И этих настроек очень много. Кстати, благодаря такой архитектуре, мы, вероятно, вскоре сможем сделать функцию повышения качества плохих фото-исходников…

Люди часто полагают, что каждый процесс обработки фото одновременно обучает нейросеть. Это тоже не так, обучение и обработка не связаны. Benzin neural network мы учим на отдельном сервере — на больших датасетах, которые предварительно размечены. Один этап обучения на одном сравнительно маленьком датасете может идти неделю или две.

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

Резонный вопрос: зачем еще один «удаляльщик фонов» в интернете?

CEO компании отвечает на него так:

«Удаление фона - только часть задачи. В составе наших программных продуктов под брендом «Нативи» мы придумали и реализовали своего рода конвейер, которые позволяет всем, кто занимается e-commerce, быстро получать красивые каталоги товаров в их интернет-магазинах. Мы сделали так, чтобы фотографии товаров для интернет-магазина можно было загружать как на настоящем конвейере предметной фотосъемки, вы когда-нибудь слышали о таком? Люди продолжают делать это вручную и тратят на это безумное количество времени.

Вот представьте: у вас есть список товаров. Вы выделяете курсором один конкретный товар и кладете его перед камерой. Щелкаете на экране кнопку «сфотографировать», фото залетает из камеры в карточку товара, но не записывается, а висит на экране. Вы меняете ракурс, и повторяете предыдущую операцию. После того, как становится понятно, что кадр отличный, наступает очередь нейросети. Следующая кнопка «Удалить фон» превращает тяжеловесный исходник в легкую фотку с идеальным белым фоном, кадрирование и размер которой можно настраивать.

Затем, если результат устраивает, нажимаете кнопку «Записать». Полностью весь процесс занимает 30-40 секунд. С учетом того, что для каждого товара обычно нужно четыре фотографии, на всё уходит 2-3 минуты. Классический фотограф с флешкой и «Фотошопом» нервно курит в сторонке.

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

Реальное фото с первоначального проекта, из которого вырос Benzin

Своим «конвейером» мы планируем заинтересовать аудиторию владельцев интернет-магазинов и маркетплейсов. Но его ядро — сам комплекс нейросетей — буквально «просился» стать самостоятельным. Мы не стали сопротивляться неизбежному и выкатили отдельный веб-сервис.

Да, он реальный конкурент Remove.bg. И пальма первенства, наверное пока у них. Но согласитесь, если ты становишься в потенциале второй или третьей «ракеткой» мира — это тоже неплохо. И совсем не факт, что со временем мы не подвинем конкурентов на этом пьедестале…»

Пока готовилась публикация, стало известно, что эстонская компания Postoplan официально приобрела неиcключительные права на технологию Benzin neural network, и теперь может использовать её внутри своего сервиса Postoplan.app.

Создатели Benzin не исключают, что Российским маркетплейсам будет интересна не только быстрая технология удаления фона Benzin neural network, но и полный конвейер загрузки фотографий.

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

Текст: Владимир Лакодин

0
124 комментария
Написать комментарий...
Ivan Zamorev

Сверху benzin снизу remove.bg

Поздравляю 🤟🔥🤗 успехов! 🤓

Ответить
Развернуть ветку
Кирилл Кулаков

О как круто))
Да, иногда мы их бьем)) но нам есть ещё куда расти и мы работаем над этим)
Спасибо за проверку на прочность)

Ответить
Развернуть ветку
Konstantin K.

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

См. выше, как грани картинки с remove.bg органично смотрятся на фоне.

А так сервис интересный. Удачи!

Ответить
Развернуть ветку
121 комментарий
Раскрывать всегда