Skip to content

This project demonstrates the use of Windows and Cognitive Services Face recognition API

Notifications You must be signed in to change notification settings

evangelism/FaceRecognitionTracker

Repository files navigation

FaceRecognitionTracker

Небольшой тьюториал по Internet of Things

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

Скачиваем и запускаем приложение, определяющее человеческие эмоции

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

  1. Если вы используете командную строку - клонируйте репозиторий в какое-нибудь удобное место:
git clone https://github.com/evangelism/FaceRecognitionTracker

Если вы не пользуетесь git, вы можете скачать ZIP-версию исходного кода и затем развернуть её в любую директорию вручную.

  1. Откройте файл FaceRecogitionTracker.sln в Visual Studio. Вы также можете использовать пункт меню "Open from source control..." в Visual Studio...
  2. Получите ключ для использования Emotion API в Microsoft Cognitive Services. Зайдите на https://www.microsoft.com/cognitive-services/, выберите Emotions API -> Get Started for Free, и получите ключ.
  3. В файле Config.cs замените ключ на тот, который вы только что получили.

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

Конфигурируем IoT Hub

Для приема сообщений в облаке мы будем использовать IoT Hub. Откроем панель управления Azure Portal http://portal.azure.com.

Для начала создаем в облаке свой IoT Hub (раздел "Интернет вещей"). После создания хаба скопируйте строку подключения:

Get Access Key

Подключаемся к IoT-хабу и создаем строку подключения для устройства

Используйте и установите Device Explorer. В нем введите строку подключения к IoT-хабу:

Device Explorer 1

После этого перейдите на вкладку "Management" и добавьте новое устройство. Затем правой кнопкой нажмите на строку с устройством и выберите "Copy Connection String".

Device Explorer 2

Получаем код для работы с IoT-хабом

Очень хорошая страничка Getting Started есть в MSDN. Выбираете своё устройство, язык программирования и т.д. - и получаете фрагмент кода.

В нашем случае выбираем Raspberry Pi 2 -> Windows -> C#. (Код для Raspberry Pi подойдет и для настольного UWP-приложения). При добавлении кода в проект, необходимо также добавить ссылку на NuGet-пакет Microsoft.Azure.Devices.Client. В полученном коде не забудьте исправить строку подключения на ту, которая была получена на предыдущем шаге.

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

Отправка данных в IoT Hub

Для отправки данных используется следующий код:

iothub = DeviceClient.CreateFromConnectionString(DeviceConnectionString);
await iothub.OpenAsync();
...
var b = Encoding.UTF8.GetBytes(s);
await iothub.SendEventAsync(new Message(b));

Здесь s - это строка, содержащая JSON-код для эмоций.

Готовое решение

Если вы затрудняетесь запрограммировать отсылку данных в облако самостоятельно - используйте branch MicrosoftBuzzwordDaySolution, содержащюю готовое решение по отсылке данных в IoT-hub (не забудьте поменять строку подключения!).

Принимаем данные из IoT Hub

Для приёма сообщений из IoT Hub можно использовать следующий код:

        private async Task Receive()
        {
            while (true)
            {
                var msg = await iothub.ReceiveAsync();
                if (msg != null)
                {
                    var s = Encoding.ASCII.GetString(msg.GetBytes());
                    // Сделать что-то с полученным сообщением, например, зажечь светодиод
                    await iothub.CompleteAsync(msg);
                }
            }
        }

Настраиваем Stream Analytics

Для передачи данных из IoT Hub в систему хранения можно использовать Stream Analytics.

Для начала, настроим Stream Analytics для передачи данных из IoT Hub в PowerBI. Заодно можно осуществить усреднение данных по температуре за какой-то интервал времени, например, 5 секунд.

Для этого необходимо создать объект Stream Analytics, сконфигурировать в нем входные и выходные потоки данных, и задать запрос.

В качестве входных данных используем IoT Hub, назовем входные данные InHub. В качестве выходных данных - Power BI, назовём их OutBI. Обратите внимание, что в текущей версии портала Azure для конфигурирования PowerBI необходимо использовать старый портал http://manage.windowsazure.com.

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

SELECT * INTO [OutBI] FROM [InHub]

Для усреднения данных за 5 секунд используем такой запрос:

SELECT
    AVG(Happiness) as AVHappiness,
    AVG(Surprise) as AVSurpive,
    ...
    MAX(Time) as EndTime, MIN(Time) as BeginTime
INTO [OutBI]
FROM [InHub] TIMESTAMP BY Time
GROUP BY TumblingWindow(Duration(second,5))

Вам может пригодится прекрасный документ с набором примеров запросов.

После конфигурирования задания Stream Analytics необходимо запустить задание на выполнение.

Настраиваем отчёт в PowerBI

После того, как Stream Analytics будет запущено, вы должны увидеть в панели PowerBI доступные данные:

PowerBI

About

This project demonstrates the use of Windows and Cognitive Services Face recognition API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages