ML / Tensorflow初学者。

是否可以将这些已经训练过的模型中的任何一个加载到tfjs上并在那里进行重新训练,然后导出到Downloads或Tensorflow python是唯一的选择?

我看到此过程在Tensorflow Python的tutorial中得到了很好的描述和记录,但是不幸的是,我找不到任何文档/教程来使用tfjs在浏览器上重新训练对象检测模型(图像分类是,对象检测否) 。

我看到了如何使用npm加载coco-ssd模型,然后可能甚至触发将其保存到下载中,但是呢:


配置文件(需要修改它,因为我只想拥有一个类,而不是90个类)
带注释的图像(.jpg,.xml和.csv)
标签.pbtxt
.record文件


有没有办法重新训练诸如ssd_inception_v2_coco之类的ssd模型,而我没有找到正确的Google关键字,或者只是在当前框架状态下无法实现?

最佳答案

您可以通过将coco-ssd模型用作特征提取器来使用转移学习。可以在here中看到转移学习的示例。

这是一个使用特征提取器作为新顺序模型的输入来提取特征的模型。

const loadModel = async () => {
  const loadedModel = await tf.loadModel(MODEL_URL)
  console.log(loadedModel)
  // take whatever layer except last output
  loadedModel.layers.forEach(layer => console.log(layer.name))
  const layer = loadedModel.getLayer(LAYER_NAME)
  return tf.model({ inputs: loadedModel.inputs, outputs: layer.output });
}
loadModel().then(featureExtractor => {
  model = tf.sequential({
    layers: [
      // Flattens the input to a vector so we can use it in a dense layer. While
      // technically a layer, this only performs a reshape (and has no training
      // parameters).
      // slice so as not to take the batch size
      tf.layers.flatten(
        { inputShape: featureExtractor.outputs[0].shape.slice(1) }),
      // add all the layers of the model to train
      tf.layers.dense({
        units: UNITS,
        activation: 'relu',
        kernelInitializer: 'varianceScaling',
        useBias: true
      }),
      // Last Layer. The number of units of the last layer should correspond
      // to the number of classes to predict.
      tf.layers.dense({
        units: NUM_CLASSES,
        kernelInitializer: 'varianceScaling',
        useBias: false,
        activation: 'softmax'
      })
    ]
  });
})


要从90种coco-ssd中检测出一个物体,可以简单地对coco-ssd的预测使用条件测试。

const image = document.getElementById(id)

cocoSsd.load()
  .then(model => model.detect(image))
  .then(prediction => {
if (prediction.class === OBJECT_DETECTED) {
  // display it the bbox to the user}
})


如果该类在coco-ssd中不存在,则需要构建一个检测器。

关于python - 如何在tensorflow.js上加载/重新训练/保存ssd_inception_v2_coco?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54897356/

10-12 18:51