У меня есть проект распознавания лиц, который состоит из регистрации человека и последующего обучения модели. Когда все сделано, я вызываю сценарий распознавания для распознавания лица.
При регистрации я сначала обнаруживаю лица с помощью 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 изображениями, то я вижу, что оценка уверенности человека C снижается до 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"]
- это вложения лиц, а метки - это имена.
Итак, я заметил, что как только я начинаю добавлять все больше и больше людей с большим количеством изображений, уверенность людей, у которых есть меньше изображений, начинает снижаться. Это правда.? Есть ли кто-нибудь, кто сталкивался с подобными проблемами? Как я могу решить эту проблему.