【问题标题】:ML5 FeatureExtractor addImage not workingML5 FeatureExtractor addImage 不工作
【发布时间】:2020-06-07 17:17:20
【问题描述】:

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

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

我的代码似乎正确,according to the documentation - 使用视频是可选的,所以我希望我应该能够在手动添加图像后重新训练模型。我使用了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);
    })
}

【问题讨论】:

  • 哦,谢谢,但这是一个错字...在我自己的项目中,这部分有效...

标签: javascript machine-learning ml5 ml5.js


【解决方案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

【讨论】:

    猜你喜欢
    • 2018-12-19
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 2019-01-04
    相关资源
    最近更新 更多