Я работал над проектом под руководством профессора в моем университете, чтобы узнать людей из их футсканов. Я пытался сделать это с помощью сиамской нейронной сети. По сути, я буду извлекать векторы объектов и сравнивать их с векторами элементов ног, присутствующими в базе данных.
Используемые мной футсканы выглядят так: - Пример (уменьшено до 96x96)
В своей первой попытке я следовал этому руководству https://towardsdatascience.com/one-shot-learning-with-siamese-networks-using-keras-17f34e75bb3d и использовал его с моими данными. Тем не менее, я получал много колебаний в 20-точечной точности теста одним выстрелом, время от времени повышаясь до 60%, а затем до 10-12% после следующих 1000 эпох.
Рисунок архитектуры, используемой в вышеприведенном руководстве - архитектура
Я рассмотрел возможность того, что мой набор данных был более сложным, чем тот, который использовался в руководстве для идентификации буквы и поэтому решил попробовать архитектуру fa cenet. Однако я не могу получить более 20-25% 20-сторонней точности теста одним выстрелом, используя это. Точность, однако, здесь гораздо более стабильна.
Теперь мой вопрос, является ли эта точность низкой из-за моего небольшого размера набора данных (у меня есть набор данных 900 футов отдельных людей, то есть 900 классов с 8 изображениями в каждом), или я должен попробовать какую-то другую архитектуру? Кроме того, может ли какая-нибудь помощь перенести обучение, скажем, с использованием весов из fa cenet?
Другая возможность может состоять в том, что 8 примеров футов, представленных для каждого в моем наборе данных, очень похожи (минимально разница в освещении, почти всегда в центре, и т. д. c), которая могла бы помешать CNN должным образом извлечь особенности. Если это так, я должен увеличить изображения?
Любая помощь будет высоко ценится!