Маленькое дополнение к моему предыдущему замечанию: если запустить оптимизацию "просто так", то в зависимости от начального условия система скатится к какому-нибудь локальному минимуму (при котором распознавание на обучающей выборке будет безошибочным), которое весьма вероятно будет основано на каком-нибудь подобном малосодержательном критерии.
Для проверки можно применить следующий эксперимент: перемешать фотографии и разбить их на классы случайным образом. Если и при этом система "научится" правильно распознавать не хуже, чем сначала, то это будет означать, что она учится отличать не лица, а конкретные фотографии. Это не то, что требуется.
В любом случае заведомо не будет хуже, если искусственным образом существенно увеличить объем выборки, применив к фотографиям разные преобразования. Например, изменить яркость всей картинки, менять яркости частей, имитируя изменение освещенности и положения источника света. Покрутить фотографии на разные небольшие углы или придумать более хитрые преобразования, имитирующие съемку под разными углами. Сдвиги лица на фотографии. Наложение на фотографию небольших шумов, меняющих отдельные пиксели.
Таким образом объем выборки можно увеличить в сотни раз. Причем фишка в том, что человеку эти преобразования совершенно не помешают решить задачу узнавания (он даже может не заметить разницу), что означает, что при этом сохраняются все те признаки, которые для узнавания необходимы. И в то же самое время при этом будут меняться значения практически во всех пикселях, что и будет препятствовать сети учиться на них или запоминать фотографии.
Понятно, что нужно предусмотреть выделение некоторой части фотографий (от первоначального количества - по одной-две на человека) для тестового множества, т.е. не давать их для обучения, а потом проверить результаты на них. Туда же замечательно пойдут и преобразованные фотографии.
Также может помочь добавление "негатива", т.е. посторонних фотографий или изображений того, что не является человеческими лицами (вплоть до случайных шумов), на которых все нейроны должны давать отрицательный ответ.
Но все равно нужно снижать размерность. Можно попробовать делить фотографию на области и усреднять значения интенсивностей на них. Но мне лично это не нравится. Я считаю, что решение должно быть "естественным".
Если бы я решал эту задачу по-настоящему (не как учебный процесс), то прежде всего потратил бы время на то, что смотрел бы на фотографии и попытался формализовать, по каким признакам я сам провожу узнавание. Достаточно очевидно, что при взгляде на фотографию человек проводит сегментацию, т.е. выделяет известные составные части: глаза, рот, нос, уши, контур головы. Важную роль играет прическа. Но в первую очередь глаза (не зря же когда по телевизору показывают сюжеты, на которых желают сделать человека неузнаваемым, то часто ограничиваются затемнением глаз).
Если это удастся сделать, то далее можно выделить явные и совершенно понятные человеку признаки, связанные с соотношениями размеров или положений частей лица, их формой и т.д. Другой способ использовать эту информацию - сделать деление на области, привязанное к сегментации лица.
Возможно, кстати, в качестве курсового проекта научить компьютер искать глаза на изображении. Тут вполне можно сделать плавающее окно очень небольшого размера и сделать примерно то, что Вы планировали для всего лица в целом. Размерность будет существенно меньше, а данных - больше. Плюс - учет очевидной симметрии.
Эту работу можно положить в основу, скажем, следующего курсового проекта уже по распознаванию лиц.
Что же касается материалов, то поищите статьи по ключевым словам "face recognition" на поисковиках
http://scholar.google.com/ и
http://citeseer.ist.psu.edu/
Добавлено спустя 1 минуту 27 секунд:
Не надо называть меня "господин PAV", пожалуйста, мне это неудобно.