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

Маски

Формальные грамматики на службе мобильного клиента

17.09.2020 12:16:31 | Автор: admin
В повседневной жизни мы пользуемся готовыми интерпретаторами и компиляторами и редко кому придёт в голову написать их самостоятельно. Во-первых, это же сложно, во-вторых зачем.

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

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



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

В конце концов, заполненную форму мобильное приложение отправляет на сервер. В этот момент важно, чтобы данные были правильно отформатированы. Например, API интернет-банка будет требовать, чтобы номер выглядел вот так: 9161234567 без 8, скобочек и минусов.

Если форма пассивно обрабатывает пользовательские данные, то номер телефона она принимает в любом формате, но возникают проблемы:

  • Мы вынуждаем пользователя разбираться в том, как нужно правильно отформатировать номер телефона, чтобы система его приняла.
  • Мы вынуждаем пользователя набирать на клавиатуре труднодоступные символы: переключать раскладку клавиатуры, чтобы набрать цифры или, например, знак плюса.
  • Нам нужно точно объяснить пользователю, в чем он ошибся.



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

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

Если продолжать пример с номером телефона, использование маски даст следующие преимущества:

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



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


Почему нельзя просто взять и описать маску


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

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

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

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

  1. понять правила построения исходной грамматики,
  2. понять правила построения целевой грамматики,
  3. написать правила перевода из исходной грамматики в целевую,
  4. реализовать всё это в коде.

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

Теперь подробно рассмотрим наше решение на основе формальных грамматик.

Предыстория


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


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



Давайте посмотрим, как устроены маски.

Примеры масок в разных форматах


В качестве первого примера возьмём всё ту же форму ввода номера телефона. Маска для такой формы может выглядеть так.



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

Красным выделена часть, которая называется константа. Это символы, которые появятся автоматически, пользователь их вводить не должен:



Дальше идёт динамическая часть она всегда выделена угловыми скобками:


Далее в тексте я буду называть это выражение динамическим выражением или ДВ сокращённо


Здесь записано выражение, по которому мы будем форматировать наш ввод:



Красным выделены кусочки, отвечающие за содержимое динамической части.

\\d любая цифра.

+ обычный репитер: повторить минимум один раз.

${3} символ метаинформации, который уточняет количество повторений. В данном случае должно быть три символа.

Тогда выражение \\d+${3} означает, что должно быть три цифры.

В данном формате масок внутри динамической части может быть только один репитер:



Это ограничение появилось не просто так сейчас объясню почему.
Допустим, у нас есть ДВ, в котором жёстко указан размер: 4 элемента. И мы задаём ему 2 элемента с репитером: `<!^\\d+\\v+${4}>`. Под такое ДВ попадают следующие сочетания:

  • 1abc
  • 12ab
  • 123a

Получается, что такое ДВ не даёт нам однозначного ответа, чего ожидать на месте второго символа: цифру или букву.

Берём маску, складываем её с пользовательским вводом. Получаем отформатированный номер телефона:



На клиенте формат у масок может выглядеть по-другому. Например, в библиотеке Input Mask от Redmadrobot маска для номера телефона имеет следующий вид:



Выглядит она симпатичнее и понимать её проще.

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



Переформулируем задачу: как совместить маски разных форматов


Нам нужно эти маски друг с другом совместить или как-то из одной получить вторую.



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

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

Так как мы дошли до интерпретатора, давайте поговорим про грамматики.

Как проводится синтаксический анализ




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

Этот процесс называется токенизация: поток символов превращается в поток токенов. Количество токенов ограничено, они формализованы, следовательно, можно их анализировать.

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

Есть выражение. Смотрим на него и видим, что у нас есть константа, про которую я говорил выше:



Все константы представим как токен CS, у которого аргумент сама константа:


Следующий вид токенов это начало ДВ:


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



Затем у нас идёт репитер.



Потом несколько символов, которые считаются метаданными. Мы схитрим и представим их одним токеном, потому что так проще.



Конец ДВ. Таким образом, мы разложили всё по токенам.



Пример токенизации маски для номера телефона


Чтобы посмотреть, как в принципе происходит процесс токенизации и как будет работать интерпретатор, возьмём маску для номера телефона и преобразуем её в поток токенов.



Сначала символ +. Преобразуем в константный символ +. Далее то же самое мы делаем для семёрки и для всех остальных символов. Получаем массив из токенов. Это ещё не структура далее будем этот массив анализировать.

Лексер и построение АСД


Теперь более сложная часть это лексер.



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

Правило symbolRule описывает какой-то символ. Если это правило применимо, если оно верно, это значит что мы встретили либо специальный символ, либо константный символ. Можно сказать, что это функция.

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

Дальше всё похожим образом выглядит. Если это ДВ, то это либо symbol, либо repeater. В нашем случае это правило шире. И в конце обязательно должен быть токен с метаданными.
Последнее правило maskRule. Это последовательность из символов и ДВ.

Теперь построим абстрактное синтаксическое дерево (АСД) из массива токенов.

Вот список токенов. Первый узел дерева корневой, с которого начнём построение. Он не несёт никакого смысла, просто дереву нужен корень.



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



То же самое делаем со всеми остальными константными символами, но дальше сложнее. Мы наткнулись на токен ДВ.



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



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



На самом деле, в данном случае, нет. У нас дочерним узлом будет репитер.



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

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

Особенно это было бы заметно на группах символов: например, [abcde]. В том случае, очевидно, должен быть какой-то родительский узел GROUP, у которого будет список дочерних узлов CS(a)CS(b) и т.д.

Возвращаемся к токену с метаданными. Он не включается в контент, он находится сбоку.



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

Закончилось ДВ, и мы не считаем это каким-то узлом: это был токен, который теперь можно выкинуть. Мы не будем превращать его в узел дерева.



У нас уже есть поддерево, корнем которого является узел SR то есть та самая динамическая часть. Токен конца ДВ очень нам помогает в процессе построения дерева мы можем понять, когда закончено построение поддерева для ДВ. Но никакой ценности для логики этот токен не несёт: глядя на построчное дерево, мы и так понимаем, когда ДВ закончится, потому что оно как бы закрыто узлом SR.

Дальше просто обычные константные символы.



Мы получили дерево. Теперь пройдёмся по этому дереву в глубину и построим на его основе какую-то другую грамматику: нужно зайти в узел, посмотреть, что это за узел, и сгенерировать элемент другой грамматики из этого узла.

Синтаксис библиотеки InputMask от Redmadrobot


Рассмотрим синтаксис библиотеки Redmadrobot.



Здесь то же самое выражение. +7 константа, которая добавится автоматически. Внутри фигурных скобок описано ДВ динамическая часть. Внутри ДВ специальный символ d. У Redmadrobot это дефолтная нотация, которая обозначает цифру.

Так выглядит нотация:



Нотация состоит из трёх частей:

  • character символ, который мы будем использовать, чтобы записать маску. То, из чего состоит алфавит маски. Например, d.
  • characterSet какие набранные пользователем символы матчатся этой нотацией. Например, 0, 1, 2, 3, 4 и так далее.
  • isOptional обязательно ли пользователь должен ввести один из символов characterSet или можно ничего не вводить.

Смотрим, у нас сейчас будет такая маска.



  • У символа b специальная нотация цифры и он не опциональный.
  • У символа c другая нотация CharacterSet другой. Он тоже не опциональный.
  • И символ C это то же самое что c, только он опциональный. Это нужно для того, чтобы в маске мы посмотрели на метаданные и увидели, что там не жёсткое ограничение, а слабое.

Если нужно записать правило, когда символов может быть от одного до десяти, то один символ будет не опциональный. А девять символов будут опциональными. То есть в нотации из примера они будут записаны большими буквами. В итоге это правило будет выглядеть так: [cCCCCCCCCC]

Пример: перевод маски номера телефона из формата бекэнда в формат InputMask


Вот дерево, которое мы получили на прошлом этапе. Нам нужно по нему пройтись. Первое, куда мы попадаем, это корень.



Дальше от корня мы попадаем в константный символ + генерируем сразу +. Справа записывается маска в формате InputMask.



Следующий символ понятный просто 7, а за ним открывающая скобка.

Дальше генерируется кусок динамической части, но он пока не заполнен.



Идём внутрь, у нас контент, это технический узел. Ничего не пишем никуда.



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



Доходим, наконец, до какого-то контентного символа.



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

Вот мы его написали, возвращаемся и идём как раз за метаинформацией.



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



В результате мы получаем маску, которая похожа на маску в формате роботов.

На практике мы взяли одну грамматику и сгенерировали из неё другую грамматику.

Правила генерации клиентской грамматики из серверной


Теперь немного про правила генерации. Это важно.

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



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

Дальше у нас идёт символ \\d.

Дальше ДВ с опциональным размером.



Первый, получается, какой-то символ b. У него будет Character Set, содержащий abcd.
Далее понятно, что будет другой уже символ, потому что не сматчишь иначе, или сматчишь неправильно. И дальше у нас это выражение превращается вот в такое.

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

Соберём всё вместе.



Здесь приведён пример Character Set, которые генерируются. Видно, что b соответствует Character Set abcd, для цифр соответствующий предустановленный Character Set. Для d и D соответствующий Character Set содержит 12vf.

Итоги


Мы научились автоматически конвертировать одну грамматику в другую: теперь в нашем приложении работают маски по спецификации сервера.

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



Слева: вверху у поля ввода телефона есть иконка (на самом деле кнопка), которая отправит пользователя в список контактов. Справа: пример клавиатуры для обычного текстового сообщения.

Работающая библиотека по переводу масок


Можете посмотреть на то, как мы реализовали вышеописанный подход. Библиотека лежит на Гитхабе.

Примеры перевода разных масок


Это первая маска, которую мы смотрели в самом начале. Она интерпретируется в такое RedMadRobot представление.



А это вторая маска просто маска ввода чего-то. Она конвертируется в такое представление.

Подробнее..

Дообучение нейросети для поиска лиц в медицинских масках

29.04.2021 14:14:31 | Автор: admin

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

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

Итак, разместим наш датасет из 1962 фотографий в двух каталогах в папке dataset в масках в WithMask и без маски в Withoutmask соответственно. В каждой по 981 фотографии. Ещё одно важное замечание, это то, что дообучаем мы именно на лицах, а не просто, что человек на изображении в маске или без, хотя можно было и так.

Далее импортируем необходимые библиотеки:

from tensorflow.keras.preprocessing.image import ImageDataGeneratorfrom tensorflow.keras.applications import MobileNetV2from tensorflow.keras.layers import AveragePooling2Dfrom tensorflow.keras.layers import Dropoutfrom tensorflow.keras.layers import Flattenfrom tensorflow.keras.layers import Densefrom tensorflow.keras.layers import Inputfrom tensorflow.keras.models import Modelfrom tensorflow.keras.optimizers import Adamfrom tensorflow.keras.applications.mobilenet_v2 import preprocess_inputfrom tensorflow.keras.preprocessing.image import img_to_arrayfrom tensorflow.keras.preprocessing.image import load_imgfrom tensorflow.keras.utils import to_categoricalfrom sklearn.preprocessing import LabelBinarizerfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import classification_reportfrom imutils import pathsimport matplotlib.pyplot as pltimport numpy as npimport argparseimport os

# Указываем начальные гиперпараметры

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

INIT_LR = 0,004

Второй это количество эпох, одна эпоха это один проход обучения на всем наборе данных

EPOCHS = 20

Третий это размер пакета или батча, означает количество данных в одной партии.

BS = 32

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

imagePaths = list(paths.list_images (r'C:\dataset'))  # В этой папке хранятся два каталога с масками и безdata , labels = [] , []for imagePath in imagePaths:# Извлечение класса из директории (с маской или без)label = imagePath.split(os.path.sep)[-2]# Загружам входное изображение 224х224 и обрабатываем егоimage = load_img(imagePath, target_size = (224, 224))image = img_to_array(image)image = preprocess_input(image)# Обновляем список файлов и классовdata.append(image)labels.append(label)# Переводим в NumPy массивdata = np.array(data, dtype="float32")labels = np.array(labels)# Переводим классы в бинарный вид, т.е. 0 без маски 1 с маскойlb = LabelBinarizer()labels = lb.fit_transform(labels)labels = to_categorical(labels)# Разобьём датасет  на тренировочный и тестовый 80% на 20%;(trainX, testX, trainY, testY) = train_test_split(data, labels,  test_size = 0.20, stratify = labels, random_state = 42)# Аугментация датасета путем поворота изображенийaug = ImageDataGenerator(rotation_range = 20, zoom_range = 0.15,width_shift_range = 0.2, height_shift_range = 0.2, shear_range=0.15, horizontal_flip = True, fill_mode = "nearest")# Загружаем базовую модель c предварительно обученными весамиpath_weights = mobilenet_v2_weights_tf_dim_ordering_tf_kernels_1.0_224_no_top.h5'    baseModel = MobileNetV2(weights=path_weights, include_top=False, input_tensor=Input(shape=(224, 224, 3))Запишем в нашу модель внешний слой из базовой моделиheadModel = baseModel.outputheadModel = AveragePooling2D(pool_size = (7, 7))(headModel)headModel = Flatten(name = "flatten")(headModel)headModel = Dense(128, activation = "relu")(headModel)headModel = Dropout(0.5)(headModel)headModel = Dense(2, activation = "softmax")(headModel)model = Model(inputs = baseModel.input, outputs = headModel)# Заморозка слоев базовой модели for layer in baseModel.layers:layer.trainable = False# Скомпилируем нашу модельopt = Adam(lr = INIT_LR, decay = INIT_LR / EPOCHS)model.compile(loss = "binary_crossentropy", optimizer = opt, metrics = ["accuracy"])# Тренируем нашу сетьH = model.fit( aug.flow(trainX, trainY, batch_size = BS), steps_per_epoch = len(trainX) // BS,validation_data = (testX, testY), validation_steps = len(testX) // BS, epochs = EPOCHS)# Делаем предсказание на тестовой выборкеpredIdxs = model.predict(testX, batch_size = BS)#  Для каждого изображения в тестовом наборе, ищем максимальную вероятностьpredIdxs = np.argmax(predIdxs, axis=1)# Показать отчет обучения print(classification_report(testY.argmax(axis = 1), predIdxs, target_names = lb.classes_))

# Сохраняем модель на диск и загружаем её

model.save('model_mask_FACE', save_format = "h5")model_mask = tf.keras.models.load_model('model_mask_FACE)

Поиск маски на лице, на примере

# Найдем лицо на изображении, используя библиотеку MTCNN

frame = cv2.cvtColor(cv2.imread(house.png'), cv2.COLOR_BGR2RGB)frame_image = Image.fromarray(frame)boxes, probs, landmarks = mtcnn.detect(frame_image, landmarks = True)x1, y1, x2, y2 = [int(bx) for bx in boxes[0]]image = Image.fromarray(frame[y1:y2, x1:x2]).resize((224,224))face = img_to_array(image)

# Обработка изображения для загрузки в модель

face = preprocess_input(face)face = np.expand_dims(face, axis=0)

# Загрузка лица в нашу модель

(mask, withoutMask) = model_mask.predict(face)[0]image = cv2.imread(house.png)

# Прорисовка рамки и вероятности

if mask > withoutMask and max(mask, withoutMask) > 0.8: # уверенность    label = "Mask" if mask > withoutMask else "No Mask"    color = (0, 122, 0) if label == "Mask" else (0, 0, 122)    label = "{}: {:.2f}%".format(label, max(mask, withoutMask) * 100)    cv2.putText(image, label, (x1, y1 - 10),cv2.FONT_HERSHEY_SIMPLEX, 2, color, 5)    cv2.rectangle(image, (x1, y1), (x2, y2), color, 5)     y = Image.fromarray(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

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

Подробнее..

Почему все должны носить маски

18.06.2020 14:14:33 | Автор: admin

Критика популярных доводов в пользу массового ношения масок для сдерживания гриппа и прочив ОРВИ: серьезных и не очень, рациональных и эмоциональных.



Люди болеют и умирают от вируса!


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


Писающие в штаны


Жидкости и газы сильно различаются. Почему бы не провести этот эксперимент в бассейне?


image


Маски улавливают капли при кашле и чиханье


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


Маски уменьшает радиус поражения


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


image


Маски фильтруют воздух, а респираторы ещё лучше


Хирургически маски фильтруют воздух гораздо хуже респираторов, а самодельные тканевые маски практически никак. При этом воздух вместе с аэрозолями всегда течет по пути наименьшего сопротивления по краям маски или в зазоры между респиратором и лицом. Поэтому респиратор должен очень плотно прилегать к лицу. Чем лучше фильтрует маска или респиратор, тем тяжелее в них дышать, тем больше должна быть полезная (фильтрующая) площадь, поэтому респираторы имеют такие причудливые вытянутые формы. Многие люди, носящие очки, жалуются на их запотевание при ношении масок. Это означает, что воздух идёт не через маску, а сверху в щель около носа.


Даже незначительное уменьшение дозы лучше


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


Маски носили во время испанки


И тем не менее, десятки миллионов людей умерли. Бесполезность марлевых масок была объяснена ещё в 1920 году сразу после пандемии испанского гриппа. Заметная степень фильтрации достигалась, когда через маску уже трудно было дышать, и воздух проходил с краёв масок: KelloggW.H., MacMillanG. An experimental study of the efficacy of gauze face masks (Экспериментальная проверка эфективности марлевых масок), American Journal of Public Health 10(1):3442.


Но хирурги же носят маски


Карл Флюгге заметил, что выдыхаемый воздух может содержать капельки с бациллой туберкулёза, поэтому врачи стали надевать маски на всякий случай. Как и сейчас, это было настолько очевидно, что практически никто не озаботился проверкой. Между тем было замечено, что в операциях, проведенных без масок, частота заражений пациентов снижалась. В связи с этим проводились дополнительные контролируемые исследования, например, TunevallT.G. Postoperative wound infections and surgical face masks: A controlled study (Послеоперационные инфекции и хирургические маски: контролируемое исследование), World J. Surg. 15:383387:


Ещё не было показано, что ношение хирургических масок уменьшает частоту послеоперационных инфекций. Напротив, снижение на 50% было зарегистрировано на операциях без масок. Поэтому было проведено контролируемое исследование влияния масок на инфицирование пациентов. В течении 115 недель были прооперированы 3088 пациентов. 1537 операций проведены в масках, а 1551 без масок. В первом случае инфекция развилась у 73 (4,7%) пациентов, во втором у 55 (3,5%). Разница не была статистически значимой, а характер инфекций не отличался.



ВОЗ говорит, что маски помогают


Всемирная организация здравоохранения никогда не одобряла и не одобряет массовое ношение масок (сравните с прививками и одобрением тотальной вакцинации). Вместо этого, она призывают к глобальному эксперименту. В документе от 5июня 2020 года ВОЗ, как обычно, делает сводку актуальных знаний и исследований для использования местными властями и органами здравоохранения. Признаётся, что массовое использование масок не имеет надёжных научных обоснований. Тем не менее, ВОЗ призывает власти поощрять массовое ношение масок большей частью не медицинских, а самодельных (максимально бесполезных). Любопытны, однако, перечисленные возможные плюсы массового ношения таких масок. Их всего пять и они достойны цитирования:


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

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

  • Заставить людей почувствовать себя важными в борьбе с вирусом.

  • Напоминание людям о необходимости соблюдать другие меры (например, гигиену рук, не трогать нос и рот). Однако это может также иметь обратный эффект.

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


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


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


Хомяки доказали, что ношение масок полезно


Вот эта работа ChanJ.F., et al. Surgical mask partition reduces the risk of non-contact transmission in a golden Syrian hamster model for Coronavirus Disease 2019 (COVID-19) (Препятствие из хирургической маски уменьшает риск бесконтактной передачи КОВИД-19 среди хомячков), Clinical Infectious Diseases, ciaa644.


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


image


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


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


Авторы говорят, что использовали замкнутые системы из двух клеток в изоляторе, не раскрывая понятия замкнутая система. При этом они поддерживали постоянную температуру 25C и относительную влажность 50%. Если под замкнутостью они понимают герметичность, то не понятно как они могли поддерживать постоянную влажность при наличии поилок для хомяков, а также достаточно ли было воздуха бедным хомякам в течении дней, пока длились эксперименты. Если же воздух в изоляторе обновлялся, то это ещё более снижает ценность эксперимента. Модель изолятора так же не указана (только производитель), что не позволяет найти ответы на эти вопросы.


А вот в Китае, Корее, Японии


В Китае, Японии и других много лет носят маски, тем не менее именно там происходят вспышки новых или старых вирусных инфекций. В недавнем исследовании утверждается, что именно массовое ношение масок помогло переломить эпидемию: ZengN., et al. Epidemiology reveals mask wearing by the public is crucial for COVID-19 control (Эпидемиология выявила решающее значение масок в борьбе с КОВИД-19), Medicine in Microecology, 4:100015. Однако не приводится никаких объяснений возможного механизма влияния масок. Это как если бы термодинамика противоречила молекулярно-кинетической теории. Вместе с тем, гипотеза авторов о пользе масок сыплется уже на примере Южной Кореи, где, как они пишут, ситуация сложнее (для объяснения). Авторы также прямо упоминают, что в моменты предполагаемого введения масочных режимов одновременно вводились в том или ином виде другие чрезвычайные меры, общественные места, магазины и транспорт опустели, даже за пару дней до принудительного закрытия. Между тем, даже пара дней может разрушить их гипотезу, так как они предполагают 8-дневный инкубационный период. Графики для Италии и Испании имеют такой же профиль, несмотря на отсутствие там требований ношения масок, однако число зарегистрированных случаев заражения спадает медленнее, чем в Китае. В связи с чем возникает недоумение, как в принципе масочный режим может быть эффективнее тотальной изоляции людей?


Не стоит также забывать и об источниках данных по различным странам, к международной статистике по КОВИД-19 есть множество вопросов. На графике Китая виден пик около 15 февраля, когда Китай изменил методику подсчёта. А также стоит заметить, что данные по Италии и Испании обрезаны началом апреля около пика, а их пики значительно выше, чем весь Китай. График Китай приведён в двух масштабах с явно различной крутизной одного и того же пика, а значит доверять интуиции при взгляде на графики Италии и Испании не стоит.


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


Моделирование показывает пользу масок


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


Вот пример такой модели: JavidB. Impact of population mask wearing on Covid-19 post lockdown (Массовое ношение масок после тотального карантина в связи с КОВИД-19), medRxiv, 2020-06-02. В работе есть предложение, достойное цитирования: Wearing of masks was implemented in the model as a reduction of infectivity between 816%. Или по-русски: Ношение масок было реализовано в модели как снижение заразительности на 816%.


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


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


Есть же множество исследований о важности масок


Конечно, например ZhangR., et al. Identifying airborne transmission as the dominant route for the spread of COVID-19 (Передача по воздуху как основной путь распространения КОВИД-19), Proceedings of the National Academy of Sciences 2020(06):202009637. Всё, что нужно знать о качестве исследования, продемонстрировано на рисунке номер3, на котором видно, что ни социальное дистанцирование, ни самоизоляция не оказали никакого влияния на передачу инфекции, и только маски, внезапно, всё исправили:


image


Я не против носить маску


Носите на здоровье! Речь о том, чтобы не заставлять носить других.

Подробнее..

Защищают ли маски от COVID? Научный FAQ

07.04.2021 10:06:45 | Автор: admin

Самое важное заблуждение

Q: Как вообще могут работать эти маски? Размеры отверстий между волокнами гораздо больше размеров самого вируса, это как использовать проволочную сетку против комаров!

A: Размеры вируса SARS-nCov-2 действительно составляют порядка 100 нанометров в диаметре. (ссылка). Однако гораздо более важным является тот факт, что вирус сам по себе по воздуху не летает, а переносится капельками влаги при выдохе (так называемыми droplets), размеры которых на несколько порядков выше около 5-10 нм. (ссылка)

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

Q: Что в целом об эффективности масок говорит актуальное научное знание?

A: 1 июня 2020 года в журнале The Lancet была опубликована статья Physical distancing, face masks, and eye protection to prevent person-to-person transmission of SARS-CoV-2 and COVID-19: a systematic review and meta-analysis. В этот систематический обзор вошло более 170 исследований (общая сумма пациентов 25 697).

Приведенные в этом исследовании результаты указывают, что маски в целом связаны с большим снижением риска заражения SARS-CoV-2, SARS-CoV и MERS-CoV (adjusted odds ratio в маске и без маски: 0.15);.

Другое мета-исследование показало, что использование может снизить риск респираторной вирусной инфекции на 80%.

Q: Так вы утверждаете, что маски действительно задерживаю микрочастицы влаги, переносящие вирусы? Какие есть свидетельства, доказывающие это?

A: Например, исследование от одной из самых авторитетных в мире клиник доказательной медицины Mayo Clinic. Это было экспериментальное исследование, в котором имитировалось образование выдыхаемых капель с помощью манекенов, которые были либо в масках, либо без, и производилось измерение распространения этих капель на различных расстояниях. Во второй части исследования такие же эксперименты проводились с мелкими аэрозольными частицами диаметром 2 мкм. Вполне ожидаемо, маски оказались очень эффективными в снижении риска переноса как капель, так и аэрозольных частиц между манекенами, имитировавшими больного и здорового человека. Естественно, максимальный эффект достигался, когда маски были на обоих. Естественно, чем больше было физическое расстояние тем лучше. Когда оба манекена были в масках, риск переноса вируса уменьшался с условных 100% до менее чем 0.5% на *любом* расстоянии, даже при плотном контакте.

Не менее интересен и эксперимент японских ученых, данные которого опубликованы в журнале American Society for Microbiology. Они разработали имитатор передачи по воздуху капель/аэрозолей, содержащих SARS-CoV-2, образующихся при дыхании и кашле человека, и оценили способность различных типов масок блокировать передачу вируса.

Было обнаружено что хлопковые маски, хирургические маски и маски N95 обладают защитным эффектом в отношении передачи инфекционных капель/аэрозолей SARS-CoV-2 и что защитная эффективность была выше, когда маски носили вирусоносители.

Обратите внимание -- шкала логарифмическая! То есть разница в 1 пункт на графике означает снижение в 10 раз.Обратите внимание -- шкала логарифмическая! То есть разница в 1 пункт на графике означает снижение в 10 раз.

Ряд других исследований говорят об эффективности фильтрации дроплетов порядка 51% для хлопковых масок, 59% для медицинских и 99% для респираторов.

Q: Можно ли провести эксперимент самому?

A: Можно. Ну, почти. Пример можно найти в статье.

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

Результаты у них получились вполне показательные:

Q: Окей. А какой реальный эффект от всего этого?

A: Первый пример из США:

В этом исследовании представлены данные естественного эксперимента о влиянии предписаний правительства штата на публичное использование масок, выпущенных пятнадцатью штатами и Вашингтоном, округ Колумбия, в период с 8 апреля по 15 мая 2020 года. Ежедневные темпы роста COVID-19 на уровне округов в период с 31 марта по 22 мая 2020 г. Обязательное использование лицевых масок в общественных местах связано со снижением ежедневных темпов роста COVID-19 на 0,9, 1,1, 1,4, 1,7 и 2,0 процентных пункта через 15, 610, 1115, 1620 и 21 или более дней после подписания государственного приказа о масках, соответственно. По оценкам, в результате выполнения этих требований к 22 мая 2020 года было предотвращено более 200000 случаев COVID-19. Результаты показывают, что требование использования лицевых масок в общественных местах может помочь в смягчении распространения COVID-19.

А еще?

Исследование в Германии. Ученые использовали метод синтетического контроля, чтобы проанализировать влияние масок на распространение COVID-19 в Германии. Они сравнивали города, где ношение масок сделали обязательным в магазинах и общественном транспорте, с городами, где такого правила в это время не было. В статье учёные постарались оценить влияние именно "масочного режима", отделив его от других факторов. Авторы оценивают, что "масочный режим" снижает ежедневное количество заражений в крупных городах в среднем на 47% спустя 20 дней после введения.

График количества случаев Covid19 в городе Йена, где кампания по продвижению масок началась 30 марта, а обязательными маски стали 6 апреля. Пунктирной линией показана "синтетическая контрольная группа", рассчитанная на основании данных других городов, где такие меры в это время не вводились.График количества случаев Covid19 в городе Йена, где кампания по продвижению масок началась 30 марта, а обязательными маски стали 6 апреля. Пунктирной линией показана "синтетическая контрольная группа", рассчитанная на основании данных других городов, где такие меры в это время не вводились.

Q: Но я видел большое исследование из Дании, которое показывает, что от масок не так-то много толку!

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

Q: У меня нет симптомов, значит я не могу быть распространителем вируса.

A: Исследования свидетельствуют, что во многих случаях при инфицировании SARS-nCov-2 человек становится заразным еще до проявления у него симптомов.

Q: Маски вызывают гипоксию!

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

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

A: Никто не мешает вам купить пульсоксиметр и провести эксперимент на себе, чтобы убедиться, что это бред.

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

Подробнее..

Перевод Новые видео демонстрируют, почему маски с клапанами не замедляют распространение COVID-19

13.11.2020 16:21:32 | Автор: admin

Мэттью Стэйматс тестирует разные маски. Источник: NIST

Многие люди носят маски в общественных местах, чтобы замедлить распространение COVID-19, выполняя рекомендации центров по контролю и профилактике заболеваний. Однако маски с клапанами для выдоха не замедляют распространение инфекции. Новые видеоролики американского Национального института стандартов и технологий (NIST) демонстрируют, почему.

На видео показано, как воздушный поток проходит через маски с клапанами выдоха и без них. Материалы создал инженер-исследователь NIST Мэттью Стэйматс. Видео опубликованы вместе с сопутствующей исследовательской статьей в журнале Physics of Fluids.

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

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

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

Это видео, созданное с использованием шлиреновой системы визуализации, показывает динамику воздушного потока для маски N95 с клапаном выдоха (слева) и маски без клапана выдоха. Воздух проходит через клапан нефильтрованным. Маски с клапанами не замедляют распространение COVID, и их не следует носить для этой цели. Источник: Мэттью Стэйматс/NIST.

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

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

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

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

Это видео создано с использованием техники светорассеяния. Ролик демонстрирует динамику воздушного потока при ношении маски N95 с клапаном выдоха (слева) и без клапана выдоха (в центре). Маски с клапанами не замедляют распространение COVID, и их не следует носить для этого. Источник: Мэттью Стэйматс/NIST.

Стэйматс создал второе видео, используя метод рассеяния света.

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

В противоположность съемке с шлирен-методом, этот ролик показывает движение капель в воздухе. Слева капли выходят и не фильтруются через клапан маски N95. В середине нет клапана, и дыхания не видно, потому что маска задержала капли. Справа маска не надета.

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

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

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

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



Подробнее..

Категории

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

  • Имя: Макс
    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