Чтобы улучшить взаимодействие с пользователем, увеличить скорость проверки и повысить безопасность во время процесса проверки, продукты face-core будут использовать некоторые технологии связи в реальном времени, которые будут напоминать пользователям о необходимости корректировать свою позу в реальном времени и направлять пользователей выполнять действия в реальном времени. движения тела и выполнять обнаружение тела в реальном времени. Face Kernel использует две технологии связи в реальном времени — WebSocket и WebRTC.
В этой статье в основном будет представлен WebSocket, используемый в плавающем слое тела ядра лица.
в живых организмах,Нашей основной особенностью является «реальное время» — определение расстояния до лица, окклюзии лица и т. д. в реальном времени. До рождения WebSocket,Браузеру необходимо запрашивать данные с сервера посредством HTTP-запросов. Хотя последующие версии HTTP поддерживают или умные разработчики реализовали различные решения для запроса данных «квази-реального времени»: опрос, длинный опрос、Долгая связь и т.д.。Но эти методы неотделимы отЗапрос/Ответ,То есть браузеру необходимо инициировать запрос,Сервер имеет право отправить ответ.
Первоначальный «режим реального времени» на самом деле не является режимом реального времени, но клиент время от времени запрашивает сервер, есть ли новые данные, и интервал опроса клиента определяет, насколько в реальном времени находятся данные.
Процесс голосования выглядит следующим образом:
Видно, что если обновление данных происходит между двумя опросами (вообще говоря, интервал опроса составляет секунды, поэтому данные почти всегда будут появляться между двумя опросами), то самые последние данные будут проходить через определенный промежуток времени. в доставке.
Поэтому умные разработчики изобрели решение для длительного опроса.
длинный Процесс голосования выглядит следующим образом:
По сравнению с опросом преимущество длительного опроса состоит в том, что обновления данных могут доставляться клиенту практически без задержки. В то же время это также уменьшает количество соединений, установленных между клиентом и сервером, снижая стоимость установления соединения.
Опрос и длинный опрос часто сравнивают с короткими связями и длинными связями. В общем, короткая ссылка означает, что для связи с каждым запросом устанавливается новое TCP-соединение, а длинное соединение означает, что одно и то же TCP-соединение повторно используется для нескольких запросов;
Однако, будь то короткое или длинное соединение, опрос или длительный опрос, все обновления данных требуют, чтобы клиент инициировал запрос, прежде чем сервер сможет его отправить. Однако в процессе существования плавающего слоя многие обновления данных поступают пакетами и должны быть доставлены клиенту вовремя, поэтому необходим метод связи, более эффективный в режиме реального времени.
WebSocket обеспечивает возможность двусторонней связи между браузером и сервером. Подобно Socket, это протокол прикладного уровня, основанный на TCP-соединении. Используйте протокол HTTP для подключения. После успешного установления соединения оба конца могут активно отправлять информацию другой стороне.
С помощью протокола HTTP вы можете подключиться к TCP-соединению, на котором основан HTTP, надеть собственную маску и взаимодействовать по собственному протоколу.
Чтобы оставаться совместимым с HTTP-серверами, WebSocket предпочитает использовать протокол HTTP для установления соединений. Сначала клиент отправит HTTP-запрос на обновление с запросом протокола обновления:
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin: http://example.com
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Это очень стандартный HTTP-запрос Get. Внутри есть ключевой заголовок:
После того, как сервер получит запрос на переключение протокола, он вынесет оценку своих собственных возможностей. Если он поддерживает протокол, он ответит успешным ответом на обновление — протоколы переключения:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Protocol: chat
На этом этапе TCP-соединение на основе HTTP было повторно использовано как соединение WebSocket. Ниже представлена версия nodejs демо-версии сервера веб-сокетов.
httpserver.on('upgrade', function upgrade(request, socket, head) {
wsserver.handleUpgrade(request, socket, head, function done(ws) {
ws.on('message', (data, isBinary) => {
ws.send('message: ' + data + 'recieved!')
})
});
})
Поскольку установление соединения WebSocket основано на протоколе HTTP, многие студенты ошибочно полагают, что WebSocket — это протокол, основанный на протоколе HTTP. Но на самом деле WebSocket не имеет ничего общего с HTTP после установления соединения. Как и протокол HTTP, это протокол прикладного уровня, основанный на протоколе TCP.
WebSocket использует собственный двоичный формат кадра для разделения каждого сообщения приложения на один или несколько кадров. Узел ожидает получения полного сообщения, прежде чем собирать и обрабатывать его.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-------+-+-------------+-------------------------------+
|F|R|R|R| opcode|M| Payload len | Extended payload length |
|I|S|S|S| (4) |A| (7) | (16/64) |
|N|V|V|V| |S| | (if payload len==126/127) |
| |1|2|3| |K| | |
+-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - +
| Extended payload length continued, if payload len == 127 |
+ - - - - - - - - - - - - - - - +-------------------------------+
| |Masking-key, if MASK set to 1 |
+-------------------------------+-------------------------------+
| Masking-key (continued) | Payload Data |
+-------------------------------- - - - - - - - - - - - - - - - +
: Payload Data continued ... :
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
| Payload Data continued ... |
+---------------------------------------------------------------+
В основном вводит два ключевых поля:
Мы можем просто использоватьОбнаружение и анализ лицИнтерфейс сСравнение лицИнтерфейс предоставляет услугу обнаружения и сравнения лиц в режиме реального времени.。
Возможности ИИ,Мы будем использовать два интерфейса, предоставленные Tencent Cloud.Обнаружение и анализ лицИнтерфейс сСравнение лиц:
Внешний интерфейс,мы используемgetUserMediaAPIОткройте камеру для получения видеопотока;использоватьWebSocketAPI与Сервер建立WebSocketсоединять。соединять建立成功后,Вы можете захватывать кадры из видеопотока,Отправлено на сервер для обнаружения.
Серверная часть,мы можем использоватьNodejs+wsэтотnpmПакет создает простойWebSocketСервер。Сервер接到截帧之后就可以调用腾讯云提供的интерфейс进行检测与验证。
Живое тело с плавающим слоем лицевого ядра также является решением для обнаружения живого тела в реальном времени, основанным на вышеупомянутом решении. Оно также обрабатывает больше деталей, чтобы сделать процесс более плавным. Вы можете выполнить следующие шаги, чтобы подать заявку и испытать услугу «плавающий слой» для лица и тела in vivo.
Узнал об этом на официальном сайте Tencent Cloud. Облачный искусственный интеллект Tencent лицо ядро тело продукта, нажмите, чтобы подать заявку на бесплатную пробную версию и испытать его.
лицо ядро тело После успешной активации услуги,Вы можете перейти в консоль для создания бизнес-процесса:https://console.cloud.tencent.com/faceid
Выберите «WeChat H5 (плавающий слой/обычный режим)», введите имя официальной учетной записи для тестирования и нажмите «Далее».
Затем заполните соответствующую информацию согласно подсказкам на консоли.
После завершения приложения проверьте свой RuleId на консоли.
我们可以использоватьAPI ExplorerпозвонитьАутентификация по настоящему имениинтерфейс,Подключитесь к опыту. Входной параметр RuleId заполняется RuleId, примененным на предыдущем шаге. Нажмите, чтобы начать вызов.
После успешного вызова интерфейса DetectAuth в обратном пакете будет URL-адрес. Вы можете открыть его с помощью WeChat, чтобы проверить.
{
"Response": {
"BizToken": "CE661F1A-0F1E-45BD-BE13-34C05CEA7681",
"Url": "https://xxxxxxxxxxxxx",
"RequestId": "f904f4cf-75db-4f8f-a5ec-dc4f942c7f7a"
}
}