我有一个人脸识别项目,其中包括招募人员,然后训练模型。完成所有操作后,我将调用识别脚本来识别人脸。
[在注册时,我首先使用caffe model
检测面部。然后,我使用开放的面部识别器提取面部嵌入,然后将所有面部嵌入保存在pickle文件中。在培训中,我正在使用rbf内核进行培训。
假设我下面有每个人拥有20张图像的数据集
1. personA
image1.jpg
image2.jpg
...
...
image20.jpg
2. personB
image1.jpg
image2.jpg
...
...
image20.jpg
3. personC
image1.jpg
image2.jpg
...
...
image20.jpg
4. personD
image1.jpg
image2.jpg
...
...
image20.jpg
如果通过personC
的测试图像,则将以personC
的置信度获得识别结果为92%
。现在,如果我用30-40张图像招募更多的人,那么我看到的是personC的置信度得分已降至64%,我不确定为什么会这样。以下是我如何训练模型的方法:
params = {"C": [0.001, 0.01, 0.1, 1.0, 10.0, 100.0, 1000.0], "gamma": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]}
model = GridSearchCV(SVC(kernel="rbf", gamma="auto", probability=True), params, cv=3, n_jobs=-1)
model.fit(data["embeddings"], labels)
在上面的代码中,data["embeddings"]
是人物的面部嵌入,而标签是名称。
所以我注意到,一旦我开始添加越来越多的人并拥有更多的图像,那么对他们来说拥有较少图像的人的信心就会开始降低。这是真的。?有没有人遇到过这类问题?我该如何解决。
这完全有道理。
如果您的数据集中只有一个人/一张图像,并且您对模型进行了训练,则模型的准确性应接近100%。随着模型添加了更多面孔/人物,面孔所属的人也越来越模糊。
随着数据集的增长,您的模型应该尝试将数据推广到不过度拟合的情况。 PersonC可能看起来与您数据集中的另一个人相似。您的模型可能不是正确的选择,超级参数错误,或者某些配置不正确。那部分,我无法评论。
对于图像较少的人,其信心会降低。那是你所观察的吗?您是否尝试过与数据集中的许多人一起尝试?通过查看您是否有更准确的预测,您应该可以自己回答这个问题。
它也可能有助于绘制其中一些图像,以便您查看分类是否合理。