Русский
Русский
English
Статистика
Реклама

Блог компании samsung

Ускоряем нейросеть на уровне железа интервью с разработчиком компиляторов

25.03.2021 18:04:40 | Автор: admin

Обыденное представление о Deep Learning состоит в том, что для достижения успеха нужно хорошо знать математику и уметь программировать на Python. Но все становится немного сложнее, как только мы начинаем говорить о реализации нейросетевых решений в железе, где критична производительность. Мы пообщались с руководителем направления российского Исследовательского центра Samsung Вячеславом Гарбузовым, чтобы понять, как ускоряют работу нейросетей на аппаратном уровне, при чем тут компиляторы и какие знания требуются в этой редкой профессии. И самое интересное - какие вакансии в его подразделении открыты в настоящий момент.

Примеры работы нейросети на смартфоне: оптимизация сцены,классификация изображений, подсказка лучшей композиции кадраПримеры работы нейросети на смартфоне: оптимизация сцены,классификация изображений, подсказка лучшей композиции кадра

Слава, привет! Расскажи о себе, чем занимается твоя команда сейчас.

Привет! Я руковожу управлением разработки ПО для систем на кристалле Исследовательского центра Samsung. Мы занимаемся разработкой SDK для ускорения исполнения моделей глубинного обучения (Deep Learning)на процессорах Exynos.

Кто твои непосредственные заказчики?

Наша работа связана с компонентным бизнесом и нашим заказчиком является Samsung Semiconductor. Мы ближе к земле.

Правильно ли я понимаю, чтомобильныйпроцессор Exynosв основном используется в телефонах Samsung и больше нигде?

Вовсе нет. Exynos используется в смартфонах других производителей. Кроме того, Exynos - это не только мобильные системы на кристалле (SoC). Есть микроконтроллеры, компоненты Интернета вещей. Крупные игроки на автомобильном рынке тоже заинтересованы в наших продуктах.

Расскажи про новый Exynos и AI-ускоритель в нем

Разработкой Exynos SoCи SDK к нему занимается подразделение Samsung System LSI (large-scale integration - высокоинтегрированные чипы). Узнать подробнее про новый Exynos 2100 можно извидеопрезентации. В разделе AI and Camera кратко рассказывается, что такое AI-ускоритель. Это железо для ускорения работы нейросетей. Обучение сети производится заранее, а исполнением (inference) как раз занимается это железо.

Что такое inference, что значит выполнить сеть на устройстве? Есть нейросеть, она уже натренирована. На вход готовой нейросети мы подаем картинку с собачкой или кошечкой, а на выходе это устройство дает 0 или 1. То есть наш сопроцессор не занимается обучением нейросети самостоятельно, его задача просто отработать готовую сеть.

Для работы нейросетевого сопроцессора нужен программный инструментарий. Такой инструмент есть, он называется Samsung Neural SDK.

Для каких задач это всё используется?

Применения в телефоне в основном связаны с камерой: живой фокус, ночная съемка, Bixby Vision, обнаружение лиц, улучшающее картинку.

Здесь забавно, что в этом году в S21 добавили фичу для детектирования домашних животных. Раньше алгоритмы не узнавали собак и кошек и не могли их обработать красиво. И вот эта проблема теперь решена.

Сегментация людей и животных на фотоСегментация людей и животных на фото

Расскажи, как устроен этот AI-ускоритель.

Он состоит из двух частей:

  1. NPU (Neural Processing Unit - обработчик нейросетей). Фактически это ускоритель операций с тензорами. Он умеет быстро делать свертки (convolution), пулинги (pooling) - набор операций, популярных в глубинном обучении.

  2. DSP (digital signal processor - цифровой обработчик сигналов).Это процессор, специализированный под выполнение определенных задач. Его разрабатывают изначально под конкретные алгоритмы. Ребята проектируют этот DSP под распознавание лиц или под более широкий круг задач.

Это единый кластер в составе одной системы на кристалле. Для него мы и разрабатываемSDK. У нас две команды, одна работает над NPU, другая, соответственно, над DSP.

Какие компиляторные задачи у вас с NPU?

Компилятор для NPU - это та штука, которая превращает граф на выходе Deep Learning-фреймворка в последовательность процессорных команд. Отличие от обычного компилятора в том, что мы генерируем код не для CPU, а для нейросетевого ускорителя. Это другой процессор со своим языком. И чтобы вся система работала быстрее, мы оптимизируем ее на уровне компилятора.

В чем суть оптимизации? По большей части это memory allocation (оптимизация работы с памятью) и instruction scheduling (параллелизм на уровне инструкций). Наш процессор может несколько инструкций выполнять одновременно, например, считать ту же самую свертку и загружать данные для свертки. Мы должны сгенерировать код для этого процессора так, чтобы оптимизировать работу с памятью и максимизировать параллелизм.

А что с DSP? Какие задачи там?

Это уже более-менее похоже на традиционный процессор. Если свертку наш NPU умеет делать на уровне железа, то здесь мы должны эту свертку описать на языке C++ и исполнить на DSP. Зачем нужен отдельный сопроцессор, чтобы выполнять ту же самую свертку? Например, NPU занят в какой-то момент, и мы хотим параллельно решать другую задачу. Некоторые операции мы в принципе на NPU выполнить не можем.

У нас достаточно простой DSP, основанный на VLIW-архитектуре (very long instruction word очень длинная машинная команда). Особенность нашего DSP в том, что он аппаратно достаточно простой, и от компилятора требуется серьезная оптимизация.Мы делаем на базе LLVM компилятор для этого DSP.

Поговорим о других вещах. Где ты работал до Samsung?

Непосредственно до Samsung я работал в Topcon Positioning Systems и в Lynx Software Technologies. Занимался разработкой RTOS и инструментов.

Где и на кого ты учился?

Учился в МГУ на физика. Занимался ускорителями элементарных частиц, электронов в частности. Занимался автоматизацией физического эксперимента, системой управления для промышленного ускорителя.

Как помогает образование физика в твоей профессии?

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

Работая в твоем отделе, насколько важно хорошо разбираться в железе?

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

А в глубинном обучении?

Базовое представление надо иметь. Я полагаю, что современные выпускники вузов это всё уже знают на определенном уровне. Это всегда хорошо иметь в бэкграунде. Например, курс Нейронные сети и компьютерное зрение Samsung Research Russia на Stepik я добавил в закладки, но пока не прошел. И кстати, вчера в рамках этого курса былалекцияна YouTube про Embedded Inference как раз на эту тему - "Мобильные архитектуры нейросетей и фреймворки для их запуска".

Когда мы начинали этот проект в 2018 году, мне сказали: нужен компилятор для Deep Learning. Нам потребовалось найти людей, которые одновременно умеют и в Deep Learning, и в железо, и в компиляторы. И это сложно, потому что таких людей очень мало. Потом мы поняли, что требование знания Deep Learning не столь критично, всё-таки заказчики от нас просили только компилятор.

С выпускниками каких вузов тебе интересно работать?

Мне приятно работать с выпускниками МФТИ, особенно с теми, которые прошли через базовые кафедры ИСП РАН или Intel. У нас в отделе достаточно много ребят из Intel. По факультетам - ФУПМ, ФРКТ. Если говорить о других вузах, то это и МГУ - забавно, что много моих знакомых компиляторщиков заканчивали физфак. Также это ВШЭ, где есть МИЭМ, там учат проектировать железо, FPGA. А компиляторы можно условно рассматривать как часть железа в принципе.

В нашем Исследовательском центре мы проводили вечернюю школуSamsung Compiler Bootcamp, и , в основном, в ней учились студенты из Бауманки, МГУ и Вышки.

На тему FPGA - полезно ли это изучать?

Как бэкграунд - да, это правильно.

А вообще, много ли таких центров в Москве, где занимаются компиляторами?

Intel, JetBrains, Positive Technologies, Huawei. Из российских - МЦСТ, которые Эльбрус, они тоже компиляторы делают. Например, Роман Русяев, наш коллега из Исследовательского центра Samsung и разработчик компиляторов, как раз оттуда пришел (см. егостатьюна Хабре о Concept-Based Polymorphism), он часто выступает на конференциях и пишет статьи.Он активный участник C++ Community. Например, вот пара его выступлений где затрагивается тема оптимизации при помощи компилятора :"Исключения C++ через призму компиляторных оптимизаций","Настоящее и будущее copy elision".

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

О каких мировых трендах в компиляторов можно сейчас говорить?

Можно выделить такие тренды:

  1. Доминирование проекта LLVM

  2. Обобщение компилятора для различных предметных областей посредством универсального промежуточного представления (MLIR)

  3. Объединение различных инструментов для анализа и преобразования кода (компиляторов, анализаторов, performance estimators, линтеров и пр.) в рамках одного проекта

  4. Активные попытки использования высокой науки в промышленных компиляторах (formal verification, polyhedral optimizations, более подробно встатье)

Какие требования к соискателям, будущим разработчикам компиляторов, ты бы озвучил?

Обязательные требования: знание С/С++ на хорошем уровне. Понимание того, как устроены компиляторы, опыт их разработки. Понимание устройства операционной системы. Умение разбираться в больших объемах чужого кода. Навыки отладки embedded-устройств. Знание практик программной инженерии - непрерывная интеграция, ревизия кода, отслеживание задач. Владение скриптовыми языками - Bash или Python.

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

Работая в международной компании, как складывается коммуникация с иностранными коллегами? Как вы решаете вопросы взаимодействия с коллегами в пандемию?

Мы активно взаимодействуем с командами из других стран Корея, Китай, Индия, Израиль, США. До карантина они частенько приезжали к нам в гости, а мы к ним.

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

Какие книжки о компиляторах ты бы посоветовал?

Коллеги рекомендуют начинать с "Modern Compiler Implementation in ML", автор Andrew W. Appel.

Какие твои любимые книги о программировании вообще?

Керниган и Ричи Язык программирования С. Они классные. Еще Керниган и Пайк, Практика программирования. Там настолько все четко сделано.

Что скажешь об онлайн-курсах?

Если говорить о курсах по смежным темам, то по глубинному обучению это курс Samsung о нейронных сетях в компьютерном зрении, и известный курс Эндрю на (Andrew Ng). Полезенкурс по С++от Яндекса.

LLVM или GCC - что полезнее изучать?

LLVM. Он более распространенный, и порог вхождения считается ниже.Кроме того, в этом проекте активно используются последние нововведения языка C++ и современные практики программирования. Мы, кстати, сейчас ищем разработчика, который знает LLVM.

Какие инструменты командной работы используете?

Используемgit, точнее корпоративный github. Важно сказать, что мы делаем Code Review, и это неотъемлемая часть работы наших инженеров. Здорово, что все друг другу помогают и делятся знаниями. Также мы делимся знаниями с помощью Confluence, у нас есть вики-портал с внутренней документацией по нашим разработкам. Есть Jira для отслеживания задач. И есть свой чат на основе Mattermost, то есть практически Slack - без него на удаленке мы бы вообще не выжили. Исповедуем ContinuousIntegration, а также автоматизируем все, что можно автоматизировать.

А что насчет методов Agile?

Мы не привязаны к какой-то конкретной методологии. Берем полезные практики, которые подходят нашему проекту, из разных методологий. Например, из скрама мы берем Daily Scrum - ежедневные собрания. У нас есть итеративное планирование. И так далее.

Не могу не спросить. А вот во время пандемии, когда все по видео общались, вы все равно Daily Scrum стоя проводили?

Ну нет, всё-таки все сидели.

Сколько у вас длится Daily Scrum?

От 15 минут до часа, потому что иногда он перетекает в технические дискуссии.

Что еще интересного бывает?

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

----

А сейчас самое интересное: ВАКАНСИИ!

У нас открыты две вакансии, соответственно поNPUи поDSP. Если вас заинтересовало, откликайтесь на вакансию прямо на HeadHunter, и возможно, мы с вами встретимся на собеседовании.

Вопросы задавала: Татьяна Волкова, куратор трека по Интернету вещей социально-образовательной программы для вузов IT Академия Samsung

Отвечал: Вячеслав Гарбузов, руководитель направления, российский Исследовательский центр Samsung

Подробнее..

Конфигурация корпоративного мобильного приложения с помощью AppConfig

25.09.2020 16:06:58 | Автор: admin
Если вы администратор в компании, где есть внутреннее мобильное приложение, неважно для чего будь то обычный мессенджер или почта, или что-то особенное наподобие сканера штрих-кодов рано или поздно перед вами встанет задача удаленной настройки и менеджмента приложений. Прописать конкретный id или адрес сервера во всех телефонах можно при помощи костылей, но есть и готовое решение де-факто уже стандарт, который можно использовать совместно с одной из существующих EMM/UEM-платформ (Enterprise Mobile Management/Unified Endpoint Management).

В этой статье мы решили дать инструкцию, как сделать ваше Android-приложение конфигурируемым, если вы его разработчик. То есть: что конкретно нужно изменить в вашем приложении, чтобы выполнить потребности корпоративной аудитории. А еще мы описали всю работу администратора на примере платформы Knox Manage.



Постановка задачи


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

Например, в швейцарской железнодорожной компании SBB каждый из 30 000 сотрудников получает кастомизированный под рабочие задачи телефон там не только почта и мессенджер, но и, к примеру, отправка сообщений о неисправностях. Возлагать на сотрудника задачу настройки всей этой периферии не только накладно в человеко-часах, но и чревато возможными ошибками в процессе. А еще в ряде случаев например, при появлении сбоев бывает проще полностью перепрошить и заново инициализировать телефон, чем искать ошибку. Поэтому, правильно выбранное решение для корпоративного приложения значительно облегчает жизнь IТ администратора компании.

Обычно, при внедрении централизованных систем мы сталкиваемся с двумя задачами:

  1. Первичное подключение устройства к системе. Тут всё достаточно просто, уже давно существуют стандартные инструменты для этого: Knox Mobile Enrollment, Android Zero Touch и Android Enterprise Enrollment (EMM-токен, QR-коды и пр.)
  2. Первичная настройка необходимых корпоративных приложений. Этот момент гораздо сложнее, так как у разных приложений совершенно разные параметры и настройки, и знать их все заранее невозможно

Общая схема решения


В качестве решения второй задачи существует механизм AppConfig, это не инициатива какой-то единичной компании, а действующая конвенция нескольких вендоров. Его суть кратко такова: разработчик реализует в своем мобильном приложении почте, мессенджере, клиенте видеосвязи и т.д. поддержку управляемых конфигураций (Managed Configurations), настраиваемых под конкретного пользователя. Разработчик решает, какие именно параметры в приложении можно задавать извне (идентификатор, имя пользователя, адрес сервера). Через корпоративный Google Play эти параметры попадают в EMM-систему. А она уже позволяет создавать управляемые конфигурации и удаленно назначать их определенным устройствам и пользователям.

Чтобы узнать, реализован ли такой функционал в конкретном приложении:

  • Перейдите в корпоративный Google Play.
  • Найдите нужное приложение.
  • Если оно поддерживает управляемые конфигурации, то под названием увидите значок Это приложение можно настроить удаленно:



Общий процесс выглядит так:

  1. Разработчик добавляет поддержку управляемых конфигураций в свое приложение. В файле схемы XML он указывает параметры, настраиваемые удаленно, и в коде приложения обеспечивает развертывание этих параметров. Затем выкладывает приложение в корпоративный Google Play.
  2. EMM-система предоставляет интерфейс для администратора, через который XML-схема извлекается из приложения в Google Play при помощи iframe.
  3. Администратор вводит значения параметров, которые должны оказаться на корпоративных устройствах. После этого EMM-система передает конфигурацию в Google Play.
  4. Google Play обновляет приложение на всех корпоративных устройствах в соответствии с новой конфигурацией.



Процесс адаптации корпоративного мобильного приложения к AppConfig

Предположим, что вам требуется удаленно ввести адрес и имя пользователя в почтовом клиенте. На примере Samsung Knox Manage интерфейс настройки этих параметров с помощью управляемой конфигурации будет выглядеть так:



Для поля Email address вводим $emailaddress$, а для имени пользователя User name задаем $username$ (эти переменные будут подставляться динамически, в зависимости от конкретного пользователя).

Как разработчику добавить поддержку AppConfig в свое приложение?


Предположим, что мы разрабатываем мобильное приложение, в котором настраиваемый параметр адрес сервера. Согласно рекомендациям Google, разработчик должен:

  1. Найти файл ресурсов XML, который обычно находится в папке проекта res/xml. В нем информация о всех настраиваемых параметрах, которая потом попадает в EMM-систему через Google Play APIs.

    <?xmlversion="1.0"encoding="utf-8"?><restrictionsxmlns:android="http://personeltest.ru/away/schemas.android.com/apk/res/android"><restriction android:key="address"android:title="@string/title" android:restrictionType="string" android:description="@string/description" android:defaultValue="sampleaddress"/> </restrictions>
    
  2. Явно указать файл app_restrictions.xml в манифесте вашего приложения внутри тега application.

    <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <meta-dataandroid:name="android.content.APP_RESTRICTIONS" android:resource="@xml/app_restrictions"/>
    
  3. Реализовать обработку события ACTION_APPLICATION_RESTRICTIONS_CHANGED в коде приложения. Это шаг гарантирует, что приложение получит новое значение, определенное администратором.

    IntentFilterrestrictionFilter=newIntentFilter(Intent.ACTION_APPLICATION_RESTRICTIONS_CHANGED);BroadcastReceiverrestrictionReciever=newBroadcastReceiver(){@OverridepublicvoidonReceive(Contextcontext,Intentintent){BundleappRestrictions=restrictionsManager.getApplicationRestrictions();/*Fetchthevaluesofmanagedapplicationconfigurationfromthisbundleandtakeactioninyourappaccordingly.*/}};
    


В результате этой несложной доработки, после публикации приложения в корпоративном Google Play, вы сможете получать настраиваемую конфигурацию с сервера:


Приложение до и после получения конфигурации с сервера

Как администратору сконфигурировать приложение через консоль Knox Manage?


Чтобы задать управляющие конфигурации, администратору нужно добавить само приложение через Knox Manage (KM) из корпоративного магазина Google Play, либо загрузить его со своего компьютера, как Managed Google Play Private (тогда публикация в корпоративный Google Play необязательна). Для задания новой конфигурации:

  1. В KM открываем вкладку Group, выбираем группу, привязанную к вашему устройству и нажимаем кнопку Application

  2. Теперь выбираем ваше приложение и нажимаем Assign

  3. В качестве Target Device выбираем Android Enterprise. Нажимаем на кнопку Set Configuration.

  4. Если вы все сделали правильно и ваше приложение имеет поддержку AppConfig, то KM заполнит нужные параметры значениями. Просто вводим адрес сервера (не забываем ввести имя конфигурации) и нажимаем кнопку Save.

  5. Нажимаем кнопку Assign, чтобы загрузить новую конфигурацию на устройство.

  6. Нажимаем OK для подтверждения.


Если приложение запущено, и разработчик корректно реализовал поддержку AppConfig, то приложение получит новый адрес сервера, заданный в консоли KM.


Приложение с введенным через консоль KM адресом сервера

Конфигурируем не только приложения, но и само устройство


В какой-то момент разработчики задумались: а что, если мы хотим настраивать не только приложения, но и параметры самого устройства аналогичным способом? OEMConfig это новый стандарт для отправки конфигураций приложениям, написанным производителями устройств. Отправка производится посредством той же самой схемы в XML-формате. Этому стандарту следуют изготовители оборудования Android, что позволяет предоставить администраторам дополнительные возможности управления устройством. Так, на смартфонах Samsung с поддержкой Knox существует решение Knox Service Plugin (KSP), его можно загрузить из Google Play. Но об этом мы поговорим в другой раз.

Итог


  • Используйте AppConfig для поддержки управляемых конфигураций вашими приложениями. Это довольно просто реализовать, а главное может быть реально полезным.
  • Cоздавайте новую конфигурацию и отправляйте ее на устройства большого числа пользователей при помощи EMM-системы (в нашем примере Knox Manage).
  • Как можно меньше костылей, пользуйтесь готовыми решениями и стандартными способами!


Дополнительные источники по теме:



Автор: Павел Лепеев,
Engineer, B2B Pre/Post Sales
Business Development Team
Samsung R&D Institute Russia
Подробнее..

Сенсорика для медицины и Умного дома лекция Станислава Полонского

04.12.2020 16:09:39 | Автор: admin

Предлагаем вашему вниманию текстовую версию видео лекции Станислава Полонского, посвященная сенсорике в Интернете вещей. Станислав - физик, кандидат физико-математических наук, начальник управления перспективных исследований и разработок в Исследовательском центре Samsung. Много лет жил и работал в США.

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

Добрый день, меня зовут Стас Полонский, я представляю российское подразделение Samsung, управление перспективных исследований и разработок (Samsung Advanced Institute of Technology).

Сперва я хотел бы обратить внимание, что прежде чем говорить о сенсорах, науке, технологиях, необходимо найти потребность. Нужна ли ваша идея, нужно ли ваше приложение? Как выйти на потребителя, на людей, которым потенциально ваша идея нужна, и с чем выйти? Есть термин минимальный жизнеспособный продукт (MVP). Какие минимальные движения вы должны предпринять, чтобы проверить на практике, нужна ли ваша идея?

Моя лекция из четырех частей:

1. Потребности. Я расскажу, как мы представляем эти потребности без проверки рынков, исключительно исходя из того, что описывается в прессе. Посмотрим, как так называемая кривая шумихи Гартнера видит использование Интернета вещей. Поговорим о том, чего москвичи ожидают от Интернета вещей, более точно - от Умного города как его части. Оказывается, что людей очень сильно волнует Интернет вещей в применении к здоровью

2. Сенсоры в медицине. Я приведу примеры сенсоров, которые могут быть полезны для Интернета вещей в области персонального здоровья: как измерить пульс, как измерить электрическое сопротивление нашего организма - называется импеданс - и для чего это нужно, и, наконец, как при помощи носимых сенсоров измерить электрокардиограмму, электроэнцефалограмму.

3. Сенсоры для Умного дома. Мы поговорим о газах, о запахах, которые бывают в доме, бывают неприятными и опасными. Еще одна интересная тема - мы постоянно теряем вещи, и мне кажется, было бы абсолютно классно, если бы мы могли эти вещи находить при помощи Интернета вещей.

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

Потребности

Итак, начинаем. Что такое кривая шумихи Гартнера? По оси X время слева направо, и по оси Y - ожидания.

График Гартнера. Источник - ВикипедияГрафик Гартнера. Источник - Википедия

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

График Гартнера за 2020 год. Источник: GartnerГрафик Гартнера за 2020 год. Источник: Gartner

Почему я показываю эту кривую? Здесь достаточно много технологий, связанных с Интернетом вещей. Я выделил их красным:

  • Паспорт здоровья: здесь, мы ожидаем, Интернет вещей может помочь нам.

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

  • Технология социального дистанцирования. Очень модная, и может быть, она окажется полезной. Есть очевидный запрос и очевидно простая реализация.

Ключевые идеи, которые хотелось бы здесь донести:

  1. Интернет вещей пока еще не взлетел, пока что это много надежд, небольшие приложения, но повсеместного использования нет.

  2. Мы говорим о сенсорике Интернета вещей. Сенсорика - эта физика, и за двести-триста лет развития физики мы изобрели массу сенсоров. По всей видимости, особой нужды изобретать новые сенсоры у нас нет. Но важно посмотреть, как существующие сенсоры могут быть вписаны в новые модели, сценарии использования, которые позволят продавать. Я напоминаю: как инженеры, мы хотим не только делать вещи, но и продавать их. Этим занимается не только отдел продаж, инженеры тоже должны об этом беспокоиться.

Итак, давайте двигаться дальше. Что думает Москва? Это слайд из стратегии Москва - Умный город 2030, и здесь показаны проценты по опросам, какие технологии больше всего нас волнуют. Это на 64% персональная медицина, и на втором месте всего на два процента меньше, это Умный дом. Другие технологии в принципе не так сильно отстают по процентам.

Источник: mos.ruИсточник: mos.ru

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

Сенсоры в медицине

Сенсор пульсовой волны

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

Источник: how2electronics.comИсточник: how2electronics.com

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

Источник: EuropePMCИсточник: EuropePMC

Да, это не просто синус, это сложная форма, она часто говорит врачам о том, что с нами происходит. Причем анализировать волну могут и умные алгоритмы. Что конкретно мы при помощи этого датчика измеряем? Прежде всего, пульс. Достаточно ли пульса? Не всегда. Например, можно посмотреть, насколько регулярен пульс, как часто меняется скорость сокращений сердца, это называется вариабельность (heart rate variability, HRV). Еще можно измерить насыщенность крови кислородом, эта переменная называется SpO2. Это, пожалуй, основное.

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

Это была теория, а теперь перейдем к практике. Что можно сделать на основе сенсоров пульсовой волны? В медицине они широко используются. В поликлинике на палец надевают оптическую прищепку, и она измеряет сокращение сердечной мышцы. Но всё-таки это узкоспециализированные вещи.

Источник: stern.deИсточник: stern.de

Можно ли вытащить эти сенсоры и проникнуть на потребительский рынок? Это делается, к примеру, в носимых устройствах. Например, на корпусе часов Samsung Gear S3 Frontier есть небольшое окошечко, там стоят оптические элементы, которые светят на руку и вытаскивают эти данные.

Samsung Gear S3 FrontierSamsung Gear S3 Frontier

Я не думаю, что это очень важно абсолютно всем. Может быть, важно для атлетов. Но мы экспериментируем, смотрим, что конкретно можно сделать, какие проекты возможны. Например, в медицине пока что большинство датчиков с проводом - неприятно, неудобно, если вы лежите в кровати и повернулись на другой бок. Все ли можно сделать беспроводным через WiFi и Bluetooth? В принципе, была хорошая идея и даже есть попытки стандартизации - американское министерство здравоохранения говорит на эту тему уже несколько лет.

Что можно сделать для потребительского рынка: любопытно, что стресс и вариабельность сердечных сокращений связаны между собой, и можно оценивать стресс. Более того, существует биологическая обратная связь - знание этих характеристик может оказать влияние на наше поведение. Можем ли мы из этого сделать какую-то увлекательную игру, конечной целью которой будет, естественно, управление нашим стрессом? Мне кажется: почему бы не попытаться встроить все эти датчики в мебель, в окружающую среду, стулья, столы, это было бы интересно.

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

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

Измеряем сопротивление

Теперь рассмотрим сенсор электросопротивления организма. По-научному это называется биоимпедансометрия. Импеданс - термин из электроники, связывает токи и напряжения. Био, потому что мы не кусок металла, не графитовый стержень - мы сложный объект, и наше сопротивление зависит от ряда факторов: насколько мы полные или тощие, сколько в нас воды; более того, на разных частотах наше сопротивления отличается, не константа.

Посмотрим несколько примеров, как измеряется импеданс. Вот эта большая колонка может находиться в клинике.

Источник: AVM Active SportИсточник: AVM Active Sport

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

Источник: TomTomИсточник: TomTom

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

Источник: EMBИсточник: EMB

Эта тема имеет много приложений: можно ли предсказать появление и развитие болезней, и так называемый основной обмен веществ, то есть сколько калорий мы сжигаем. Мы ведь сжигаем их не только, когда упражняемся в тренажерном зале, но и когда сидим, и это тоже важно знать. Как мы потребляем наши калории? Всё это широко используется для спорта, либо врачами-диетологами. Это интересные темы, они есть на рынке. Насколько они удачны или нет, тяжело судить. Но кто сказал, что у вас не будет своих хороших идей, которые бы вы смогли довести до рынка?

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

Измеряем электроактивность

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

Источник: MedicalFuturistИсточник: MedicalFuturist

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

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

Источник: ECG MedicalИсточник: ECG Medical

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

Умный дом

Итак, мы обсудили три сенсора для персонального здоровья, и сейчас мы переходим к Умному дому.

Газовые сенсоры

Мне бы хотелось выделить для начала газовый сенсор. Какие газы нас волнуют? CO2 - углекислый газ. Мы не хотим находиться в помещении, где много углекислого газа. Если у нас газовая плита, то если в комнате появляется CH4 - метан - это проблема, может быть взрыв. Другие взрывчатые вещества тоже хотелось бы определять. Как это делается? Хорошо известен оптический способ, или, я бы даже сказал, спектроскопический, когда поглощение молекулами газа на определенной длине волны связано с концентрацией этого газа.

Источник: researchgate.netИсточник: researchgate.net

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

Источник: OrientJChemИсточник: OrientJChem

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

Источник: Tokyo Institute of TechnologyИсточник: Tokyo Institute of Technology

Я хотел бы обратить внимание вот на что: посмотрите, компьютеры распознают речь, зрение, это все подвластно анализу инженеров, но с запахами ситуация совсем пока не блестящая. Нам по-прежнему нужны люди-эксперты, если мы говорим про духи, никакой автоматизации распознавания запахов пока что нет. Тема исключительно интересная!

Вот идеи для студенческих проектов: отслеживание качества воздуха,углекислоты и утечки опасных газов. Еще один пример - контроль качества продуктов. У вас в холодильнике прокисло молоко, как об этом сообщить пользователю? Т.е. важно применение сенсора в неком устройстве, а не сенсор сам по себе.

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

Поиск предметов

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

Если начать с самых простых решений, то стоит сказать о пассивных RFID-метках. Это просто небольшая антенна, связанная с микросхемой, наверняка вы видели их на товарах в магазинах.

Источник: all-electronics.deИсточник: all-electronics.de

Другое решение - поставить GPS-сенсор, прикрепить его на машину или на кошку, и узнать, где она, даже во многих километрах от нас.

Источник: gps-tracking.com.uaИсточник: gps-tracking.com.ua

А если необходимо будет искать потерянные вещи на больших расстояниях? Скорее всего нам понадобятся батарейки. Хорошо, если батарейки хватит на несколько месяцев, но, например, в случае GPS-геолокации, она может служить только пару дней. И это плохая новость для нас, инженеров. Для такого кейса неприемлемо, чтобы пользователь часто менял или заряжал батарейку, и это нерешенная проблема. Если вначале я говорил, что для сенсоров все технологии известны и нужно найти лишь приложение для них, то здесь я бы сказал, что есть место для хорошей физики и радиоэлектроники.

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

Заключение

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

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

Далее, при создании ваших решений Интернета вещей, я рекомендую руководствоваться следующими принципами.

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

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

  2. Защита данных. Используйте криптографию с самого начала; что бы вы ни делали, ваши данные должны быть защищены! Тем более, если мы говорим о таких чувствительных вещах, как персональная медицина.

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

Я хотел бы завершить лекцию, с моей точки зрения, идеальным устройством - Умной розеткой! Реально, когда я думаю про умную розетку, она удовлетворяет всем принципам, о которых я только что говорил: прозрачность и беспроводность. По определению, в розетке всегда есть электричество, вам не нужно думать о батарейках. Вы не добавляете ничего нового, вы не навешиваете ничего на себя. И если в этой розетке сделать модульную систему и добавить разъемы для новых расширений, мне кажется, это могло бы быть удачной идеей для стартапа.

Повторяю, это не новая вещь. Но умные розетки есть пока что не в каждом доме - в ваших руках сделать так, чтобы умные розетки были везде. Какие расширения этой розетки можно предложить? Из примеров по Умного дома: это датчики газов. Можно встроить поиск предметов в розетку. Чтобы найти положение вещей, нужно делать триангуляцию, то есть посмотреть расстояние до разных розеток, и узнать, где находится эта вещь, и мне кажется, в случае розеток это абсолютно возможно.

Источник: astra-media.byИсточник: astra-media.by

Если есть вопросы, пишите в комментариях. Я и мои коллеги в Samsung Research Russia всегда рады пообщаться с талантливыми интересующимися людьми.

Видео лекции

Авторы

Станислав Полонский Начальник управления перспективных исследований и разработок Исследовательского центра Samsung

Татьяна Волкова Автор учебной программы трека по Интернету вещей IT Академии Samsung, специалист по программам корпоративной социальной ответственности Исследовательского центра Samsung

Ссылки

Если вам понравился материал, то ознакомьтесь и с другими статьями тех же авторов:

  1. Статья Татьяны Волковой График Гартнера 2019: о чём все эти модные слова?

  2. Статья Станислава Полонского 5G - где и кому он нужен?

Подробнее..

Умный дозатор таблеток или мой первый опыт в IoT

22.01.2021 16:14:24 | Автор: admin

Автоматический дозатор


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


Немного про IT Академию Samsung


Перед тем, как рассказать про мою разработку, хочу поделиться впечатлениями от первых занятий в IT Академии Samsung по треку Интернет вещей, который я прошел в НГТУ в прошлом учебном году. Началось всё с прошивки контроллера STM32 RIOT OSИ всё это через Linux и командную строку. Честно скажу, что опыт незабываемый настолько, что я уже начал переживать, что в 2020 году люди все еще программируют в командной строке и после компиляции заливают образ вручную на контроллер. Но уже на следующем занятии нас познакомили с инструментами, которыми пользуются разработчики, а всё предыдущее было для демонстрации того, что происходит, когда мы нажимаем волшебную кнопку Build в среде разработки. Хочу также отметить, что за весь курс мы ни разу не программировали с помощью фреймворка Arduino, что, как по мне, является огромным плюсом, поскольку в реальных задачах и на производствах данный фреймворк (я надеюсь) не используется. Нас познакомили с Mbed, RTOS, а также ESP-IDF (которая, к слову, базируется на FreeRTOS). Мне нравилось, что каждый кейс начинался с объяснения, для чего будет использоваться данное устройство, и какие технологии уместно применять в нем.


По окончании обучения каждый студент представлял свой проект по Интернету вещей для получения сертификата IT Академии Samsung. Это мог быть простой светильник с функцией включения по Bluetooth, или что-то посложнее Мне хотелось сделать устройство, которое будет сложным с точки зрения программирования, при этом решать действительно важную проблему. Поэтому я остановился на умном дозаторе таблеток.


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


Про разработку


Как же я пришёл к тому устройству, что есть сейчас, получившему название AutoPill?


Шаг 1. Определение функционала и выбор микроконтроллера


Поскольку с идеей я разобрался, необходимо было переходить непосредственно к реализации. Я опросил знакомых, что им бы хотелось видеть в этом устройстве. Отсёк те идеи, которые посчитал не моим путём, и составил описание функционала будущего устройства получилось около 15 пунктов. А затем снова опросил тех же знакомых со словами выбери из данного списка самые важные, по твоему мнению, пункты. Это позволило уже на начальном этапе определить тот основной функционал, который нужен именно потребителю, а не тот, который проще всего реализовать или интересен мне.


Итак, что я хотел получить на выходе? Как мне казалось на тот момент, успеть это выполнить к сроку (конец учебного года) вполне реально.


  • Устройство должно быть таким, чтобы пользователь (пациент) не мог по ошибке открыть сектора с хранящимися препаратами. Сектора должны открываться по расписанию автоматически и блокироваться при открытии следующего отсека.
  • Устройство должно сигнализировать пользователю о необходимости принять новую порцию препаратов.
  • Отсеков должно хватать более чем на один день.
  • Конструкция устройства должна быть компактной (в качестве примера большинство приводили шкатулки или небольшую коробку).
  • Гибкая настройка расписания: возможность задать периодичность с шагом в 30 минут.
  • Возможность посмотреть, принял пользователь препараты или нет.

И необходимо проработать следующие особенности:


  • Как открывать/закрывать отсеки?
  • Как понять, когда пользователь принял препараты, чтобы отключить индикацию?
  • Как сообщать пользователю состояние?
  • Как настраивать устройство?

Начнём с самого очевидного: для настройки и передачи состояния таблетницы было предварительно решено использовать Bluetooth или Wi-Fi, поскольку у большинства людей в доме есть устройство, поддерживающее тот или иной протокол.


Чтобы понять всё остальное, необходимо было разработать конструкцию таблетницы. На этом этапе я также выбрал микроконтроллер ESP32, поскольку у него есть множество встроенных возможностей, которые позволят в дальнейшем значительно расширить платформу (например, ESP-NOW, ESP-Touch и ESP-Mesh), а бонусом была поддержка двух необходимых протоколов связи WiFi и Bluetooth.


Шаг 2. Конструкция устройства


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


Возможные типы дозаторов
  1. Набор контейнеров самый популярный тип, модификаций которых несколько десятков, вот один из них
    Набор контейнеров

    Aidapt Deluxe VM930AB
  2. Карманная таблетка этот тип я назвал так, потому что он округлой формы, с отсеками, расположенными по кругу. В центре есть место для таймера, который может сигнализировать о необходимости принятия лекарств
    Карманная "таблетка"

    Bradex недельная с таймером KZ 0439

Потом я попытался найти какой-нибудь готовый механизм, оказывается, на YouTube даже было 1-2 устройства, похожих на дозаторы, правда, их надёжность оставляла желать лучшего...


Какие дозаторы были найдены


Я принял решение разработать свой корпус устройства, не забывая и о функциональности, обозначенной в шаге 1.


Для того, чтобы разработать конструкцию, было бы неплохо выучить какой-нибудь САПР. К счастью, в лицее я научился работать в Компас-3D, что сильно упростило задачу. Вторая проблема изучить, из каких материалов можно сделать из 3D модели настоящий прототип. Мой выбор пал на 3D-принтеры, поскольку это, по моему мнению, самая простая возможность создать прототип и напечатать деталь практически любой сложности.


Итак, представляю самую первую версию сборки из, на тот момент, трёх деталей


Инженерам не открывать!

1я версия устройства


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


  1. Не поленитесь посмотреть размеры столов самых популярных принтеров, чтобы у вас был широкий выбор, где заказать печать или попросить по дружбе
  2. При проектировании, если вы раньше ни разу не видели принтеры вживую (как я, например), посмотрите, как эта технология реализована, и какие детали ей сложнее всего печатать, постарайтесь оптимизировать модель под более простую печать для уменьшения времени печати и количества брака. Наглядный пример, как делать не надо, можете посмотреть на первую версию крышки устройства. У неё очень пологий угол наклона, что делает печать без поддержек невозможной, и даже с поддержками шанс брака очень велик, так как пластик при такой толщине может просто не сцепиться.
  3. Не печатайте на плохо откалиброванных принтерах или принтерах с низкой точностью печати, особенно это касается конструктивно важных деталей (шестерни). Тоже немного негативного опыта я получил при печати основы на дешёвом принтере: вышло нарушение соосности деталей, что создало множество проблем, начиная с неравномерного трения при разных положениях отсеков, и заканчивая длительной подгонкой деталей.

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


Сборка последней версии


На данной иллюстративной сборке не видно таких элементов, как:


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

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


Шаг 3. Электроника


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


  1. Микроконтроллер. В моём случае я взял ESP32 Dev Kit с уже распаянным на плате понижающим регулятором напряжения, а также отладчиком.
    ESP32 Dev Kit
    ESP32 Dev Kit
  2. DC мотор мотор коллекторного типа, наверное, один из самых популярных, используется в радиоигрушках.
    DC двигатель
    DC двигатель
    Рабочее напряжение: 3 Вольт ~ 8 Вольт
    Ток потребления при напряжении 3,6В: 240 мА
    Тип двигателя: коллекторный
    Вес: 26 гр
  3. Щелевой датчик датчик, необходимый для отслеживания количество оборотов редуктора. В устройстве стоит датчик с уже распаянным компаратором LM393 (на изображении приведён датчик непосредственно с платой развязки).
    Щелевой датчик ITR9608
    Щелевой датчик
    Рабочее напряжение: 3.3 Вольт ~5.0 Вольт
    Ток потребления энкодера: 1.4 мА
    Ширина паза в щелевом датчике: 5 мм
    Вес: 8 гр
    Рабочая температура: от 0 до +70
  4. Датчик наклона датчик необходим, чтобы определять, взял ли пациент лекарство из устройства. Поскольку отсеки глубокие и достать пальцем сложно, предполагается что пользователь будет вынимать необходимые препараты, наклоняя таблетницу.
    Датчик наклона SW-200D
    Датчик наклона SW-200D
    Рабочее напряжение: до 12 В
    Потребляемый ток: до 20 мА
    Время отклика: 2 мс
    Время жизни: 100000 циклов
    Размер: 12 x 3,6 мм
    Вес: менее 1 гр
    Рабочая температура: от -40 до +80

Помимо датчиков, также использовался MOSFET-транзистор, который служил ключом для запуска и остановки мотора. Собственно, это была вся электроника.


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


Шаг 4. ПО


Хочется отметить, что, конечно, к шагам 2-4 после первой итерации я возвращался не раз, т.к. шла и доработка конструкции, и создание ПО. И хочется уточнить, что шаги ни в коем случае не выполнялись одновременно, а именно доводились до логического завершения, потому что ПО сильно зависело от текущей конструкции.


Самый первый вопрос разработчика ПО для IoT будет следующим (по крайней мере для меня): существует ли IDE для разработки устройств IoT? Почти для каждого микроконтроллера существует своя IDE, но лично я пользовался универсальной средой PlatofrmIO. В течение всего цикла разработки я ни разу не пожалел об этом решении.


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


Язык, на котором написан код проекта: C. Честно сказать, после нескольких лет написания кода на языках Java, Kotlin и иногда C#, я, хоть и был морально готов к этому испытанию, но не ожидал, что встречу столько неудобств. Но в итоге это оказался очень классный опыт.


Прежде чем приступить к разработке ПО, я изучил на просторах GitHub, как вообще пишут программы под ESP-IDF, и, к моему большому удивлению, результатов (если не считать библиотеки с примерами) оказалось крайне мало. Ладно, подумал я, и решил разработать свою архитектуру для ПО.


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


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


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


  1. Работа с периферией. Самый очевидный модуль, причём я принял решение разработать отдельные модули для отображения и для входных данных. Как впоследствии оказалось, достаточно было сделать только тот, что для входа.
  2. Подключение устройства к Wi-Fi. Я решил именно подключаться к Wi-Fi и разворачивать свой мини-сервер, поскольку станций Интернета вещей не было ни у кого из опрошенных, а Wi-Fi есть дома всегда. Подключение производилось через WPS, с возможностью изменения в настройках.
  3. Создание HTTP-сервера на устройстве. Очевидно, что для такого сегмента использование протокола HTTP неудачное решение, но на данный момент я его не заменил, поскольку мне важна возможность использования устройства в изолированной сети, что не даёт возможности автоматически продлевать сертификат, а с самоподписанными сертификатами на сервер пропускает разве что Internet Explorer, и то с предупреждениями о том, что это всё мошенничество.
  4. Реализация модуля безопасной авторизации. В данном случае мы говорим о Digest-аутентификации. Данная аутентификация позволяет в пределах локальной сети сделать устройство максимально устойчивым к взлому.
  5. Модуль планировщика. Наверное, самый важный модуль, который должен поворачивать сектор точно при наступлении необходимого времени. При этом, данный модуль должен также поддерживать синхронизацию времени (т.е. перераспределение задач и автоматическое устранение ошибок)

Это те модули, которые были первостепенны, и без которых устройство просто не могло существовать.


Но, приступая к реализации самого, казалось бы, банального, первого модуля для работы с периферией, я столкнулся с объемной и непонятной документацией. Я думаю, это один из основных факторов, почему каких-либо готовых проектов на ESP-IDF мало. К счастью, у разработчиков есть GitHub, который, благодаря примерам, сильно упрощает понимание. Единственное, не забудьте выбрать нужную ветку с вашей версией ESP-IDF! Пожалуй, это единственная проблема данного фреймворка. А в остальном он очень неплох. Внутри него есть практически всё, что раньше вы добавляли с помощью библиотек: WiFi, WPS, HTTP-сервер, NTP, различные функции хэширования и многое другое.


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


Варианты использования устройства


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


Веб-консоль настройки

Веб-консоль


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


Что получилось?


Сам код устройства находится в открытом доступе, и вы можете найти его здесь.


Давайте подытожим.


Для кого разработан AutoPill? Целевая аудитория люди с деменцией и плохой памятью, которые принимают медицинские препараты на постоянной основе. Стоит учитывать, что данное устройство не способно полностью заменить близкого человека или медицинского работника, который выдаёт медицинские препараты, но способно значительно упростить процесс выдачи и контроля принятия лекарств пациентом. Необходимо лишь раз в неделю или реже раскладывать препараты по секторам, а далее удалённо отслеживать принятие препаратов.


Как подключить AutoPill? При первом запуске устройства или смены точки доступа это можно сделать с помощью WPS или протокола ESP-Touch (через приложение на смартфоне).


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


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


Видео о проекте:



Что дальше?


Я не ожидал, что устройство окажется таким востребованным. Но буквально каждый второй, которому я рассказывал о своей разработке, спрашивал о том, когда и где можно будет купить AutoPill. Я получил множество советов по возможной дальнейшей доработке устройства.


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


Владимир Шперлинг

Владимир Шперлинг
vladimir-shperling@yandex.ru
Kotlin, Java, C#-разработчик
Победитель финала конкурса проектов IT Школы Samsung, 2016
Победитель конкурса Школа VR 360, 2018
Победитель конкурса IT Академии в треке Интернет вещей, 2020

Подробнее..

Открытый курс молодого бойца по Интернету вещей

31.05.2021 12:16:05 | Автор: admin

Всем привет!

Некоторое время назад мы с партнерами IT Академии Samsung запустили открытый онлайн-лекторий Samsung Innovation Campus по Интернету вещей. В видеолекциях для студентов и новичков мы решили дать правильное, с нашей точки зрения, представление об этой сфере. И это не про обывательское представление о том, что Интернет вещей - это умные чайники и говорящие холодильники и не про пафос цифровизации и мировых перспектив Индустрии 4.0 (тут без нас много сказано). Это про то, что Интернет вещей - это серьезная промышленная область с по-настоящему сложными, масштабными задачами.

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

Интернет вещей в России - область молодая, и университеты еще не успели создать учебный материал для нее. Чтобы работать в IoT, требуются знания нескольких инженерных дисциплин. Но спустя несколько лет эксплуатации IoT-систем, на растущем рынке появилось понимание, почему важно учить кадры, и как усилия архитектора экономят огромные деньги на масштабах даже в сотни устройств.

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

Нам более близка позиция организаторов конференции InoThings++, которая проходила в течение двух лет в 2018-2019 годах (записи выступлений спикеров здесь в свободном доступе на YouTube): каждый доклад раскрывал бизнес-, либо технологическую сторону Интернета вещей в России, а иногда и то, и другое вместе. Спикеры тщательно отбирались и были с конкретным опытом: сами участвовали в разработке и внедрении решений. Однако эти материалы сложны для новичков. Они рассчитаны на подготовленную аудиторию, которая не просто владеет терминологией, но и имеет представление о затрагиваемых технологиях. А есть ли что-то более простого уровня?

Samsung с 2017 года реализует образовательный проект IT Академия, в котором есть трек по Интернету вещей. Это годовой практико-ориентированный курс для студентов вузов-партнеров проекта, который состоит в основном из учебных кейсов и лабораторных работ. На данный момент среди партнеров - 22 вуза по всей России. Однако нам то и дело задают вопрос: как принять участие в проекте, если я - не студент вуза-партнера?

Концепция лектория

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

1. По компонентам системы,

2. По навыкам: железо, софт, обработка данных,

3. По проектной работе и сферам, которые must-have, но они надпроектные (например, безопасность, дизайн, стандартизация).

Основной труд по разработке программы лектория взяла на себя Ксения Сизова - менеджер проектов компании RedBees. Именно практический опыт Ксении был для нас очень важен, она прекрасно знакома с этим бизнесом и его спецификой в России. Кроме того, у нее есть и методический опыт: уже второй год она курирует обучающую программу IoT AM - проект для студентов вузов Санкт-Петербурга, нацеленный на подготовку стартапов и бизнес-ориентированных команд.

Мы решили охватить примерно такой круг тем в следующем порядке:

  1. Общий обзор систем IoT

  2. Оконечные устройства

  3. Транспортные сети

  4. Программная часть

  5. Облачные технологии

  6. Жизненный цикл проекта

  7. Безопасность

  8. Дизайн и UX

  9. Data Science

  10. Стандартизация

Несложно заметить, что в целом этот список тем повторяет типичное устройство IoT-системы и общий круг вопросов, о которых так или иначе необходимо думать при ее создании.

Далее мы расскажем о реализации этого плана, и что удалось сделать в рамках лектория на настоящий момент.

Курс лекций

Все лекции доступны для просмотра в плейлисте Samsung Innovation Campus IoT Lectorium.

Лекция 1. Архитектура и типология систем IoT. Антон Куропятник (Woodenshark), Ксения Сизова (Red Bees)

Первую лекцию учебного курса вели Антон Куропятник, старший продукт-менеджер в компании Woodenshark (IoT R&D), и Ксения Сизова, руководитель проектов в компании Red Bees (IoT R&D).

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

Лекция 2. Как выбрать технологию IoT, чтобы выжать максимум от достоинств и не страдать от минусов. Антон Куропятник (Woodenshark), Ксения Сизова (Red Bees), Юрий Сизов (RedBees)

Во второй лекции к Антону и Ксении присоединился Юрий Сизов, генеральный директор компании Red Bees.

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

Лекция 3. Инфраструктура транспортных сетей. Роман Андреев (СПбГУТ).

Изучив первые два уровня IoT-системы, мы стали двигаться дальше, и одно занятие прицельно уделили телекоммуникациям. На этой лекции у нас был специальный гость: Роман Андреев, начальник Научно-образовательного центра Беспроводные инфотелекоммуникационные сети СПБГуТ им. проф. М.А. Бонч-Бруевича - одного из немногих отраслевых телеком-вузов в стране.

В ходе лекции были рассмотрены топологии 2G/3G/4G-сетей, основные производители оборудования и функциональные блоки сети, прохождение аутентификации и вызовов в сетях связи, ядро сети и радиочасть с учетом распределения частотных ресурсов. Если вы всегда мечтали узнать, как устроена антенна изнутри, то эта лекция для вас.

Лекция 4. Программная часть IoT: о чем нужно знать помимо железа. Дмитрий Чудинов (Red Bees)

Здесь мы провели эксперимент и устроили боевое крещение для студента. А почему бы и нет? Глядишь, других этот пример вдохновит. Свой дебют в нашем лектории совершил Дмитрий Чудинов, студент 4 курса, инженер-стажер в компании Red Bees (IoT R&D), выпускник платформы IoT AM. Дмитрий продемонстрировал широкое знание существующих платформ Интернета вещей и наличие опыта работы с ними.

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

Лекция 5. Облачные технологии в решениях IoT. Кирилл Святов (УлГТУ)

Развивая тему облачных технологий, в лектории выступил Кирилл Святов, декан Факультета информационных систем и технологий УлГТУ (Ульяновск) - нашего вуза-партнера. На своей лекции Кирилл Валерьевич рассмотрел типовые архитектуры программных решений по работе с данными в IoT, технологии граничных и облачных вычислений на примере IBM Cloud. Вторая часть занятия представляла собой практикум: был реализован вариант построения службы по сбору, анализу и визуализации данных, получаемых от устройств интернета вещей с использованием code-less подхода на основе Node-RED в облачной среде IBM Cloud.

Очень полезное и очень насыщенное занятие с примером устройства - посудомоечной машины, отправляющей данные. Было объяснено многое - основы работы с IBM Cloud на примере сэмпла IBM Quickstart, продемонстрирована NoSQL база данных Cloudant с кратким комментарием о том, а в чем вообще суть этого подхода и в чем отличие от стандартных реляционных БД применительно к задачам IoT, и наконец, показан доступ к системе машинного обучения IBM Watson и работа в Jupyter Notebook. То есть проложен мостик и к другим направлениям Computer Science - у нас в IT Академии Samsung как раз есть учебный трек по AI.

Бонус: лекции о предметных областях

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

"Интеллектуальные транспортные системы Умного города", Игорь Ежков (Softline)

С концепцией Умного города нас знакомил Игорь Ежков - руководитель направления Интеллектуальных транспортных систем компании Softline. Мы давно знакомы с Игорем Геннадьевичем, однажды вместе проводили с ним хакатон по NB-IoT на радиофаке УрФУ.

Что такое Умный город? Это умные перекрестки, светофоры, видеокамеры наблюдения, но и нечто большее: технологичный подход к урбанистике, который просто невозможно реализовать как набор разрозненных сервисов. Всё это дает эффект только в комплексе, когда данные собираются и визуализируются на единой платформе. Основной тезис, высказанный спикером, как раз в том и состоял - не нужно изобретать велосипед, изучайте зарубежный опыт в этой области, смотрите, какие готовые платформы есть.

Бонус: лекции-практикумы о технологиях

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

"Взаимодействие устройств по Bluetooth Low Energy", Олег Пехов (ТУСУР)

В Томском государственном университете систем управления и радиоэлектроники (ТУСУР) наша программа реализуется на факультете безопасности. Поэтому и неудивительно, что на лекции про BLE в рамках практикума был рассмотрен сниффер пакетов. Помимо этого, в лекции были рассмотрены принципы и особенности технологии Bluetooth Low Energy, ее отличие от классического Bluetooth, разновидности устройств и способы их подключения. Лекцию вел Олег Пехов, старший преподаватель кафедры комплексной информационной безопасности электронно-вычислительных систем.

"Платформа SmartThings для Умного дома", Татьяна Волкова (Исследовательский центр Samsung)

Автор этого текста тоже приняла участие в лектории. Я решила показать в стриме, как интегрировать ваше собственное устройство в платформу умного дома Samsung SmartThings. Устройство очень простое - умный светильник на базе ESP8266, подключаемый к платформе по WiFi. Звучит несложно, но занимает вся эта работа около 40 минут - нужно зарегистрировать ваше устройство внутри платформы, скомпилировать и загрузить прошивку, настроить схему авторизации устройства, сделать обмен ключами. Тут получился целый триллер. Не всё сработало с первого раза, но всё-таки заработало.

Дальнейшие планы

На данный момент наш лекторий находится примерно посередине. Какие лекции еще мы запланировали:

  1. Экономика IoT-системы по состоянию на 2021

  2. Жизненный цикл IoT-проекта

  3. Кибербезопасность в IoT: примеры эксплоитов

  4. Как известно, в аббревиатуре IoT буква S обозначает безопасность

  5. Дизайн и UX в IoT-решениях

  6. Краш-тест вашего IoT-проекта: оцениваем идею на жизнеспособность

  7. Есть ли жизнь после релиза? Обслуживание IoT-системы

  8. Data Science в IoT

  9. Сертификация в IoT: стандарты, регуляторика и прочее

Вести их будут разные спикеры, в том числе, не побоимся этого слова, один монстр современного IoT-образования, но не будем пока раскрывать интригу: по завершении лектория, напишем еще один пост-апдейт.

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

Смотрите лекции в рамках стримов на YouTube-канале IT Академии Samsung и смотрите архив в плейлисте Samsung Innovation Campus IoT Lectorium. Задавайте вопросы нашим лекторам, пишите свои комментарии. А может быть, вы сами хотели бы выступить с лекцией по своей теме, которая пока не озвучена - мы готовы предоставить вам слово!

Татьяна Волкова, куратор трека по Интернету вещей социально-образовательной программы для вузов IT Академия Samsung

Подробнее..

Помощь многим Android-приложение для людей с особыми потребностями

26.02.2021 20:18:58 | Автор: admin

Приветствую всех! Я Беглецов Глеб, учусь в 11 классе, летом прошлого года закончил программу IT Школа Samsung в г. Санкт-Петербург на площадке ФМЛ 239 под руководством Левина Михаила Константиновича. В качестве выпускной работы я разработал приложение, которое назвал Parus. Это мой первый большой проект под Android, и он мне принес ГРАН-ПРИ финала Всероссийского конкурса IT Школы Samsung (ролик). Хочу поделиться историей создания этого проекта.

Идея

Я иногда слышал среди своих одногруппников в IT Школе Samsung подобную фразу: Я не знаю, какое приложение мне написать. У меня не было сомнений. Моё приложение должно помочь людям с особыми потребностями полноценно общаться с миром, потому что данная проблема актуальна и в нашей стране, и в мире. И меня она лично касается. Есть много отдельных приложений: для синтеза речи, для искусственного зрения, для напоминаний и т.д. Мне хотелось объединить всё необходимое в одном приложении.

Начало

Учиться в IT Школе Samsung я начал в сентябре, а в начале ноября уже знал, какой проект буду разрабатывать. Но это же классика, откладывать всё на последний момент! В итоге апрель и май выдались очень напряженными. В тоже время это было очень увлекательное время. Я просыпался, кодил с перерывами на еду, ложился спать, просыпался и снова кодил, если не учился в школе. Вот такой был распорядок дня в течение двух завершающих месяцев обучения. Узнавал каждый день что-то новое. Несколько раз было такое: понимал, что написанное не годится и переписывал половину уже сделанной работы. Тогда, как понимаете, было не очень весело.

К началу апреля я освоил основы Java и Android. А за следующие два месяца добавил синтез речи, распознавание речи, компьютерное зрение, отслеживание пульса, создание ежедневных напоминаний (не todo list), связь аккаунтов человека с особыми потребностями и его помощником, чат и передачу данных между ними. Дальше подробнее про каждую функцию.

Говорить. Синтез речи

Данная функция помогает общаться людям с нарушением речи . Сам синтез речи самая лёгкая задача из всех. Подключил TextToSpeech и готово. Но такой функционал не слишком удобен для пользователя, поэтому я решил сделать систему частых фраз и тематические коллекции. Вот с этим уже начались первые проблемы.

Создавая систему коллекций и частых фраз, я не знал о существовании Snapshotов (обновление данных в реальном времени), поэтому обновление данных у меня было реализовано, как я позже понял, через очень шаткие костыли. Я читал данные из БД каждый раз, когда там, гипотетически, могли измениться какие-либо поля. И такая система была реализована ВЕЗДЕ. Вот это и был один из тех моментов, когда, узнав про что-то новое и полезное, обрадовался, а затем взялся за переписывание всего кода.

Смотреть

Компьютерное зрение должно помогать людям со слабым зрением распознавать текст или объект на фото. Но не всё так идеально, как хотелось бы. Firebase Ml Vision удобен и практичен, но бесплатная версия не распознает русский язык, а результаты распознавания объекта иногда выглядят по меньшей мере странно.

Вообще, при реализации многих задач мне очень помог Firebase, отличный инструмент. Для компьютерного зрения я поначалу попробовал использовать Tesseract, потому что была возможность подключить к нему файл с русским алфавитом для распознавания кириллицы. Оказалось зря. Потратив только на его установку в проект около недели, текст с русскими буквами так и не распознавался. Поэтому я стал искать другие варианты. И тут меня спас Firebase Ml Kit, который я настроил в 5 раз быстрей! Firebase даёт очень много плюшек, и без него я вряд ли бы всё сделал. По неопытности, конечно, не сразу все получалось, но я разобрался. Для текущей задачи пока я использую API от Firebase. Может, в будущем найду что-то более подходящее.

Слушать

Просто распознавание речи с помощью SpeechRecognizer API от Google и вывод результата на экран.

Пульс. Google Fit vs Samsung Health SDK

Отслеживание пульса полезная функция для людей с сердечными заболеваниями. С помощью неё пользователь может следить за своим сердцебиением. При обработке данных, если пульс вне нормального интервала (55 < x < 90), то на устройство приходит уведомление об этом.

Но над этой задачей тоже пришлось попыхтеть. Сначала разобрался, как читать данные из Google Fit. Потом прочитал про Samsung Health SDK и решил перейти на него. У S Health SDK есть очень удобное дополнение Data Viewer. С его помощью можно записывать данные в S Health без каких-либо трекеров. Это очень помогает при тестировании приложения, в этом SDK от Samsung выигрывает у GoogleFit. Также не надо делать привязку к аккаунту и подключать QAuth от Google, тоже плюс.

Но если Google Fit может встроить в свой проект любой желающий, то для использования Samsung Health необходимо, чтобы приложение получило статус партнёрского. Без такого статуса приложение будет полноценно работать только в режиме разработчика. К сожалению, на данный момент приостановлен приём заявок на статус партнёрского приложения в связи с обновлением партнёрской программы. Поэтому я был вынужден вернуться обратно к GoogleFit.

Напоминания

Я знаю, что существует множество приложений по типу todo list, но, как говорится, это другое Во-первых, пользователь может установить несколько часов (12:50, 13:10 и 18:30, например) на одну задачу. Во-вторых, есть возможность установить напоминанию интервал времени и повторение: с 12:00 до 20:00 каждый час, например. Напоминания каждый день перезагружаются и начинают всё по новой, как обычный будильник. Это может быть полезно людям, которым надо каждый день сделать что-то важное. Например, люди с диабетом могут установить время для инсулиновых уколов.

Безусловно, что человек может установить множество будильников, которые будут выполнять ту же задачу. Моя программа просто упрощает это. Для напоминаний с 9:00 до 21:00 с регулярностью в полчаса, необходимо установить либо 24 обычных будильника, либо 1 напоминание с интервалом в Parus. Думаю, что второй вариант легче.

Напоминания не сильно тратят заряд батареи, потому что они реализованы за счёт WorkManagerов. Я долго думал между Alarm и WorkManager, потому что первое слишком сильно нагружает телефон и батарею (+на некоторых телефонах ограничен), а второе имеет один весомый минус из-за сверхоптимизации напоминание может не отобразиться, если телефон долго находился в режиме сна. Я около 100 раз протестил данный случай, и 3-5 раз напоминание не срабатывало до выхода из режима сна. На сайте Android developers читал, что Google работает над этим, так что буду надеяться, что скоро это исправят.

Связь с помощником

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

  • Передача данных
    Помощнику будет спокойнее, если он будет иметь информацию о пульсе своего подопечного и его местоположении. Кроме того, помощник может редактировать в приложении напоминания человека с ограниченными возможностями здоровья. А еще всегда можно посмотреть, когда связанный пользователь заходил в последний раз в Parus.

  • Кнопка вызова
    При связывании аккаунтов, у человека с особыми потребностями появляется быстрая кнопка Позвать помощника. При нажатии на неё на устройство помощнику отправляется уведомление.

  • Чат
    Иногда случается так, что твой помощник это не родной и не близкий человек, а волонтёр или социальный работник. Чтобы не общаться с ним в различных мессенджерах, можно общаться с ним отдельно в чате Parusa.

Samsung Android Bootcamp. Заключение

Выше я описал основные возможности своего приложения на момент участия в конкурсе выпускных проектов IT Школы Samsung. Я совсем не упоминал архитектуру приложения или паттерны, которые я использовал. Знаете почему? Потому что этого не было на момент финала конкурса. Проект состоял из классов, разложенных по пакетам. И всё. Я подозревал, что это ужасно, но не знал, как исправить. И тут нам сказали, что сразу после конкурса пройдет летний Android Bootcamp для выпускников IT Школы Samsung. Я решил, что мне явно туда.

За две недели интенсива я узнал безумно много полезных вещей. Например, зацепился за MVVM + Data Binding + Material Design. Стало понятно, что Parus выпускать в таком виде нельзя. Предстоящая работа: сначала архитектура, потом дизайн, после чего можно и в Google Play. В августе уже не было такого запала, как в конце весны, к середине сентября я почти переделал всё под MVVM архитектуру и все

С октября по январь я ни разу не открыл Android Studio. Мне совсем не хотелось программировать и вообще как-либо доделывать свой проект. Одним словом, пропал весь энтузиазм. Я начал думать, что на самом деле проект ни о чём, что я не способен сделать достойное приложение. Не знаю из-за чего, наверное я устал и понял, что доводить проект до идеального состояния можно бесконечно.

Прошел Новый год. Parusa так и нет в Google Play. Я открыл Android Studio и вдруг почувствовал, что есть силы завершить проект. Я дал себе обещание, что в феврале Parus появится в Play Market. За две недели доделал всё, что планировал, и 4 февраля загрузил проект в Google Play.

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

Спасибо, что прочитали статью до конца.

Пока!

Глеб Беглецов

Ученик 11 класса, школа Озерки

г. Санкт-Петербург

Подробнее..

Исследователями Samsung открыт новый материал для производства полупроводников

18.08.2020 18:15:11 | Автор: admin
Ученые из Высшего технологического института Samsung (Samsung Advanced Institute of Technology, SAIT) в сотрудничестве с Национальным институтом науки и технологии Ульсана (UNIST) и Кембриджским университетом рассказали об открытии нового материала под названием аморфный нитрид бора (a-BN). Исследование, опубликованное в авторитетном научном журнале Nature, способно ускорить появление полупроводников следующего поколения.

Внутри кратко о сути открытия с комментариями от руководителя SAIT Россия, к.ф-м.н Станислава Полонского.


2D материалы ключ к преодолению проблем масштабируемости


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

Чтобы улучшить совместимость графена с полупроводниковыми процессами на основе кремния, выращивание пленок графена на полупроводниковых подложках должно осуществляться при температуре ниже 400 C, рассказал Хён Чжин Шин, руководитель проекта по разработке графена и главный исследователь SAIT. Мы также постоянно работаем над расширением сферы применения графена, не ограничиваясь полупроводниками.

Трансформированный 2D материал аморфный нитрид бора


Недавно открытый материал под названием аморфный нитрид бора (a-BN) состоит из атомов бора и азота с аморфной структурой молекулы. Несмотря на то, что аморфный нитрид бора получают из белого графена, который включает атомы бора и азота, расположенные в гексагональной структуре, благодаря своей молекулярной структуре новый материал обладает уникальными отличиями от белого графена.

Аморфный нитрид бора имеет лучшую в своем классе сверхнизкую диэлектрическую проницаемость 1,78 с сильными электрическими и механическими свойствами и может использоваться в качестве межсоединительного изоляционного материала для сокращения электрических помех. Также было продемонстрировано, что материал в чешуйчатой форме можно выращивать при низкой температуре, всего 400C. В связи с этим ожидается, что аморфный нитрид бора будет широко применяться в полупроводниках, таких как решения DRAM и NAND, и, особенно, в памяти следующего поколения для крупномасштабных серверов.

Станислав Полонский, начальник управления перспективных исследований и разработок Исследовательского центра Samsung:

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

Кратко о достижениях SAIT последних лет:
2012: графеновый барристор, триодное устройство с барьером Шоттки, управляемым затвором (SAIT, опубликовано в Science)
2014: чешуйчатый рост пластины монокристаллического монослоя графена на многоразовом водородно-терминированном германии (SAIT и Университет Сонгюнгван, опубликовано в Science)
2017: Реализация непрерывного монослоя углерода Захариасен (SAIT и Университет Сонгюнгван, опубликовано в журнале Science Advances)
2020: сверхнизкая диэлектрическая проницаемость аморфного нитрида бора (SAIT, UNIST и Кембриджский университет, опубликовано в журнале Nature)


Источник новости.
Подробнее..

Как я преподавал курс AIMLDL от Samsung

09.12.2020 20:22:50 | Автор: admin
Всем привет. Расскажу вам про свой взгляд на ИИ, так сказать, изнутри процесса. В смысле образовательного и научного процесса.

Так сложилось что в 1998 я поступил аспирантуру в РГАСХМ и темой своей научной работы выбрал AI/ML. Это были суровые времена очередного ледникового периода нейронных сетей. Как раз в это время Ян Лекун опубликовал свою знаменитую работу Gradient-Based Learning Applied to Document Recognition о принципах организации сверточных сетей, которая, на мой взгляд, как раз и была началом новой оттепели. Забавно, что тогда я работал над некоторыми похожими элементами, верно ведь говорят, что идея, когда приходит её время, носится в воздухе. Однако не всем дано ее воплотить в жизнь. Свою работу я, к сожалению, так и не довел до защиты, но всегда хотел когда-нибудь закончить ее.


Источник: Hitecher

И вот по прошествии 20 лет, когда я стал работать преподавателем в Южном Федеральном Университете и одновременно преподавать в программе дополнительного образования IT Школа Samsung, мне представился второй шанс. Компания Samsung предложила ЮФУ первому запустить учебный трек IT Академии Samsung по искусственному интеллекту для бакалавров и магистров. У меня были некоторые опасения в том, что удастся реализовать всю учебную программу в полном объеме, но я с энтузиазмом откликнулся на предложение читать курс. Я понял, что круг замкнулся, и мне представился таки второй шанс сделать то, что когда-то не удалось. Здесь нужно отметить, что курс Samsung AI/ML это один из лучших на сегодня открытых русскоязычных курсов, доступных бесплатно на платформе Stepik (https://stepik.org/org/srr). Однако в случае ВУЗовской программы, помимо теоретико/практического курса, добавлялась проектная часть. То есть годовая учебная программа IT Академии Samsung считалась освоенной в случае изучения двух модулей Нейронные сети и компьютерное зрение, Нейронные сети и обработка текста с получением соответствующих сертификатов Stepik, а также выполнения индивидуального проекта. Обучение по курсу завершалось защитой проектов студентов, на которую приглашались эксперты, в т.ч. сотрудники московского Центра искусственного интеллекта Samsung.

И вот с сентября 2019 мы стартовали курс в Институте высоких технологий и пьезотехники ЮФУ. Безусловно, довольно большое количество студентов пришло на хайпе и впоследствии был серьезный отсев. Программа была не то чтобы очень сложная, но объемная требовались знания:

  • линейной алгебры,
  • теории вероятности,
  • дифференциального исчисления,
  • языка программирования Python.

Конечно, все требуемые знания и умения не выходят за рамки учебной программы бакалавриата 3-го курса ВУЗа. Приведу пару примеров, из тех что посложнее:

  • Найдите производную функции активации гиперболического тангенса и выразите результат через $th(x)$.
  • Найдите производную функции активации сигмоиды и выразите результат через сигмоиду $(x)$.
  • В графе вычислений приведенном на рис. 1 представлена сложная функция $y$ с параметрами $b1,b2,c1,c2$. Для удобства добавлены промежуточные результаты операций как $z_1z_9$. Необходимо определить, чему будет равна производная $y$ по параметру $b1$




Честно говоря, кое-что, особенно из современных алгоритмов работы с нейронными сетями, я спешно изучал вместе со студентами. Изначально предполагалось, что студенты будут сами изучать видео-лекции онлайн курса Samsung на Stepik, а в аудитории мы будем делать только практикумы. Однако, я принял решение также читать и теорию. Это решение обусловлено тем, что с преподавателем можно разобрать непонятную тему, обсудить возникшие идеи и т.д. Практические же задачи студенты получали в виде домашних заданий. Подход оказался правильным на занятиях получалась живая атмосфера, я видел, что студенты в целом достаточно успешно осваивают материал.

Через месяц мы плавно перешли от модели нейрона к первым простым полносвязным архитектурам, от простой регрессии к многоклассовой классификации, от простого вычисления градиента к алгоритмам оптимизации градиентного спуска SGD, ADAM и т.д. Завершали первую половину курса сверточные сети и современные архитектуры глубоких сетей. Финальным заданием первого модуля по Computer Vision было участие в соревновании на Kaggle "Dirty vs Cleaned" с преодолением порога точности в 80%.

Еще один, на мой взгляд, важный фактор: мы не были замкнуты внутри вуза. Организаторы трека проводили для нас вебинары и мастер-классы с приглашенными экспертами из лабораторий Samsung. Такие мероприятия повышали мотивацию студентов, да и мою, честно говоря :). Например, было интересное профориентационное мероприятие онлайн-мост между аудиториями ЮФУ, МГУ и Samsung, на котором сотрудники московского Центра ИИ Samsung рассказали о современных направлениях развития AI/ML и ответили на вопросы студентов.

Вторая часть курса, посвященная обработке текста, начиналась с общей теории лингвистического анализа. Далее студентам были представлены векторная и TF-IDF модели текста, а потом и дистрибутивная семантика и word2vec. По результатам было проведено несколько интересных практикумов: генерация ембедингов word2wec, генерация имен и лозунгов. Дальше мы перешли к теории и практике по использованию сверточных и рекуррентных сетей для анализа текста.

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

  1. Мониторинг физической активности человека Благодарный Александр, Крикунов Станислав.
  2. Разработка алгоритмов идентификации усталости человека Соленова Антонина.
  3. Распознавание маски на лице Будаева Екатерина.
  4. Распознавание эмоций по фотографии лица Пандов Вячеслав.
  5. Определение эмоций по речи Тихонов Алексей.
  6. Косметологический консультант Жмайлова Наталья.
  7. Цена слова Ринкон Диас Хаиро Алонсо, Моралес Кастро Хайме Игнасио.



Все проекты прошли защиту, но степень сложности и проработанности была разной, что, вполне справедливо, нашло отражение в оценках за проекты. По результатам защиты четыре проекта были отобраны на ежегодный конкурс IT Академии Samsung. И с гордостью могу сказать, что жюри присудили двум нашим проектам высшие места. Ниже я приведу краткое описание этих проектов, основанное на материалах, предоставленных моими студентами Благодарным Александром, Крикуновым Станиславом и Пандовым Вячеславом, за что им большое спасибо. Считаю, что продемонстрированные ими решения вполне могут быть оценены как серьезная исследовательская работа.

I место в номинации Искусственный интеллект конкурса IT Академии Samsung.
Мониторинг физической активности человека, Благодарный Александр, Крикунов Станислав


Проект состоял в том, чтобы создать мобильное приложение, определяющее и количественно подсчитывающее физическую активность на тренировках при помощи сенсоров мобильного телефона. Сейчас существует множество мобильных приложений, которые могут распознавать физическую активность человека: Google Fit, Nike Training Club, MapMyFitness и другие. Однако, эти приложения не могут распознавать отдельные виды физических упражнений и подсчитывать количество повторений.
Один из авторов проекта Благодарный Александр, мой выпускник по программе IT Школа Samsung 2015 года, и я не без гордости, радовался, что полученные еще в школе знания по мобильной разработке были применены в таком ключе.


Как распознаётся физическая активность? Начнем с того, как определяются временные границы упражнений. Для детектирования начала и конца упражнений студентами было решено использовать модуль ускорения, вычисляемый как корень из суммы квадратов ускорений по осям. Выбирался некоторый порог, с которым сравнивалось текущее значение ускорения. Если произошло превышение порога (производная ускорения положительная), то считаем, что упражнение началось. Если текущее ускорение стало ниже порога (производная ускорения отрицательная), то считаем, что упражнение закончилось. К сожалению, такой подход не позволяет производить обработку в реальном времени. Возможное улучшение применение скользящего окна на данные с вычислением результата на каждом шаге сдвига.

Датасет был собран авторами самостоятельно. При выполнении 7 различных упражнений использовались 3 вида смартфонов (Android версии 4.4 ,9.0, 10.0). Смартфон закреплялся на руке с помощью специального кармана. Суммарно тремя добровольцами было выполнено 1800 повторений. При выполнении могли возникать ошибки в технике по каким-либо причинам, поэтому была проведена процедура очистки выборки. Для этого были построены распределения взаимных корреляций для всех видов упражнений. Затем для каждого упражнения был выбран порог корреляции, ниже которого упражнение считается негодным и исключается из выборки.

Одно и то же упражнение, в зависимости от повторения, имеет различное время выполнения. Для борьбы с этим было решено интерполировать данные фиксированным числом отсчетов вне зависимости от того, сколько поступило с датчиков. Поступило 50 удваиваем частоту дискретизации, вычисляя промежуточные позиции как среднее арифметическое соседних. Поступило 200 выбрасываем каждый 2 отсчет. При этом число отсчётов будет постоянным. Аналогично при любых отношениях входного числа отсчётов к желаемому выходному числу.

Для нейросети было решено применять данные в частотной области. Поскольку масса тела человека достаточно велика, можно ожидать, что на большинстве стандартных упражнений характерные частоты сигнала будут лежать в низкочастотной области спектра. При этом высокие частоты можно считать либо дрожью при выполнении, либо шумами датчиков. Что это значит? Это значит, что мы можем найти спектр сигнала при помощи быстрого преобразования Фурье и использовать только 10-20 % данных для анализа. Почему так мало? Так как 1) спектр симметричен, можно сразу отсечь половину составляющих 2) основная информация лишь 20-40% информативной части спектра. Такие предположения особенно хорошо описывают медленные силовые упражнения.


Нормированный временной ряд для разных упражнений


Нормированный спектр для разных упражнений

Перед обработкой нейросетью происходит нормировка спектра данных на максимальное значение среди трёх осей, чтобы уложить все образцы упражнений в диапазон 0-1 по амплитуде. При этом пропорции между осями сохраняются.

Нейросеть выполняет задачу классификации упражнений. Это значит, что она выдает вектор вероятностей всех упражнений из списка, по которым она была обучена. Индекс максимального элемента в этом векторе номер выполненного упражнения. При этом, если уверенность в выполненном упражнении менее 85%, то считается, что ни одно из упражнений не было выполнено. Сеть состоит из 3 слоев: 4 свёрточных, 3 полносвязных, количество выходных нейронов равно количеству упражнений, которые мы хотим распознавать. В архитектуре для экономии вычислительных ресурсов используются только свёртки с размером ядра 3х3. Сравнительно простая архитектура сети оправдана ограниченными вычислительными ресурсами смартфонов, в нашей задаче необходимо распознавание с минимальной задержкой.


Описание архитектуры нейросети

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

Результаты: при более-менее качественном выполнении упражнений уверенность сети составляет 95-99%. На валидационной выборке точность составила 99.8%.


Ошибка при обучении на валидационной выборке


Матрица ошибок для нейросети

Нейросеть была встроена в мобильное приложение и показала аналогичные результаты, как и при обучении.

В ходе исследования также были опробованы другие модели машинного обучения, используемые в наши дни для решения задач классификации: логистическая регрессия, Random forests, XG Boost. Для этих архитектур были использованы регуляризация Тихонова (L2), перекрёстная проверка и gridsearch для поиска оптимальных параметров. Показатели точности в результате оказались следующими:

  • Логистическая регрессия: 99.4 %
  • Random forests: 99.1 %
  • XG Boost: 97.5%

Знания, полученные в ходе обучения в IT Академии Samsung, помогли авторам проекта расширить горизонты интересов и оказали неоценимый вклад при поступлении в магистратуру Сколковского института науки и технологий. На данный момент мои студенты занимаются там исследованиями в области машинного обучения для систем связи.

Код на GitHub

II место номинации Искусственный интеллект конкурса IT Академии Samsung.
Распознавание эмоций по фотографии лица, Пандов Вячеслав




Работа модели хорошо описана на этом слайде:



Все начинается с фотографии. В представленной реализации оно приходит от Telegram-бота. По нему Dlib frontal_face_detector находит все лица на изображении. Затем с помощью Dlib shape_predictor_68_face_landmarks детектируются 68 ключевых 2D точек каждого лица. Каждый набор нормализуется следующим образом: центрируется (вычитая среднее по X и Y) и масштабируется (деля на абсолютный максимум по X и Y). Каждая координата нормализованной точки принадлежит интервалу [-1, +1].

Затем в дело вступает нейросеть, которая предсказывает глубину каждой ключевой точки лица координату Z, используя нормализованные координаты (X, Y). Данная модель обучалась на датасете AFLW2000.

Далее эти точки соединяются между собой, образуя сеточную маску. Её ещё можно назвать биометрией лица. Длины отрезков такой маски используются как один из способов определения эмоций. Идея в том, что каждый отрезок имеет своё место в векторе отрезков и некоторые из них в зависимости от эмоции. И каждая эмоция, теоретически, имеет ограниченное количество таких векторов. Эта гипотеза подтвердилась в процессе экспериментов. Для обучения такой модели использовались датасеты: Cohn-Kanade+, JAFFE, RAF-DB.

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

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

Среди аналогичных решений можно выделить следующие: EmoPy, DLP-CNN (RAF-DB), FER2013, EmotioNet. Однако сложно делать сравнения, т.к. обучались они на разных данных.

Код на GitHub

Заключение


В заключение хочется сказать, что пилотный курс показал свою состоятельность, и в этом 2020/21 учебном году программа уже преподается в 23х ВУЗах партнерах IT Академии Samsung в России и Казахстане. Полный список можно увидеть здесь. В это году у нас уже учится группа магистров и бакалавров (в группе есть даже один целый к.э.н.!) и пока в основной массе успешно грызет гранит науки. Идеи на индивидуальный проект пока еще только предстоит найти, но студенты полны оптимизма. Конечно в следующем конкурсе индивидуальных проектов конкуренция возрастет десятикратно, но мы надеемся и в дальнейшем получать высокие оценки достижений наших учеников. И самое главное, я уверен, что полученные знания и опыт будут очень серьезным подспорьем для наших выпускников в их дальнейшем развитии в сфере IT.

2020 г. Ростов-на-Дону. ЮФУ, IT Академия Samsung.


Дмитрий Яценко
Старший преподаватель кафедры информационных и измерительных технологий, факультет высоких технологий, Южного Федерального Университета,
Преподаватель IT Школы Samsung,
Преподаватель трека AI IT Академии Samsung.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru