我目前正在使用经过预先培训的MobileNet模型,该模型对来自1000个类别的图像进行分类。出于我的IOS应用程序的目的,我只需要它来识别/分类场景中的一种类型的对象。我如何训练模型,以便它只对我需要的一个对象进行分类,但是它做得非常好?
我是机器学习的新手,不熟悉转学习技巧。进行这种类型的训练会减少模型大小并使其更有效地识别我需要的一个对象吗?如果是的话,有什么资源可以教我如何为我的目标继续训练这个预先训练过的模型。
答案 0 :(得分:0)
简而言之,您希望将1000路分类器转换为二元分类器。 下面的答案假设您可以访问原始数据,并且您知道如何训练原始模型(即,您可以访问培训脚本)。这是:
假设您只对单个类别C感兴趣,您希望首先将数据的所有实例(x,C)映射到(x,1),将所有其他实例(x,not_C)映射到(x,0) ),然后在结果数据上训练模型(或者,如果训练脚本也接受模型的起点,则继续训练预训练模型)。
该模型将失去识别非C类之间的能力,并且希望能够更好地区分C与非C实例。
注意:一种不太常见的方法是将模型实际限制为仅输出0或1,并将目标更改为二进制softmax。但是,这需要对模型的架构进行一些操作,这是你可以不用的。