Андрей Валитов, путь классический: изучайте математику и computer science настолько глубоко, насколько хватает времени и сил, развить профессиональные навыки на хорошем фундаменте не составит большого труда.
Программирование – это ремесло и, как в любом ремесле, самое главное после получения хорошего образования – найти хорошего ментора, который поможет вам овладеть практическими навыками.
Из личного опыта: если много вызовов функций из питончика, то накладные расходы на преобразование в PyObject и обратно занимают очень много времени, проблема решается перетаскиванием части кода в С++ и провязкой через Cython.
synapse_people, посмотрите на описание сети facenet (она под капотом), там показано к какому виду должны быть приведены фотографии, чтобы с ними можно было нормально работать.
Если вкратце, то 160x160 с лицом во всю фотографию.
После того, как вы приведете к такому виду весь ваш датасет, вам нужно будет сравнить расстояния между векторными представлениями фотографий из датасета и фотографией-запросом, их можно посчитать с помощью facenet, фотографии с меньшим расстоянием будут более похожи на ваш запрос.
PS: На мой взгляд вы задолбаетесь в процессе, а результаты вас скорее всего разочаруют, в нейронных сетях нет магии.
synapse_people, нет, не продаю, оно не подходит для коммерческого использования.
У сети facenet очень важное требование - фотографии, которые вы ищете должны быть похожи по композиции и размерам на те, что были в обучающем множестве, иначе результаты будут отстойными.
Кроме того, если вы собираетесь искать людей, которых не было в обучающем множестве, то сеть потребуется дообучить.
В целом так устроены все современные сервисы, имеющие под капотом нейронные сети.