0

我正在关注 ML5.js featureExtractor 的基本示例。我没有使用视频。加载模型后,我向它添加新图像,然后再次训练。我收到以下错误:

Mobilenet.js:323 Uncaught (in promise) 错误:批量大小为 0 或 NaN。请选择一个非零分数。在 t。(Mobilenet.js:323)

根据文档,我的代码似乎是正确的- 使用视频是可选的,所以我希望我应该能够在手动添加图像后重新训练模型。我使用了addImage函数的回调,以确保在调用之前确实添加了图像train

let added = 0
let classifier
let featureExtractor = ml5.featureExtractor('MobileNet', modelLoaded)
function modelLoaded() {
    classifier = featureExtractor.classification()
    classifier.addImage(document.getElementById('person1'), 'nomask', addedImage)
    classifier.addImage(document.getElementById('mask1'), 'mask', addedImage)
}

// this gets called twice, but then train goes wrong
function addedImage(){
    added++
    if(added == 2){
    classifier.train((lossValue) => {
        console.log('Loss is', lossValue);
    })
}
4

1 回答 1

1

您需要添加至少 3 张图像才能进行训练。

以下代码应该可以工作。

let added = 0;
let classifier;
let featureExtractor = ml5.featureExtractor('MobileNet', modelLoaded);

function modelLoaded() {
    classifier = featureExtractor.classification()
    classifier.addImage(document.getElementById('person1'), 'nomask', addedImage);
    classifier.addImage(document.getElementById('person2'), 'nomask', addedImage);
    classifier.addImage(document.getElementById('mask1'), 'mask', addedImage);
}

function addedImage(){
    added++;
    if(added == 3){
    classifier.train((lossValue) => {
        console.log('Loss is', lossValue);
    });
}

一个工作示例:https ://glitch.com/edit/#!/ml5-feature-extractor-addimage

于 2020-07-06T14:12:19.893 回答