Tensorflow 将自定义类添加到预先训练的数据集中

Tensorflow 将自定义类添加到预先训练的数据集中,tensorflow,computer-vision,object-detection,yolo,pre-trained-model,Tensorflow,Computer Vision,Object Detection,Yolo,Pre Trained Model,我使用已经训练(预先训练)的数据集,使用yolo+tensorflow进行目标检测。 我的推理结果很好,但现在我想“添加”一个新类到预先训练的数据集中。 在预先训练的数据集中有80个类如何添加自定义类并使其总数达到81或82? 推理git hub.在迁移学习的情况下,使用“Imagenet”、“fashion mnist”等著名数据集上预先训练的权重。这些数据集定义了许多类和标签,它们可能与我们的数据集相同,也可能不同。最佳实践是在预先训练的模型输出的输出层之上添加层。例如,在keras: 从t

我使用已经训练(预先训练)的数据集,使用yolo+tensorflow进行目标检测。 我的推理结果很好,但现在我想“添加”一个新类到预先训练的数据集中。 在预先训练的数据集中有80个类如何添加自定义类并使其总数达到81或82?
推理git hub.

在迁移学习的情况下,使用“Imagenet”、“fashion mnist”等著名数据集上预先训练的权重。这些数据集定义了许多类和标签,它们可能与我们的数据集相同,也可能不同。最佳实践是在预先训练的模型输出的输出层之上添加层。例如,在keras:

从tensorflow.keras.applications导入mobilenet
从tensorflow.keras.layers导入致密、平坦
输出=mobilenet(包括\u top=False)
展平=展平()(输出)
预测=密集(类的数量,激活='softmax')(层)
在这种情况下,您需要使用数据集训练(或者更好地称之为微调)模型。mobilenet网络将使用预先训练的权重,最后一层将仅根据您定义的类数的数据集进行训练

您也可以使用:

从tensorflow.keras.applications导入mobilenet
preds=mobilenet(包括顶部=Flase,类=类的数量,权重='imagenet')
有关更多信息,您可以参考:
如果您已经为80个类训练了模型,并且需要添加另一个类,那么最好从以前保存的检查点开始重新训练模型。(网络体系结构的设计应考虑自开始以来的总类数,因为在输出层,您将拥有与类数相等的神经元,如果不是这种情况,您不能向数据中添加其他类,因为网络不是为其设计的。)这将利用以前课程上完成的初始训练。用于重新训练的数据现在应包含所有课程(包括所有以前的课程和要添加的新课程)。这类似于从上次训练的检查点(80个课程)初始化权重,然后再次使用更多数据进行训练(包括所有要添加的类80+以上)允许反向传播通过所有层。

对于新类,您需要添加相关数据并再次训练模型。您可以在链接中看到如何为tensorflow对象检测api创建自己的数据集-感谢您的帮助。请告诉我如何“添加”YLO-v2或YLO-v3的自定义对象?有人能建议其他方法将类添加到预先训练的数据集中吗??