【问题标题】:Darknet Yolov3 - Custom training on pre-trained modelDarknet Yolov3 - 预训练模型的自定义训练
【发布时间】:2021-10-24 17:56:32
【问题描述】:
实际上,在暗网 yolov3 模型中,coco.names 文件包含 80 个类的标签。
现在,如果我想训练一个只有两个标签的自定义模型,其中一个标签已经存在于 coco.names 中,而另一个标签不存在。
例如,我想训练一个模型来检测手机和单反相机,所以手机类已经存在于 coco.names 中,而单反相机不在其标签文件中。
那么我可以使用手机和数码单反相机两类来训练自定义模型,并仅提供数码单反相机的数据进行训练,它将预测数码单反相机和手机,还是我应该同时使用手机和数码单反图像的数据进行训练或者有没有其他出路。
我对 ML 有点陌生,所以任何帮助都会很棒
谢谢
【问题讨论】:
标签:
python-3.x
tensorflow
object-detection
darknet
darkflow
【解决方案1】:
因此,您想要微调预训练模型。
您需要将类视为网络的一组末端节点,标签(电话、相机)只是它们的命名约定,并为我们提供视觉指导。
这些节点与网络的前一层完全连接(具有相关权重),这些中间连接的总数取决于您拥有的端节点(类)的数量。
使用经过充分训练的模型,您不能只选择所需的节点,然后取出其余节点,然后再添加一些。因为前一层(和整个网络)经过训练,可以在考虑一定数量的最终节点的情况下给出估计/预测。
所以基本上你需要对最后一层(头部)进行完全重置,然后使用所需数量的类重新启动它。这里的想法是,您可以利用之前在更广泛数据集上的训练工作,并将其微调到您想要的数据。
简短的回答,您需要两者的数据,并且需要更改模型以仅接受 2 个类。
要为新的类和数据数量配置那个特定的模型,相信你可以找到一些指导和说明here