如何在tensorflow.js中从头训练自定义对象检测器?

时间:2019-12-13 12:12:23

标签: tensorflow.js

我遵循了多个示例,以在TensorflowJS中训练自定义对象检测器。我面临的主要问题是使用预训练模型的每个地方。

预训练的模型适用于一般用例,但自定义方案失败。例如,take this是Tensorflowjs官方示例的示例,这里使用的是mobilenet,并且mobilenet和mobilenet的图像尺寸限制为224x224,这无法实现所有目的,因为我的图像很大且比例也不相同,因此调整大小不是一个选择。

我尝试了多个示例,所有示例都遵循相同的路径。

我想要什么? 我可以在Tensorflow.js中从头训练自定义对象的任何示例。

尽管答案听起来很简单,但请相信我,我已经搜索了好几天。任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:2)

当前尚无法在nodejs中使用tensorflow对象检测api。但是图像大小不应受到限制。除了调整大小外,您还可以裁剪图像并仅保留包含要检测对象的部分。

  

一种方法就像将图像分割为224x224并针对所有分区运行,但是如果对象位于两个分区之间怎么办

不需要为此图像进行分区。在标记图像时,您将需要知道检测到的框的x,y坐标(从左上角开始)和w,h。您只需要裁剪将包含框的图像的一部分。在坐标x - (224-w)/2, y- (224-h)/2处裁剪可能是一个不错的开始。这些坐标有两个问题:

  • 检测到的框将始终位于中心,因此训练会偏向。为了防止这种情况,可以使用随机数因子。 x - (224-w)/r , y- (224-h)/r,其中r可以从[1-10]中随机获取,例如

  • 如果检测到的框大于224 * 224,则可能在裁剪之前首先选择调整视频的大小以保持其比例。在这种情况下,需要根据调整大小使用的尺寸来重新调整框尺寸(w,h)