Целенаправленная практика помогает нам становиться лучше, будь то игра в баскетбол, рисование или публичные выступления. Эта стратегия применима и к разработке программного обеспечения.
Если мы регулярно исследуем новые API, наборы инструментов и возимся с ними, мы сможем лучше эффективно превращать идеи в продукты.
Эксперименты необходимы и интересны…
TwinCam — один из таких экспериментов, которые я провел недавно. iOS AV Foundation открыла возможности и позволила разработчикам использовать несколько камер одновременно (передняя, задняя, широкоугольная и с определением глубины).
Мне стало любопытно. 🤔 А что если объединить изображения с двух камер одновременно? Передняя камера для записи моего лица и задняя камера для ориентира, который я пытаюсь запечатлеть? Смогу ли я соединить их вместе в реальном времени?
Есть только один способ узнать это… Просто Сделай Это.
Полученный опыт в реальном времени довольно интересен.
TwinCam не так уж сложно реализовать с использованием современных инструментов машинного обучения. В этом эксперименте я использовал Google ML Kit — Selfie Segmentation (так что я могу попробовать ту же идею и на Android). iOS имеет встроенную Vision Framework, которая может сделать это так же эффективно.
Эксперименты — это весело, потому что вы можете менять направление по своему усмотрению. Для TwinCam размер собственного изображения имеет большое значение; поэтому я добавил ползунок, который позволяет мне настраивать параметры на лету.
Вот 4 основных момента при создании этого:
- Вы можете выполнить большую тяжелую работу (например, обнаружение объектов, преобразование изображения) на каждом кадре предварительного просмотра в режиме реального времени без задержек, даже если у вас одновременно активны несколько потоков данных камеры. то же самое происходит на старых устройствах, таких как iPhone X. Современные телефоны очень мощные.
- Вам не нужно изучать концепции машинного обучения, такие как настройка гиперпараметров, чтобы создавать интересные впечатления. Многие из этих ARKit или MLKit удобны для пользователя и не требуют никакого опыта машинного обучения. Пример приложения — это все, что вам нужно для начала работы.
- Код, который выполняется очень часто, требует различных методов отладки. Ранние версии TwinCam загадочным образом выходили из строя в производстве (SIGSEGV), и это происходило только на определенных устройствах. Мне потребовалось много ночей, чтобы воспроизвести сбои и найти первопричину. Я не могу полагаться на старые добрые печатные заявления, потому что это создаст слишком много шума и побочных эффектов. (Примечание: логическая ошибка произошла в разделе инициализации камеры, а не даже в критическом разделе логики покадровой высокочастотной обработки.)
- Фермы физических устройств, такие как BrowserStack, работают очень хорошо. У них хороший уровень бесплатного пользования, который позволил мне изучить их. У него есть плагины для таких вещей, как fastlane, для автоматизации рабочего процесса сборки/развертывания/тестирования.
Я надеюсь, что вы найдете этот блог полезным. Скачать TwinCam бесплатно можно здесь.
Если вам интересно, еще несколько экспериментов. Технические знания обычно фиксируются в моем блоге (https://billylo.medium.com).
- Sidekick: превращает ваш iPhone в видеорегистратор с картами и навигацией, оповещениями о камерах контроля скорости, расчетом затрат на топливо и оптимизацией платных дорог.
- Самолет надо мной: Что это за самолет летит надо мной? Боинг 737 летит во Франкфурт?
- Насколько глубоко: показывает глубину и высоту воды в любом месте.
- Travel Shopping Buddy: наведите камеру на ценник, и она покажет вам сумму с учетом налогов в вашей национальной валюте для облегчения оценки.
- BuzzWatch: Чтобы помочь людям с нарушениями слуха, это приложение Apple Watch прислушивается к важным звукам (например, автомобильным гудкам) и оперативно предупреждает их с помощью вибрации на запястьях. (с открытым исходным кодом)
- SmartAlert: приложение для Android, которое работает как служба мониторинга тревог, но оно бесплатное.
- SuperRoute: генерирует маршрут с помощью Google, Apple Maps, MapQuest, HERE, OpenStreetMap, Mapbox, Azure в один клик, чтобы вы могли выбрать тот, который вам больше всего нравится.
- MyCommunityWatch.org: уведомляет вас по электронной почте, если в вашем районе зарегистрировано крупное преступление (данные получены от полицейских служб).
- Попробуйте что-нибудь новое: каждый раз, когда в вашем районе открывается новый ресторан, этот веб-сайт отправляет вам по электронной почте подробную информацию о нем, чтобы вы могли понять, стоит ли его попробовать! (при поддержке Google Maps и Yelp)