Целенаправленная практика помогает нам становиться лучше, будь то игра в баскетбол, рисование или публичные выступления. Эта стратегия применима и к разработке программного обеспечения.

Если мы регулярно исследуем новые API, наборы инструментов и возимся с ними, мы сможем лучше эффективно превращать идеи в продукты.

Эксперименты необходимы и интересны…

TwinCam — один из таких экспериментов, которые я провел недавно. iOS AV Foundation открыла возможности и позволила разработчикам использовать несколько камер одновременно (передняя, ​​задняя, ​​широкоугольная и с определением глубины).

Мне стало любопытно. 🤔 А что если объединить изображения с двух камер одновременно? Передняя камера для записи моего лица и задняя камера для ориентира, который я пытаюсь запечатлеть? Смогу ли я соединить их вместе в реальном времени?

Есть только один способ узнать это… Просто Сделай Это.

Полученный опыт в реальном времени довольно интересен.

TwinCam не так уж сложно реализовать с использованием современных инструментов машинного обучения. В этом эксперименте я использовал Google ML Kit — Selfie Segmentation (так что я могу попробовать ту же идею и на Android). iOS имеет встроенную Vision Framework, которая может сделать это так же эффективно.

Эксперименты — это весело, потому что вы можете менять направление по своему усмотрению. Для TwinCam размер собственного изображения имеет большое значение; поэтому я добавил ползунок, который позволяет мне настраивать параметры на лету.

Вот 4 основных момента при создании этого:

  1. Вы можете выполнить большую тяжелую работу (например, обнаружение объектов, преобразование изображения) на каждом кадре предварительного просмотра в режиме реального времени без задержек, даже если у вас одновременно активны несколько потоков данных камеры. то же самое происходит на старых устройствах, таких как iPhone X. Современные телефоны очень мощные.
  2. Вам не нужно изучать концепции машинного обучения, такие как настройка гиперпараметров, чтобы создавать интересные впечатления. Многие из этих ARKit или MLKit удобны для пользователя и не требуют никакого опыта машинного обучения. Пример приложения — это все, что вам нужно для начала работы.
  3. Код, который выполняется очень часто, требует различных методов отладки. Ранние версии TwinCam загадочным образом выходили из строя в производстве (SIGSEGV), и это происходило только на определенных устройствах. Мне потребовалось много ночей, чтобы воспроизвести сбои и найти первопричину. Я не могу полагаться на старые добрые печатные заявления, потому что это создаст слишком много шума и побочных эффектов. (Примечание: логическая ошибка произошла в разделе инициализации камеры, а не даже в критическом разделе логики покадровой высокочастотной обработки.)
  4. Фермы физических устройств, такие как 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)