JavaScript для глубокого обучения 2021 TensorFlow js Ббк



Download 30,75 Mb.
Pdf ko'rish
bet224/457
Sana27.03.2022
Hajmi30,75 Mb.
#513488
1   ...   220   221   222   223   224   225   226   227   ...   457
Bog'liq
Цэй Ш., Байлесчи С., и др. - JаvaScript для глубокого обучения (Библиотека программиста) - 2021


Глава 6. Работа с данными
265
тите, что передается значение 
undefined
соответствующего HTML­элементу ар­
гумента, так что API создаст скрытый элемент в представлении DOM в качестве 
дескриптора видео.
Листинг 6.15.
Создание простого объекта Dataset для веб-камеры с использованием объекта 
конфигурации
С помощью объекта конфигурации можно также кадрировать части видеопотока 
и менять размер изображения. Сочетая HTML­элемент и объект конфигурации, 
можно задавать место начала кадрирования и желаемый выходной размер. При этом 
выходной тензор будет интерполироваться к желаемому размеру. В листинге 6.16 
приведен пример выбора прямоугольного фрагмента квадратного видео и уменьше­
ния его размера так, чтобы можно было использовать маленькую модель.
Листинг 6.16.
Кадрирование и изменение размера данных, получаемых от веб-камеры
Важно отметить несколько очевидных различий между подобной разновидно­
стью набора данных и наборами данных, с которыми мы работали до сих пор. На­
пример, веб­камера выдает различные значения в разные моменты времени. А набор 
данных CSV выдает строки в одном порядке вне зависимости от того, насколько 
быстро или медленно они извлекаются. Более того, можно получать сколько угодно 
примеров данных от веб­камеры, пока пользователь их запрашивает. Вызывающая 
API сторона должна явным образом завершать поток данных, когда больше данных 
не требуется.
Доступ к данным от итератора веб­камеры производится с помощью метода 
capture()
, возвращающего тензор, который отражает последний кадр. Пользова­
тели API могут использовать этот тензор в своей работе, не забывая освобождать 
выделенную под него память, во избежание утечки. Из­за нюансов асинхронной 


266
Часть III • Продвинутые возможности глубокого обучения с TensorFlow.js
обработки данных с веб­камеры лучше производить необходимую предварительную 
обработку непосредственно захваченного кадра, а не использовать функциональ­
ность отложенной обработки 
map()
модуля 
tf.data
.
Другими словами, вместо обработки данных с помощью 
data.map()
:
// Плохо:
let webcam = await tfd.webcam(myElement)
webcam = webcam.map(myProcessingFunction);
const imgTensor = webcam.capture();
// Используем imgTensor здесь
tf.dispose(imgTensor)
лучше применить функцию непосредственно к изображению:
// Хорошо:
let webcam = await tfd.webcam(myElement);
const imgTensor = myPreprocessingFunction(webcam.capture());
// Используем imgTensor здесь
tf.dispose(imgTensor)
Не следует использовать методы 
forEach()
и 
toArray()
для итератора веб­
камеры. Для обработки длинных последовательностей полученных с устройства 
кадров пользователям API 
tf.data.webcam()
лучше описать свой собственный 
цикл с помощью, например, функции 
tf.nextFrame()
и вызывать 
capture()
с под­
ходящей частотой кадров. Дело в том, что при вызове метода 
forEach()
для веб­
камеры фреймворк будет извлекать кадры с максимальной частотой, с какой только 
движок JavaScript браузера способен запрашивать их от устройства. В результате 
тензоры будут создаваться с частотой, превышающей частоту кадров устройства, 
что приведет к дублированию кадров и расходу вычислительных ресурсов впустую. 
По аналогичным причинам итератор веб­камеры 
не
следует передавать в качестве 
аргумента методу 
model.fit()
.
В листинге 6.17 показана сокращенная версия цикла предсказания из приме­
ра webcam­transfer­learning (Пакман), который мы видели в главе 5. Учтите, что 
внешний цикл выполняется до тех пор, пока 
isPredicting

true
, что определяется 
элементом UI. А внутри скорость выполнения цикла ограничивается вызовом функ­
ции 
tf.nextFrame()
, привязанным к частоте обновления UI. Следующий код взят 
из файла 
tfjs-examples/webcam-transfer-learning/index.js
.
Одно последнее примечание: при использовании веб­камеры часто имеет смысл 
получать, обрабатывать изображение и освобождать выделенную под него память, 
прежде чем выполнять предсказание. Во­первых, полная обработка изображения 
моделью гарантирует, что соответствующие весовые коэффициенты модели уже 
загружены в GPU, а значит, предотвращает возможное подтормаживание в начале 
работы. Во­вторых, дает аппаратному обеспечению веб­камеры время прогреться 
и приступить к отправке настоящих кадров. В зависимости от аппаратного обе­
спечения веб­камеры иногда отправляют пустые кадры до тех пор, пока устройство 
не прогреется. См. фрагмент кода в листинге 6.18, демонстрирующий реализацию 
описанной методики в примере webcam­transfer­learning (из файла 
webcam-transfer-
learning/index.js
).


Download 30,75 Mb.

Do'stlaringiz bilan baham:
1   ...   220   221   222   223   224   225   226   227   ...   457




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish