Рассказ о том, как мы сделали нейросеть для удаления фона, догнали по качеству лидера рынка и выделили получившийся BENZIN neural network в отдельный продукт - https://benzin.io В конце статьи расскажу о результатах за календарный год, работе над ошибками, и о том какие перспективы у этого проекта. Будет полезно тем, кто планирует или уже создает свой SaaS.

История создания

В прошлом году прямо перед самым карантином, я продавал проект интернет-магазина. И чтобы отличаться от конкурентов мы предлагали клиентам бесплатно такую фичу - конвейерная загрузка фотографий из фотокамеры прямо в учетную систему. Я понимаю, что в 1С не очень-то и нужны эти фотографии, но дело в том, что в 1С есть настройка внешнего хранение файлов и стандартная выгрузка товаров в 1С Битрикс и основные CMS для интернет-магазинов. Соответственно это сильно ускоряет процесс заполнения интернет-магазина фотографиями товара, особенно если товара много. Речь идет о десятках тысяч.

Для сравнения с традиционным способом загрузки фотографий, наша конвейерная загрузка позволяет обрабатывать от 80 до 120 товаров в день, по 4-5 фотографий на один товар. Если вы думаете, что заполнить в интернет-магазине за месяц 2,5 тысячи товаров оригинальными фотографиями в месяц - это медленно, то обычный способ: фотокамера -> флешка -> CMS будет еще в несколько раз медленнее, потому что основное время будет теряться на поиск товара в каталоге или сопоставление фотографии товара на флешке. Этому особо никто не уделяет внимания, так как с одной стороны это не проблема программистов и ни предметных фотографов. Но время это занимает очень много.

Для кого это критично? Ускорение процесса фотографирования необходимо не всем. Но представьте обувной бизнес, или производство одежды. В год выходит несколько новых коллекций, и каждый товар необходимо фотографировать и размещать в каталоге. Именно слияние процесса фотографирования и размещения в каталоге (1С) дает такой мощный эффект ускорения. Надеюсь никому не надо объяснять важнось именно оригинальных фотографий для интернет-каталога или интернет-магазина.

Как работает наша конвейерная загрузка. Мы подключаем фотокамеру к 1С через внешнюю обработку, которая в свою очередь через драйвер фотокамеры загружает фото в карточку товара прямо из камеры. Можно предварительно посмотреть фото, изменить положение товара и переснять кадр, если он не устраивает.  Как и любой продавец проектов я немного забегал вперед, ведь наша загрузка фотографий работала пока только с камерами Canon, но я ни разу не сомневался, что Денис сможет добавить поддержку Nikon. Ведь рядом с лайтбоксом у клиента на штативе стоял именно Nikon.

Клиент выслушал и говорит: круто, а обработка фото?  Перед тем как опубликовать фото в интернет-магазине, мы обрабатываем его в фотошопе, чтобы сделать фон идеальным. Я спрашиваю: вам нужен идеально белый фон? Дайте пару дней, и мы что-нибудь придумаем. Таймаут нужен был для того, чтобы посоветоваться с Денисом и Кириллом. Денис один раз обмолвился, что было бы круто в нашу обработку добавить автоматическое удаление фона. В интернете есть много специализированных сервисов для этой задачи.

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

Я прихожу в офис и рассказываю всё это. Денис говорит: я могу попытаться такую нейросеть сам сделать. А если взять за основу какую-нибудь нейросеть с открытым кодом, то это не должно занять много времени. Нужен примерно месяц. Мы помечтали, что если это получится, то можно будет с этого клиента взять фиксированную сумму, а другим продавать поштучно. Может даже сделаем отдельный сервис как у remove bg. Мне нравилась такая перспектива тем, что если у нас действительно всё получится, то этот вариант будет ближе всего к зарабатыванию денег за пределами рунета, хоть и в такой узкой и специфичной нише.

В общем я заложил на проект два месяца, без варианта что у нас ничего не получится и выставил клиенту счет. Мы получили 100% предоплату и сразу выяснилось, что для тренировки нейросети нужна видеокарта существенно мощнее, чем та что была в нашем раcпоряжении. Чтобы сильно не тратиться решили купить на Авито. По нашему небольшому бюджету в 20 тысяч рублей, мы смогли купить б/у видеокарту Gigabyte GeForce GTX 1070 Ti Gaming 8G. Для начала её должно было хватить.

Выполнение проекта

Как я и предполагал, Денис уложился в два месяца. Сначала он прикрутил универсальный драйвер, который поддерживал одновременно и Canon, и Nikon. Были небольшие проблемы стабильности работы видоискателя прямо в 1С. Он периодически отваливался и нужно было перетыкать USB.    

В итоге все заработало, но результаты обработки фона нельзя было назвать стабильными. На темной обуви нейросеть показывала хороший результат, а на светлой обуви результат оставлял желать лучшего. И если мне было непонятно что делать, то Денис уверенно говорил, что проблема в определении границ объекта. И чем контрастнее выделялся сам объект, тем лучше был результат. Соответственно для светлой обуви нужен был темный фон. Мы решили попробовать заменить белый фон на серый. Результат сразу стал лучше, но до качества remove.bg мы не дотягивали.

Со слов Дениса, чтобы нейросеть работала на уровне remove.bg, нужно было её обучать на более наполненном датасете. Оставалось ждать, когда Денис найдет подходящий датасет, и скормит его нашей нейросети чтобы она выдавала результат сопоставимый с конкурентами, ведь мы запланировали сделать на её основе общедоступный платный сервис. В итоге дообучение нейросети тоже дало результат, предсказуемо больший чем замена белого фона на серый. Клиента теперь устраивало качество и можно было ставить точку на проекте.

Фото из реальной фотостудии клиента. В лайтбоксе можно заметить серую ткань для контраста
Фото из реальной фотостудии клиента. В лайтбоксе можно заметить серую ткань для контраста
А это скриншот готовой обработки для Управление торговлей
А это скриншот готовой обработки для Управление торговлей

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

Делаем из заказного проекта SaaS для удаления фона на фотографиях

Кто будет делать обвязку? На преддипломную практику к нам отправили трех студентов. Самый лучший из них – Антон, оказался хорошим программистом. Я предложил ему эту задачу, и он согласился.

Как принимать оплату? Через полгода мы поймем эту ошибку. Но в тот момент мы думали, что главное условие для заработка это не трафик, а возможность принимать оплату за пределами России. Путем недолгих поисков остановились на трех сервисах – PayPal и Fondy для зарубежных стран, а Best2Pay для России и СНГ.

API. Чтобы упростить жизнь себе и другим программистам, решили просто подогнать свой API под API основного конкурента.  

Как назвать сервис? Это был, наверное, самый сложный момент. Было очень много вариантов, мы долго искали самый короткий, который будет одинаково просто произноситься и запоминаться на всех языках, и чтобы был свободен домен.

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

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

Вроде все нравилось, но я не мог понять, что в названии benzin вызывает у меня отторжение. Через пару дней это непонятное отторжение прошло, и я остановил свой выбор на варианте Кирилла.

На чем делать? Денис порекомендовал взять за основу WordPress + плагин WooCommerce. Очевидным плюсом WordPress, было наличие большого количества плагинов для разных целей, это должно было существенно ускорить процесс. Нам нужно было делать мультиязычный сайт, подключать PayPal, Fondy и Best2Pay, осуществлять продажу пакетов «литров» и подписок на «литры» и при этом тратить минимум времени на эти задачи. Так что даже сейчас выбор WordPress я считаю вполне оправданным.

Сравнение с конкурентами

Для ориентира по качеству удаления фона с фотографий, главным конкурентом мы выбрали сервис remove.bg. Любой свой результат мы всегда сравнивали с результатом этого сервиса как с эталоном. Предсказать результат работы нейросети невозможно. И даже у бесспорного лидера рынка не всегда, и не все фотографии получаются идеально. Расскажу основные причины, которые могут привести к плохому результату. Во-первых, это плохое выделение объекта или слияние объекта с фоном или границей картинки. Во-вторых, это большое количество мелких отверстий в объекте. Ну и в-третьих, самое сложное - это наличие на фото волос или травы.

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

Слева исходник, в центре конкурент, справа наш результат
Слева исходник, в центре конкурент, справа наш результат

Пример с дедпулом показывает что нам есть чем гордиться, нейросеть конкурента съела меч, а наша отработала хорошо:

Слева исходник, в центре результат конкурента, а справа наш
Слева исходник, в центре результат конкурента, а справа наш

Ну и пример с обувью, показывающий обработку шнурков, а точнее "выемок":

Слева исходник, в центре результат конкурента, справа наш
Слева исходник, в центре результат конкурента, справа наш

Думаю что эти приведенные результаты третьей версии benzin neural network, на которой мы улучшили качество, в том числе края, показывают что у нас вполне сопоставимые с remove bg результаты.

Одна небольшая проблема

Как думают программисты? Оказывается не всегда так как нужно клиентам. Например мы выяснили такую штуку, если подробно сравнить превьюшку и фото с полным разрешением, то выяснится что качество обработки фона разное. Не разрешение фотографии разное, а именно удаление фона разное. Другими словами на превьшке могут остаться части фона, а на "HD" их нет. Как такое могло произойти?

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

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

Хронология проекта

Повторюсь что сам проект, на основе которого был создан сервис benzin.io выполнялся с апреля по май. Конец мая и начало июня мы доводили результат до приемлемого и в августе начали работу.  

Июль - придумывали концепцию, искали название. Ждали пока Антон защитит дипломный проект.

Август – примерно с середины августа Антон начал изучать WordPress и плагин Woo Commerce, мы зарегистрировали домен https://benzin.io развернули сайт на хостинге, сделали и протестировали страницу удаления фона и связку с сервером нейросети.

Сентябрь - адаптировали шаблон, сделали и протестировали API. Зарегистрировали и подключили плагины для платежных шлюзов PayPal, Fondy и Best2Pay. тестировали платежи. Был заказан и принят дизайн логотипа.

Октябрь – делали личный кабинет, подключали начисление и списание литров.

Ноябрь – адаптация нового дизайна страницы удаления фона, который нам подарил неравнодушный дизайнер Пётр из Краснодара, тестирование контекстной рекламы, получение первого ощутимого трафика, первые отзывы знакомых о работе сервиса.

Декабрь –потеря Антона, поиск программиста, покупка сервера и более мощной видеокарты, перенос сервера в офис, оптимизация скорости обработки с 28 секунд до 4-5 сек. для одной фотографии.

Январь – каникулы, поиск и подбор нового программиста. Создание и публикация Кириллом плагина для Figma.

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

Март – продолжение работы по подпискам и рекуррентным платежам, начислению и списанию литров (условные единицы расчета).

Апрель – борьба с плагинами WP, адаптация для поисковиков, ускорение работы сайта, поиск нативного переводчика и перевод сайта на правильный английский язык.

Май – начало тестирования контекстной рекламы на англоязычной аудитории, начало разработки мобильных приложений для iOS и Android.

Результаты и выводы

В январе к нашей небольшой команде подключился Александр. Можно сказать, что мы опять наступаем на те же грабли, неопытному программисту поручаем важный проект. Но невероятная мотивация стать из обычного айтишника настоящим программистом, желание участвовать в реальном проекте, которым пользуются тысячи людей по всему миру, творят чудеса. У нас пока нет высоких зарплат. Несмотря на это мы были выгодны друг другу, Александру нужен реальный опыт, а нам недорогой разработчик. Саша с большим разбегом, но очень уверенно набирал обороты и сейчас можно сказать что он справился со всеми задачами. Поэтому мы переключили его на то, о чем он мечтал еще до нашего проекта - разработку мобильных приложений. Мы сразу знали что рано или поздно сделаем мобильные приложения для iOS и Android, которые будут работать с нашим сервисом через API. Александр предложил для этой задачи Flutter, и я согласился.

Что касается показателей, то за апрель 2021 года они следующие:

Посетителей: 2 100,
       - в т.ч. из поисковых систем 65%
       - в т.ч. прямые заходы 28%
       - в т.ч. соцсети и прочее 7%

Визитов: 2 760
Просмотров: 6 580
Отказы: 12,5%
Доля новых посетителей: 95%
Процент российского трафика: 73%
Зарегистрированных пользователей: 2 000
Конверсия посетителей в регистрацию: 17%
Конверсия зарегистрированных в заказ: 1,3%
Средний чек: 8,5$
Прирост клиентской базы: 460 пользователей

Неожиданно большой трафик принесла нам разработка Кириллом плагина для Figma, за апрель количество человек подключивших наш сервис к Figma составило более 300 пользователей. Уверен, что разработка плагинов для WordPress+Woo Commerce и для Shopify принесет нам еще больше пользователей.

После описания краткой хронологии разработки сервиса, можно рассказать о некоторых выводах, но сначала скажу главный недостаток проекта benzin.io – это не единственный и не главный наш продукт. Просто в какой-то момент мы увидели более быструю возможность выйти с этим решением на зарубежный рынок. Узкая специфичная ниша на большом зарубежном рынке манила и притягивала. После того как у нас уже была нейросеть, нам показалось что мы быстрее сможем зарабатывать деньги на западе по сравнению с нашим основным более сложным продуктом. В апреле мы действительно заработали 60 долларов. Причем с органического трафика. Казалось бы, пошла выручка, и надо её наращивать.

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

Анализируя всевозможными парсерами причины очень маленького трафика из Google, я случайно узнал объем трафика главного конкурента – remove.bg. Если сказать, что я был ошеломлен, это не сказать ничего. 29 490 000 пользователей за май. 30 миллионов пользователей в месяц против 3 тысяч. Наш результат был меньше 1/1000 результата нашего конкурента. 

Кто-то скажет: а на что вы рассчитывали?
Кто-то скажет: всё, планы по развитию можно выкинуть.
Кто-то скажет: можно вообще всё выкинуть, бессмысленно даже пытаться.   
Я сказал: надо увеличить план как минимум в сто раз, а потом еще в сто раз.

Работа над ошибками и планы

Учитывая такую важную информацию, как безумное отставание от конкурента можно было принять всего три решения: закрыть проект, продолжать в том же духе или сделать что-то экстраординарное. Мы приняли решение сделать сервис полностью бесплатным.  Это нужно для того, чтобы набрать клиентов, которым интересен наш продукт.  Лишь после того, когда у нас будет достаточно большая база клиентов, мы монетизируем её, но только на тех, кто будет готов платить. Это будет примерно 1,5% от общего количества клиентов. Только сейчас я начал по-настоящему понимать, почему на западе никто не торопится включать монетизацию если трафик растет.

Из нашего опыта можно сделать много выводов:

  • с первого дня анализируй своих конкурентов (чтобы не получить такой сюрприз)

  • старайся полностью фокусироваться на проекте (даже при отсутствии бюджета)

  • не трать время на Россию, если думаешь о западе (ведь это меньше 1% от трафика)

Кстати, исходя из трафика основного конкурента можно сделать вывод, что он зарабатывает от 300 000$ до 500 000$ в месяц. Предположение было основано на том, что платящих пользователей плюс/минус около 1%. Таким образом, если 1% от 29 млн. пользователей это 290 тысяч человек, и допустим один человек тратит1$ в месяц (пессимистическая оценка), то месячная выручка должна составить минимум 290 тысяч долларов. Разместив в одной группе в фейсбуке вопрос насчет правильности такой гипотезы, я получил несколько подтверждений такого подхода, но самым гениальным был совет проверить выручку в открытых источниках.

Я взял название юрлица с сайта remove.bg и через пару минут увидел выручку на одном европейском сайте. Она составляла 4 млн долларов за 2020 год. Наши конкуренты зарабатывали 333 тысячи долларов в месяц. Я допускаю что в этой выручке есть другие источники дохода, но это уже не столь важно. Моя гипотеза была правильная, хотя может быть платит и меньший процент пользователей, но средний чек выше. Ведь у нас средний чек в апреле был 8$.  

Главный вывод

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

Конкретно этот вывод применим только к сервисам, но что-то на вооружение могут взять и другие виды бизнеса. Что касается нашего антикризисного плана, то он такой: получить максимальный трафик, насколько это возможно. Учитывая, что цель надо ставить измеримую и реально достижимую, то для нас на текущем этапе это трафик в 200 000 пользователей в месяц. Другими словами, на этом этапе нам нужно вырасти в 100 раз, а потом еще в 100 раз. Время выполнения этого плана можно рассчитать только начав его выполнять.

Что касается других каналов привлечения трафика, мы планируем сделать плагин для Photoshop, Woo Commerce, Shopify, а главное - активизировать контент-маркетинг. Для этого необходимо больше писать статьи, создавать видеоролики. Самое сложное – делать всё это для англоязычной аудитории. Для нас это разведка боем, так называемая тренировка перед выводом на рынок следующего продукта, над которым мы работали более пяти лет.

Первые результаты работы над ошибками

После того как я понял, что для начала нам нужно вырасти как минимум в 100 раз, мы сделали следующее:

  • полностью отключили монетизацию,

  • нашли и начали лить на сайт дешевый трафик за пределами России.

Результаты не заставили себя долго ждать, и при затратах на трафик менее 100$ за 10 дней, мы получили следующее:

  • рост трафика на 200%

  • ускорение роста регистраций на 20%

  • рост западного трафика с 27% до 52% от общего объема трафика

  • отключение платного трафика на 10 дней не привело к спаду

При этом доля платного трафика за 10 дней, не превышала 30% от общего объема.

Оценка перспектив

Отключив монетизацию, мы не отказались от нее навсегда. Мы её отложили. Я допускаю комментарии, что в июле мы cмогли бы заработать 600$, а в сентябре 6000$. Может мы придем к этому, только другим путём. Сможем ли мы безболезненно включить монетизацию? Я уверен, что да. Дело в том, что отключение монетизации натолкнуло меня на вариант плавного включения монетизации для определенной категории пользователей. Например, для тех, кто пользуется API и количество запросов к серверу превышает определенный показатель. На западе это достаточно обкатанный вариант монетизации, и я думаю, что он не хуже подписки. С таким вариантом мы не оттолкнем тех, кому надо обрабатывать всего несколько фотографий в день, для них наш сервис останется навсегда бесплатным, и это очень круто для нас, так как это очень плохо для наших конкурентов.

Одной из перспектив я вижу развитие нашего функционала конвейерной загрузки фотографий для карточек товаров в интернет-магазинах. Это даст возможность отстроиться от наших конкурентов. После выпуска мобильных приложений мы обязательно переключимся на разработку плагинов для WordPress + Woo Commerce, Shopify, возможно и для Битрикс, ведь все-таки мы находимся в России.

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

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

А сейчас мы продолжим свою борьбу за место под солнцем на западном рынке, пускай даже таким безжалостным для себя и для конкурентов способом. Наши затраты, это электричество, 100 Мб оптоволоконный канал в офисе, немного платного трафика и самый главный расход это контент-маркетинг, на котором мы сейчас и сосредоточимся. Как минимум это сделает нас чуть-чуть известными в России и за рубежом.

Мы опубликовали внешнюю обработку, которая подключает фотокамеры Canon и Nikon к Управление торговлей 11.4 и с помощью нейросети превращает процесс добавления фото в карточки товаров в настоящий конвейер. Кириллу не зашло старомодное слово конвейер и мы назвали эту штуку - Потоковая предметная фотосъемка с удалением фона (Canon & Nikon). Она размещена в маркетплейсе Инфостарта вот здесь.

И когда мы будем готовы презентовать наш основной продукт, может будет не лишним разместить где-то сбоку маленькую, но гордую надпись: от создателей BENZIN neural network - ссылка на наш сайт.