Используя javascript, я пытаюсь использовать ml5.js версии 0.5.0, чтобы определить, начинаю ли я, середина или конец видео. Да, я знаю, что могу сделать это другими способами, но я хотел бы сделать это с помощью ML. Так, например, я добавляю начальное изображение на 0, среднее изображение на длительность/2 и конечное изображение на длительность. Кажется, что добавление этих изображений работает, т.е. обратный вызов для добавления изображения не возвращает ошибку. Проблема, с которой я продолжаю сталкиваться, заключается в том, что когда я пытаюсь обучить () эти добавленные изображения, используя модель MobileNet в качестве моей базы, я получаю следующую трассировку стека:
`backend_webgl.ts:918 Uncaught (in promise) TypeError: Cannot read property 'shape' of undefined
at t.fusedBatchMatMul (backend_webgl.ts:918)
at tf-core.esm.js:17
at engine.ts:462
at t.scopedRun (engine.ts:404)
at t.runKernel (engine.ts:459)
at matMul_ (tf-core.esm.js:17)
at Object.matMul (tf-core.esm.js:17)
at bt (tf-layers.esm.js:17)
at tf-layers.esm.js:17
at engine.ts:393`
Я не делаю ничего впечатляющего при настройке мл5:
загрузка модели и создание регрессии:
`this["mlsExtractor"] = ml5["featureExtractor"]('MobileNet', this.extractorLoaded.bind(this));`
`extractorLoaded() {
var video = getVideo();
console.log("extractor loaded...");
this["regressor"] = this["mlsExtractor"].regression(video, function () {
console.log("ml5 regressor loaded...");
this["mlsloaded"] = true;
}.bind(this));
}`
Добавьте изображения из видео. Рес что-то возвращает. Хотел отметить, что если я не передаю видео в addImage, я получаю сообщение об ошибке о неправильном размере изображения. Не уверен, связано это или нет.
`var video = this.getVideo();
if (this["mlsloaded"] && this["regressor"]) {
this["regressor"].addImage(video, 'finish', function (err, res) {
if(err){
console.log("error", err);
return;
}
console.log("res", res)
});
}else{
console.log("ml5 not loaded yet...")
}`
После того, как я добавил как минимум 3 или более изображений, я нажимаю кнопку поезда. Я заметил, что меньше 2 также дает ошибки, поэтому я пробовал тренироваться до 30, и все равно не получалось.
`this["regressor"].train(function (loss) {
console.log("training", loss);
});`
Вот где я вижу эту трассировку стека. Я новичок в ml, tensorflow.js и ml5js. Я просматривал похожие примеры (https://www.openprocessing.org/sketch/565628) выполняю задачу такого типа, но мне не хватает документации. Похоже, WIP на ml5js.org.
Любая помощь приветствуется!
Забыл упомянуть. После нажатия на поезд и просмотра трассировки стека я могу сохранить модель. Не уверен, что это поможет кому-то, но просто выложу это там. Как то странно, что поезд провалится, но все равно создаст модель.