Я также сталкиваюсь с другой проблемой, когда я делаю "npm i @ tenorflow-models / mobil enet".
Вот скриншот.
Кажется, проблема с пакетом.
Вы можете попробовать сделать это в качестве альтернативы.
Поэтому я в конечном итоге использую CDN для TensorFlow mobil enet
Обратитесь к приведенным ниже строкам кода
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.7.1/dist/tf.min.js"> </script> //
<!-- Load the MobileNet model. -->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/mobilenet@2.0.4/dist/mobilenet.min.js"> </script>
Вот шаги:
1. Создайте простой проект узла, используя npm init. Это создаст пакет. json файл. Это где пакеты находятся или перечислены.
2. Обратите внимание, что вам нужно нажать «npm install express --save» в командной строке, чтобы пакет express был добавлен в пакеты. json
3. Создайте index. html файл со следующим кодом. На стороне пользовательского интерфейса вам будет предложено загрузить изображение, которое будет оцениваться на консоли или будет отображаться в виде сообщения с предупреждением.
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.7.1/dist/tf.min.js"> </script> //
<!-- Load the MobileNet model. -->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/mobilenet@2.0.4/dist/mobilenet.min.js"> </script>
<input type='file' />
<br><img id="myImg" src="#" alt="your image will be displayed here" >
<script>
window.addEventListener('load', function() {
document.querySelector('input[type="file"]').addEventListener('change', function() {
if (this.files && this.files[0]) {
var img = document.querySelector('img'); // $('img')[0]
img.src = URL.createObjectURL(this.files[0]); // set src to blob url
img.onload = imageIsLoaded;
}
});
});
async function run() {
const img = document.getElementById('myImg');
print(img)
const version = 2;
const alpha = 0.5;
// Load the model.
const model = await mobilenet.load({version, alpha});
// Classify the image.
const predictions = await model.classify(img);
console.log('Predictions');
console.log(predictions);
// Get the logits.
const logits = model.infer(img);
console.log('Logits');
logits.print(true);
// Get the embedding.
const embedding = model.infer(img, true);
console.log('Embedding');
embedding.print(true);
}
function imageIsLoaded() {
run();
}
</script>
Шаг 3: Создать сервер. js. Этот файл будет использоваться для визуализации индексного файла на вашем локальном сервере с использованием пакета express npm. Ниже приведен код:
const express = require('express');
app = express();
app.get('/',function(req,res) {
res.sendFile('/demo/index.html', { root: __dirname });
});
const port = 3000
app.listen(port, function(){
console.log(`Listening at port ${port}`);
})
Шаг 4: Go в браузер и нажмите localhost: 3000
Ниже приведен рабочий скриншот проекта.
ОБНОВЛЕНИЕ: ЗАГРУЗКА NODEJS
Похоже, проблема в последовательности установки
Шаг 1: Установите следующие пакеты
npm install @tensorflow/tfjs @tensorflow/tfjs-node --save
// or...
npm install @tensorflow/tfjs @tensorflow/tfjs-node-gpu --save
Шаг 2: Теперь вы можете установить @ tenorflow-models / mobil enet -save
npm install @tensorflow-models/mobilenet -save
Шаг 3: Сервер. js Пример использования
const tf = require('@tensorflow/tfjs')
// Load the binding (CPU computation)
const mobilenet = require('@tensorflow-models/mobilenet');
// for getting the data images
var image = require('get-image-data')
image('./cup.jpg', async function (err, image) {
const numChannels = 3;
const numPixels = image.width * image.height;
const values = new Int32Array(numPixels * numChannels);
pixels = image.data
for (let i = 0; i < numPixels; i++) {
for (let channel = 0; channel < numChannels; ++channel) {
values[i * numChannels + channel] = pixels[i * 4 + channel];
}
}
const outShape = [image.height, image.width, numChannels];
const input = tf.tensor3d(values, outShape, 'int32');
await load(input)
});
async function load(img){
// Load the model.
const model = await mobilenet.load();
// Classify the image.
const predictions = await model.classify(img);
console.log('Predictions: ');
console.log(predictions);
}
Скриншот прогноза