Фотобудка на максималках
Монитор с мультитачем, компьютер и камера на подвижной платформе в корпусе
Почему на максималках? Потому что, в отличие от обычных фотобудок, камера стоит на подвижной платформе и всё время наводится по лицу так, чтобы обеспечить правильную композицию, есть управление зумом. Система и интерфейс пользователя рассчитан не на 3 фотографии, а на неограниченное количество. За час можно наделать хоть 300 штук. Кроме этого экспозиция максимально точно рассчитывается по положению человека в пространстве.
Идея проекта — добиться максимального качества и разнообразия фотографий людей, которые делает автоматическая система фотосъёмки. Изначальная цель была сделать именно фотостудию, которую можно арендовать на час, например, и наделать себе хороших фотографий.
Старое фото, тогда еще не было корпуса
Однако суровая реальность внесла свои коррективы и сейчас это больше похоже на продвинутую фотобудку для мероприятий. Предыдущая статья про это тут. Но так как прошло много времени, то это не часть вторая, а отдельная статья, но постараюсь не повторяться.
Я убежден, что автоматика может сделать портрет человека гораздо лучше, чем живой фотограф. Я имею ввиду не художественное фото для выставок, а фотографии, которые нужны для каких-либо практических целей: фото для корпоративного портала, аватар для разных соцсетей и других сайтов, фото на документы. И вот почему:
Многих людей фотографы раздражают
Сразу видишь себя на экране и в режиме liveview и последние сделанные снимки
Все фото с идеально ровной линией горизонта, с точной коррекцией наклона оптической оси, процент технически хороших снимков очень высокий, в отличие от живого фотографа
Снимки готовы сразу, с правильными цветами, экспозицией и композицией, не надо ждать
Утверждения, несомненно, спорные, напишите, пожалуйста, в комментариях, что думаете:)
И сразу еще одно замечание — мне хотелось сделать чтобы всё работало вместе и это можно было использовать, а не совершенствовать до идеала какой-то один компонент.
Сценарий использования
Вот видео с экрана с примером работы:
А результат съёмки можно посмотреть здесь.
Теперь немного объясню. Пользователь может запустить съёмку двумя способами.
Первый способ — это ввести свой email с помощью экранной клавиатуры. В этом случае кнопка «спуска затвора» и управление зумом будет на презентере (радиопульт чтобы переключать слайды презентации), фотографии будут загружаться в облако и по завершении съемки система пришлёт вам письмо со ссылкой.
Второй способ — это отсканировать QR код телефоном. В этом случае дополнительно можно будет управлять съемкой с телефона через браузер, также на телефоне будут сразу показываться готовые фото и сразу можно будет скачать архив с фотографиями.
На экране монитора показывается экран с liveview, то что видит камера, две последние сделанные фотографии и QR код для перехода в галерею с готовыми фотографиями. Как только пользователь делает снимок сразу же показывается JPEG из камеры и Raw ставится в очередь на обработку. Обработка raw делается в программе RawTherapee, довольно медленно, секунд 10–15. После обработки фото загружается в облако, а в интерфейсе на мониторе и телефоне камерный JPEG заменяется на обработанное фото.
В процессе съемки можно посмотреть все сделанные фотографии на мониторе, а также можно поменять настройки: компенсацию экспозиции, интенсивность сглаживания кожи, положение лица относительно кадра по вертикали, выключить режим «зеркала» в liveview, а также включить повороты относительно вертикальной оси.
С помощью пульта или телефона можно сделать снимок сразу же (это удобно, если воспользуетесь помощью товарища), сделать снимок с задержкой в 3 секунды либо запустить серию из нескольких снимков — с пульта 6, с телефона — 3 или 10.
Программная часть
Схема работы
Схема работы примерно как у любого современного веб-приложения — есть бэкенд, написанный на Golang, он слушает по http 2 порта: один доступен только локально, в него ходит запущенный локально электрон, второй доступен из интернета через SSH тунель для работы через телефон, liveview и изменения состояния посылаются через вебсокет. Но в отличие от большинства веб-приложений тут обработка по http это малая часть, так как еще нужно управлять большим количеством девайсов: фотоаппарат, PTZ, камера глубины, пульт.
В момент запуска съемки начинается обработка изображений с камеры. На каждом кадре находим все лица и после этого зная текущие углы поворота и необходимое положение лиц относительно кадра посылаем в контроллер платформы новые значения углов поворота.
Второй поток — обработка кадров с камеры глубины, на каждом кадре получаем расстояние до человека, по нему вычисляем необходимое значение коррекции экспозиции и устанавливаем диафрагму на фотоаппарате. Да, знаю, что это не круто и надо корректировать мощность вспышек и я даже научился управлять ими через bluetooth синхронизатора, но там есть некоторые проблемы из-за которых не получается точно выставить экспозицию.
Ну и в моменты когда возникает необходимость сделать снимок собираем информацию: угол наклона платформы и текущее точное значение необходимой коррекции экспозиции диафгагму и ставим задачу на обработку фотографии.
Железо
Камера стоит на платформе с шаговыми двигателями:
Куплена на известном сайте, продавалась без контроллера. Первая версия была с коллекторными двигателями и управлялась arduino uno с нацепленным motor shieldом, но для управления двумя шаговыми двигателями нужно 2 шилда, получилось бы довольно ненадежная конструкция, да и в целом на плате ардуино коннекторы для продакшена не годятся. После написания первой статьи мне предложил с этим помочь @dmitriyrudnev небесплатно, но за приемлемую цену, очень ему за это благодарен, сильно продвинул проект вперёд. В-общем разместили на одной плате arduino leonardo, 2 драйвера двигателей на L298P и модули питания 8В для фотоаппарата, 5В для сервопривода управления зумом и 3.3В для питания синхронизатора вспышек (оказался не нужен, так как стал использовать синхронизатор, который питается от USB). Всё это питается от 12В и поэтому получилось избавиться от огромной кучи проводов, все стало намного надежнее и аккуратнее:
Контроллер
Управляется контроллер через RawHID, сначала использовал последовательный порт, но там как-то нет гарантии, что сообщение не порежется на части. Посмотрел код ядра — у RawHID вроде бы с этим получше.
Arduino выбрал просто потому что с ним легко разобраться. Как я уже написал, хотелось побыстрее дойти до победного конца, а подробное изучение программирования микроконтроллеров меня бы сильно затормозило.
Корпус
После первых нескольких выездов из дома стало ясно, что нужно делать корпус, потому что соединять между собой компьютер, фотоаппарат, платформу и монитор огромным пучком проводов очень долго и ненадежно.
Опыта в проектировании корпусов у меня не было совсем да еще и не до конца было понятно, как лучше разместить все компоненты внутри, так чтобы платформа могла нормально вращаться, ничего не загораживало объектив камеры и, наконец, чтобы корпус получился более-менее компактным.
Корпус со снятыми панелями
Решил сделать каркас из алюминиевого профиля, а платформу разместить на относительно подвижных направляющих, чтобы можно было донастроить её положение. Как раз купил к этому времени 3D принтер, так что на этом корпусе я учился чертить и печатать.
Панель с клипсами
Когда получилось сделать каркас и разместить внутри все компоненты начал думать над тем, как это всё закрыть. В итоге мне подсказали, что можно заказать вырезать по чертежам панели в компании, которая занимается рекламными конструкциями. Эти панели сейчас крепятся к профилям клипсами, так что они очень легко снимаются и надеваются. К стойке корпус крепится стандартным креплением Vesa 100×100.
Сейчас перевезти и установить эту систему где-то стало гораздо проще, но всё-равно есть некоторые лишние действия. например, камеру глубины удалось разместить только снаружи и её приходится снимать, чтобы не разбить при перевозке.
Для того чтобы платформа с камерой не болталась сделал транспортировочное крепление, с ним вообще ничего не болтается, несколько перевозок на машине уже этот корпус успешно выдержал.
Крепление профиля на который установлена платформа и транспортировочное крепление
История развития и перспективы
Идея у меня возникла в конце 2017 года, весь 2018 год я делал proof of concept и тогда был настроен крайне оптимистично :)
Скриншот интерфейса в браузере телефона
Тогда я почему-то думал, что система обязательно должна уметь работать автономно, без интернета. Соответственно был только один вариант скачивания фотографий — пользователь должен был сначала подключиться к нашему вайфаю и затем уже запускать фотосьёмку отсканировав QR код на мониторе. Ну и в любой момент можно было кликнуть на ссылку и скачать zip архив с фотографиями. В браузере телефона сохранялся токен, поэтому можно было подходить и запускать съёмку несколько раз, все было доступно, но только при подключении к локальному вайфаю. Я даже опробовал это на паре друзей и, как обычно бывает, в такие моменты всё работает довольно неплохо.
Фотофорум
Первый показ широкой публике решил сделать на фотофоруме в Крокус Экспо в апреле 2019 года. Заплатил около 200 т.р. за павильон 2×3 метра на 3 дня.
Наш павильон на фотофоруме
В первые же часы фотофорума я понял, насколько далека эта система от рабочего состояния. Вскрылась просто масса проблем. WiFi в первый день работал через pci адаптер в режиме точки доступа, а на площадке, мне кажется, у каждого участника была своя точка доступа. Так что скорость была чрезвычайно низкой. Усугублялось всё тем, что архив я генерил на лету и браузер не показывал, сколько процентов уже скачано. Но даже до этого момента было дойти очень сложно — только там я выяснил, что телефоны крайне негативно относятся к вайфаю без подключения к интернету. Часть телефонов сразу отключается, браузеры проверяют сайты на безопасность через свои сервисы.
Следующая проблема — некоторые люди после моих слов о том, что надо скачать архив, делали квадратные глаза, как будто я попросил их оседлать единорога. Особенно на айфонах как-то сложно было справиться с архивами, некоторым удавалось только сохранять фотографии по одной из браузера.
Короче главное что я выяснил — самая большая проблема — это передать фотографии пользователю. А вот фотографии получались на удивление хорошими, тогда у меня фотографии обрабатывались в Adobe Lightroom и Portraiture, которые крутились в виртуальной машине.
Было довольно много людей (больше пяти), который спрашивали как и когда можно купить мою систему, но из-за тотального краха в UX я так и не нашел что им ответить. В то время даже просто включить все было крайне сложно.
Студия Citrus
На фотофоруме удалось познакомиться с парнями, которые делают агрегатор фотостудий, а они меня познакомили с владельцами фотостудии. Договорились на две недели поставить мою систему в одну из комнат у них, которую они еще не начали сдавать.
К тому моменту я сделал довольно много улучшений: во-первых, систему уже можно было включить, нажав на кнопку power на компьютере, а во-вторых, я все-таки отказался от вайфая без подключения к интернету, да и сделал что архив с фотографиями сначала генерился и уже потом начинал отдаваться по http, чтобы были видны проценты загрузки.
Это был первый опыт работы системы вдали от меня и опять, было очень много проблем — я постоянно заходит туда по ssh и что-то подкручивал, ездил каждый день на другой конец Москвы чтобы что-то починить. Но всё было гораздо лучше, чем на фотофоруме, пользователи как-то сами справлялись, но, к сожалению, далеко не все. Тогда фотостудией воспользовались примерно 20 человек.
HSE Pizza Pitch
Кадр с мероприятия
Посетил мероприятие, где можно выступить со своим питчем пере потенциальными инвесторами. Сразу после выступления мне показалось что люди мой проект не особо оценили, судя по вопросам и коментариями. Но зато после удалось довольно продуктивно пообщаться в кулуарах. И, самое удивительное, почти нашел инвестора :) Она даже съездила в студию Citrus, но там случился эпик фейл, сели батарейки в синхронизаторе вспышек. Короче она целый час снимала с пилотным светом и фотографии получились совсем не такие как должны быть :(В-общем прямо впечатлить не получилось, но она предложила открыть пару студий и оплатить аренду на какое-то время при условии, что доли в проекте будут 50 на 50, но я отказался.
День Рождения Студии Артемия Лебедева
Артемий Лебедев каждый год предлагает бесплатно поразвлекать гостей на их мероприятии, на удивление их заинтересовало моё предложение. Там я впервые опробовал идею ездить с этим на корпоративы. А еще у меня был крупный апдейт железа — новый контроллер и шаговые двигатели. И да, из-за этого всё глючило и ничего не работало :) Но никто этого не заметил, потому что всем было очень весело.
Примерно раз в 15–20 минут что-то происходило и систему нужно было перезагружать. И как обычно было очень сложно объяснить людям, как скачать фотографии себе на телефон.
Были люди, которые интересовались, как можно мою систему купить, но опять таки я так и не смог ничего определенного им ответить, к сожалению.
А вот фотографии и там получались хорошие. Даже удалось позвать Артемия Лебедева. И, что самое удивительное, он даже спустя 3 года эти фотографии не потерял и использовал их в своём видео:
Очень надеюсь что никаких авторских прав не нарушил. Это кадр из опубликованного видео Самые Честные Новости. Если что — пишите, я удалю :)
Сразу после вечеринки в студии Артемия Лебедева мой оптимизм сильно угас, так как были совсем непонятные проблемы с железом да и ситуация с передачей фотографий пользователям меня сильно измотала. Короче примерно в этот момент проект перешел в статус пет-проекта. На следующий день у меня было назначено собеседование в mail.ru, которое я прошёл и устроился туда на работу на позицию, на которой требовалась гораздо большая вовлеченность, чем на предыдущем месте работы. И автоматической фотостудией я уже занимался в вялотекущем режиме. За 3 года порешал все проблемы с железом, сделал корпус и сделал режим работы без подключения телефона пользователей.
Недавние мероприятия
Год назад сходил на мероприятие для детей в школе английского и опробовал новый режим работы. И опять оказалось, что я не всё продумал. Там была такая ситуация, что очень много людей и каждый подходит, делает пару фоток и уходит. Сразу же стало ясно, что большая часть времени тратится на ввод emailа. В-общем спустя полчаса запустили с моим адресом почты и обещанием разослать фотографии после мероприятия. Что тоже было совсем не круто, так как одно из главных преимуществ — это как раз фотографии сразу. А на тот момент фотографии в облаке у меня были сделаны хитрым образом — они по одной загружались в S3 и в конце сессии я загружал туда же архив и генерил html файл в котором все ссылки на фотографии были в виде S3 presigned urlов. Так что не надо было держать какой-то отдельный сервис в облаке, но фотографии становились доступными только после завершения сессии.
И вот наконец я написал этот облачный сервис, в котором фотографии появляются сразу, сделал режим «вечеринки», когда на экране во время съемки показывается QR код и любой может посмотреть сразу фотографии. Его удалось испытать в этой же школе английского этой весной. И в первый раз всё получилось. Наконец всем удалось всё сразу посмотреть и скачать.
Выводы
Сейчас, к сожалению, не могу уделять достаточно времени этому проекту из-за основной работы и двоих детей. Возможно похожу еще на какие-то праздники, но в полноценный бизнес вырастить уже не планирую. В сумме потратил наверное тысяч 600, но они уже окупились из-за прибавки в зарплате из-за накопленного опыта. Пара мыслей на этот счёт:
Если запускаешь стартап надо обязательно иметь план выхода с основной работы, потому что в какой-то момент над проектом нужно будет работать фулл-тайм и куда-то ходить в рабочее время.
Очень тяжело продавать, когда ты — разработчик, потому что все мысли не о том, что тебе заплатят денег, а о то, сколько ты проблем огребёшь от того, что твоим поделием кто-то начнёт пользоваться. Нужно обязательно отдельного безбашенного продажника приглашать, который будет приходить и говорить — мы уже всё продали, надо через месяц выдать результат.
Если делаешь продукт B2C, то надо делать максимально просто, по возможности он должен повторять то, что люди уже знают. Вот прямо надо взять то, что ты придумал и сделать в 10 раз проще.
И еще пара фотографий напоследок, ничего дополнительно не ретушировал и не подкручивал цвета:
примеры фото
В целом много удачных фотографий других людей есть, но не спрашивал разрешения на публикацию, так что лучше не буду показывать.