Это метаданные моей модели обслуживания
"metadata": {"signature_def": {
"signature_def": {
"serving_default": {
"inputs": {
"vgg16_input": {
"dtype": "DT_FLOAT",
"tensor_shape": {
"dim": [
{
"size": "-1",
"name": ""
},
{
"size": "224",
"name": ""
},
{
"size": "224",
"name": ""
},
{
"size": "3",
"name": ""
}
],
"unknown_rank": false
},
"name": "serving_default_vgg16_input:0"
}
}...
К сожалению, я не знаю, как с ней разговаривать из NodeJ. Как преобразовать локальное изображение в действительный 224,224,3 DT_FLOAT Tensor ...
В Python я могу сделать это с помощью этого кода, но я хотел бы версию nodejs
import numpy as np
import requests
from keras.preprocessing import image
image_path = './data/black/fhb2l97vdi8qc0rt5ow3.jpg'
img = image.img_to_array(image.load_img(image_path, target_size=(224, 224))) / 255.
img = img.astype('float16')
payload = {
"instances": [{'vgg16_input': img.tolist()}]
}
r = requests.post('http://ip:port/v1/models/color:predict', json=payload)
print(r.content)
Пока мой код
var request = require('request');
var fs = require('fs');
var myImg = __dirname + '/../tensorflow2/data/black/0a13y2gtunswi8ox4bjf.jpg';
var options = {
method: 'POST',
url: `http://ip:port/v1/models/color:predict`,
json:{
instances: [{'vgg16_input': ??????}]
}
};
request(options, function (err, resp, body) {
if (err)
cb(err);
console.log(body);
});
Может быть, я мог бы использовать какую-нибудь функцию из tenorflowjs ...