2024-09-10 17:30:23 +02:00
<!DOCTYPE html> < html class = "default" lang = "en" > < head > < meta charset = "utf-8" / > < meta http-equiv = "x-ua-compatible" content = "IE=edge" / > < title > http | @vladmandic/face-api - v1.7.14< / title > < meta name = "description" content = "Documentation for @vladmandic/face-api" / > < meta name = "viewport" content = "width=device-width, initial-scale=1" / > < link rel = "stylesheet" href = "../assets/style.css" / > < link rel = "stylesheet" href = "../assets/highlight.css" / > < script defer src = "../assets/main.js" > < / script > < script async src = "../assets/icons.js" id = "tsd-icons-script" > < / script > < script async src = "../assets/search.js" id = "tsd-search-script" > < / script > < script async src = "../assets/navigation.js" id = "tsd-nav-script" > < / script > < / head > < body > < script > document . documentElement . dataset . theme = localStorage . getItem ( "tsd-theme" ) || "os" ; document . body . style . display = "none" ; setTimeout ( ( ) => app ? app . showPage ( ) : document . body . style . removeProperty ( "display" ) , 500 ) < / script > < header class = "tsd-page-toolbar" > < div class = "tsd-toolbar-contents container" > < div class = "table-cell" id = "tsd-search" data-base = ".." > < div class = "field" > < label for = "tsd-search-field" class = "tsd-widget tsd-toolbar-icon search no-caption" > < svg width = "16" height = "16" viewBox = "0 0 16 16" fill = "none" > < use href = "../assets/icons.svg#icon-search" > < / use > < / svg > < / label > < input type = "text" id = "tsd-search-field" aria-label = "Search" / > < / div > < div class = "field" > < div id = "tsd-toolbar-links" > < / div > < / div > < ul class = "results" > < li class = "state loading" > Preparing search index...< / li > < li class = "state failure" > The search index is not available< / li > < / ul > < a href = "../index.html" class = "title" > @vladmandic/face-api - v1.7.14< / a > < / div > < div class = "table-cell" id = "tsd-widgets" > < a href = "#" class = "tsd-widget tsd-toolbar-icon menu no-caption" data-toggle = "menu" aria-label = "Menu" > < svg width = "16" height = "16" viewBox = "0 0 16 16" fill = "none" > < use href = "../assets/icons.svg#icon-menu" > < / use > < / svg > < / a > < / div > < / div > < / header > < div class = "container container-main" > < div class = "col-content" > < div class = "tsd-page-title" > < ul class = "tsd-breadcrumb" > < li > < a href = "../index.html" > @vladmandic/face-api< / a > < / li > < li > < a href = "../modules/tf.html" > tf< / a > < / li > < li > < a href = "../modules/tf.io.html" > io< / a > < / li > < li > < a href = "tf.io.http.html" > http< / a > < / li > < / ul > < h1 > Function http< / h1 > < / div > < section class = "tsd-panel" > < ul class = "tsd-signatures" > < li class = "tsd-signature tsd-anchor-link" > < a id = "http" class = "tsd-anchor" > < / a > < span class = "tsd-kind-call-signature" > http< / span > < span class = "tsd-signature-symbol" > (< / span > < span class = "tsd-kind-parameter" > path< / span > , < span class = "tsd-kind-parameter" > loadOptions< / span > < span class = "tsd-signature-symbol" > ?< / span > < span class = "tsd-signature-symbol" > )< / span > < span class = "tsd-signature-symbol" > : < / span > < a href = "../interfaces/tf.io.IOHandler.html" class = "tsd-signature-type tsd-kind-interface" > IOHandler< / a > < a href = "#http" aria-label = "Permalink" class = "tsd-anchor-icon" > < svg viewBox = "0 0 24 24" > < use href = "../assets/icons.svg#icon-anchor" > < / use > < / svg > < / a > < / li > < li class = "tsd-description" > < div class = "tsd-comment tsd-typography" > < p > Creates an IOHandler subtype that sends model artifacts to HTTP server.< / p >
2024-01-17 22:56:53 +01:00
< p > An HTTP request of the < code > multipart/form-data< / code > mime type will be sent to the
< code > path< / code > URL. The form data includes artifacts that represent the topology
and/or weights of the model. In the case of Keras-style < code > tf.Model< / code > , two
blobs (files) exist in form-data:< / p >
< ul >
< li > A JSON file consisting of < code > modelTopology< / code > and < code > weightsManifest< / code > .< / li >
< li > A binary weights file consisting of the concatenated weight values.
These files are in the same format as the one generated by
2024-09-10 17:30:23 +02:00
< a href = "https://js.tensorflow.org/tutorials/import-keras.html" target = "_blank" class = "external" > tfjs_converter< / a > .< / li >
2024-01-17 22:56:53 +01:00
< / ul >
< p > The following code snippet exemplifies the client-side code that uses this
function:< / p >
2024-09-10 17:30:23 +02:00
< pre > < code class = "js" > < span class = "hl-0" > const< / span > < span class = "hl-1" > < / span > < span class = "hl-2" > model< / span > < span class = "hl-1" > = < / span > < span class = "hl-5" > tf< / span > < span class = "hl-1" > .< / span > < span class = "hl-3" > sequential< / span > < span class = "hl-1" > ();< / span > < br / > < span class = "hl-5" > model< / span > < span class = "hl-1" > .< / span > < span class = "hl-3" > add< / span > < span class = "hl-1" > (< / span > < br / > < span class = "hl-1" > < / span > < span class = "hl-5" > tf< / span > < span class = "hl-1" > .< / span > < span class = "hl-5" > layers< / span > < span class = "hl-1" > .< / span > < span class = "hl-3" > dense< / span > < span class = "hl-1" > ({< / span > < span class = "hl-5" > units:< / span > < span class = "hl-1" > < / span > < span class = "hl-4" > 1< / span > < span class = "hl-1" > , < / span > < span class = "hl-5" > inputShape:< / span > < span class = "hl-1" > [< / span > < span class = "hl-4" > 100< / span > < span class = "hl-1" > ], < / span > < span class = "hl-5" > activation:< / span > < span class = "hl-1" > < / span > < span class = "hl-8" > ' sigmoid' < / span > < span class = "hl-1" > }));< / span > < br / > < br / > < span class = "hl-0" > const< / span > < span class = "hl-1" > < / span > < span class = "hl-2" > saveResult< / span > < span class = "hl-1" > = < / span > < span class = "hl-6" > await< / span > < span class = "hl-1" > < / span > < span class = "hl-5" > model< / span > < span class = "hl-1" > .< / span > < span class = "hl-3" > save< / span > < span class = "hl-1" > (< / span > < span class = "hl-5" > tf< / span > < span class = "hl-1" > .< / span > < span class = "hl-5" > io< / span > < span class = "hl-1" > .< / span > < span class = "hl-3" > http< / span > < span class = "hl-1" > (< / span > < br / > < span class = "hl-1" > < / span > < span class = "hl-8" > ' http://model-server:5000/upload' < / span > < span class = "hl-1" > , {< / span > < span class = "hl-5" > requestInit:< / span > < span class = "hl-1" > {< / span > < span class = "hl-5" > method:< / span > < span class = "hl-1" > < / span > < span class = "hl-8" > ' PUT' < / span > < span class = "hl-1" > }}));< / span > < br / > < span class = "hl-5" > console< / span > < span class = "hl-1" > .< / span > < span class = "hl-3" > log< / span > < span class = "hl-1" > (< / span > < span class = "hl-5" > saveResult< / span > < span class = "hl-1" > );< / span >
< / code > < button type = "button" > Copy< / button > < / pre >
2024-01-17 22:56:53 +01:00
< p > If the default < code > POST< / code > method is to be used, without any custom parameters
such as headers, you can simply pass an HTTP or HTTPS URL to < code > model.save< / code > :< / p >
2024-09-10 17:30:23 +02:00
< pre > < code class = "js" > < span class = "hl-0" > const< / span > < span class = "hl-1" > < / span > < span class = "hl-2" > saveResult< / span > < span class = "hl-1" > = < / span > < span class = "hl-6" > await< / span > < span class = "hl-1" > < / span > < span class = "hl-5" > model< / span > < span class = "hl-1" > .< / span > < span class = "hl-3" > save< / span > < span class = "hl-1" > (< / span > < span class = "hl-8" > ' http://model-server:5000/upload' < / span > < span class = "hl-1" > );< / span >
< / code > < button type = "button" > Copy< / button > < / pre >
2024-01-17 22:56:53 +01:00
< p > The following GitHub Gist
2024-09-10 17:30:23 +02:00
< a href = "https://gist.github.com/dsmilkov/1b6046fd6132d7408d5257b0976f7864" target = "_blank" class = "external" > https://gist.github.com/dsmilkov/1b6046fd6132d7408d5257b0976f7864< / a >
implements a server based on < a href = "https://github.com/pallets/flask" target = "_blank" class = "external" > flask< / a > that
2024-01-17 22:56:53 +01:00
can receive the request. Upon receiving the model artifacts via the requst,
2024-09-10 17:30:23 +02:00
this particular server reconstitutes instances of < a href = "https://keras.io/models/model/" target = "_blank" class = "external" > Keras
2024-01-17 22:56:53 +01:00
Models< / a > in memory.< / p >
2024-09-10 17:30:23 +02:00
< / div > < div class = "tsd-parameters" > < h4 class = "tsd-parameters-title" > Parameters< / h4 > < ul class = "tsd-parameter-list" > < li > < span > < span class = "tsd-kind-parameter" > path< / span > : < span class = "tsd-signature-type" > string< / span > < / span > < div class = "tsd-comment tsd-typography" > < p > A URL path to the model.
Can be an absolute HTTP path (e.g.,
'< a href = "http://localhost:8000/model-upload" target = "_blank" class = "external" > http://localhost:8000/model-upload< / a > )') or a relative path (e.g.,
'./model-upload').< / p >
< / div > < div class = "tsd-comment tsd-typography" > < / div > < / li > < li > < span > < code class = "tsd-tag" > Optional< / code > < span class = "tsd-kind-parameter" > loadOptions< / span > : < a href = "../interfaces/tf.io.LoadOptions.html" class = "tsd-signature-type tsd-kind-interface" > LoadOptions< / a > < / span > < div class = "tsd-comment tsd-typography" > < p > Optional configuration for the loading. It includes the
following fields:< / p >
2024-01-17 22:56:53 +01:00
< ul >
< li > weightPathPrefix Optional, this specifies the path prefix for weight
files, by default this is calculated from the path param.< / li >
< li > fetchFunc Optional, custom < code > fetch< / code > function. E.g., in Node.js,
the < code > fetch< / code > from node-fetch can be used here.< / li >
< li > onProgress Optional, progress callback function, fired periodically
before the load is completed.< / li >
< / ul >
< / div > < div class = "tsd-comment tsd-typography" > < / div > < / li > < / ul > < / div > < h4 class = "tsd-returns-title" > Returns < a href = "../interfaces/tf.io.IOHandler.html" class = "tsd-signature-type tsd-kind-interface" > IOHandler< / a > < / h4 > < p > An instance of < code > IOHandler< / code > .< / p >
2024-09-10 17:30:23 +02:00
< div class = "tsd-comment tsd-typography" > < h4 class = "tsd-anchor-link" > < a id = "Doc" class = "tsd-anchor" > < / a > Doc< a href = "#Doc" aria-label = "Permalink" class = "tsd-anchor-icon" > < svg viewBox = "0 0 24 24" > < use href = "../assets/icons.svg#icon-anchor" > < / use > < / svg > < / a > < / h4 > < / div > < aside class = "tsd-sources" > < ul > < li > Defined in node_modules/.pnpm/@tensorflow+tfjs-core@4.21.0/node_modules/@tensorflow/tfjs-core/dist/io/http.d.ts:129< / li > < / ul > < / aside > < / li > < / ul > < / section > < / div > < div class = "col-sidebar" > < div class = "page-menu" > < div class = "tsd-navigation settings" > < details class = "tsd-accordion" > < summary class = "tsd-accordion-summary" > < h3 > < svg width = "20" height = "20" viewBox = "0 0 24 24" fill = "none" > < use href = "../assets/icons.svg#icon-chevronDown" > < / use > < / svg > Settings< / h3 > < / summary > < div class = "tsd-accordion-details" > < div class = "tsd-filter-visibility" > < span class = "settings-label" > Member Visibility< / span > < ul id = "tsd-filter-options" > < li class = "tsd-filter-item" > < label class = "tsd-filter-input" > < input type = "checkbox" id = "tsd-filter-inherited" name = "inherited" checked / > < svg width = "32" height = "32" viewBox = "0 0 32 32" aria-hidden = "true" > < rect class = "tsd-checkbox-background" width = "30" height = "30" x = "1" y = "1" rx = "6" fill = "none" > < / rect > < path class = "tsd-checkbox-checkmark" d = "M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke = "none" stroke-width = "3.5" stroke-linejoin = "round" fill = "none" > < / path > < / svg > < span > Inherited< / span > < / label > < / li > < / ul > < / div > < div class = "tsd-theme-toggle" > < label class = "settings-label" for = "tsd-theme" > Theme< / label > < select id = "tsd-theme" > < option value = "os" > OS< / option > < option value = "light" > Light< / option > < option value = "dark" > Dark< / option > < / select > < / div > < / div > < / details > < / div > < / div > < div class = "site-menu" > < nav class = "tsd-navigation" > < a href = "../index.html" > < svg class = "tsd-kind-icon" viewBox = "0 0 24 24" > < use href = "../assets/icons.svg#icon-1" > < / use > < / svg > < span > @vladmandic/face-api - v1.7.14< / span > < / a > < ul class = "tsd-small-nested-navigation" id = "tsd-nav-container" data-base = ".." > < li > Loading...< / li > < / ul > < / nav > < / div > < / div > < / div > < footer > < / footer > < div class = "overlay" > < / div > < / body > < / html >