Эта статья была впервые опубликована в моем блогеhuanghaozi.cn,оригинальная ссылка
генерация идей
мне стало лучше в последнее времяглаз трекер, вы можете напрямую использовать человеческий глаз в качестве мыши, но когда я искал в Интернете цену этой вещи, я обнаружил, что она составляет тысячи долларов, поэтому я задался вопросом, может ли моя компьютерная камера реализовать эту функцию. нашел только одинLookie LookieРепозиторий может реализовать эту функцию, но она не очень точна после того, как попробовал, поэтому у меня есть злая идея писать программы.
идеи
Во-первых, чтобы расположить камеру к глазам, тогда требуется модель распознавания лиц, а использование готового колеса — самый безотказный метод. Немного поискав на крупнейшем в мире гей-сайте, я нашелOpenFace от Тадаса БалтрушайтисаОбнаружение является наиболее точным (обратите внимание, что это не cmusatyalab,Ссылка на сайт) Однако этот проект написан на C++, для удобства построения нейронной сети я все же собираюсь использовать Python** (стыковка программ становится большой проблемой)** После получения данных лица и глаз также необходимо получить исходные данные выходной части для обучения. Здесь я имею в виду упомянутое вышеLookie Lookie, используйте координаты мыши в качестве выходных данных и собирайте данные, щелкая мышью, так что при обучении модели вы должны смотреть на координаты мыши и нажимать левую кнопку Поскольку при обучении нейронной сети необходимо собирать данные, я использовал модуль PyTorch для построения модели нейронной сети.
сбор данных о лицах
глядя вверхOpenFace от Тадаса БалтрушайтисаПосле вики я в принципе определился с идеей использования этой программы на питоне. Прежде всего, эта программа может использовать команды для сбора данных изображения одного кадра Формат команды очень прост, просто нужно определить входное изображение и выходной путь. В сочетании с модулем Python cv2 и модулем подпроцесса я написал метод для сохранения изображения камеры, затем использовал openface для обработки выходных данных, а затем использовал python для чтения выходного файла данных csv и сохранения его в данные глобальной переменной. После этого я внимательно прочитал вики openface, разобрался с различными частями файла данных csv и написал функции для просеивания данных и нормализации. Решена проблема стыковки программы и сбора данных о лицах
Сбор данных о координатах щелчка мыши
Эта часть относительно проста, я использовал модули pywin32 и PyHook3 для отслеживания событий кликов мыши и получения данных о координатах.
Создание и обучение модели нейронной сети
В этой части я взял нормализованные и предварительно обработанные данные в качестве входных данных, а координаты щелчка мыши в качестве выходных данных и построил нейронную сеть BP с использованием функции активации Relu.Я сделал шесть слоев, а входной слой имеет 17 узлов.Содержащий слой имеет 20 узлов, а выходной слой — это две координаты. Каждый раз, когда вы щелкаете мышью, выполняется обучение, и будут выводиться координаты, предсказанные моделью, и реальные координаты, а также измерены плюсы и минусы модели.
результат
Результат - GG.Вывод модели при обучении - это почти среднее значение моих исторических координат кликов.Сначала я подумал, что проблема в функции активации.После нескольких замен она все равно не работает.
Эта статья опубликована на многопостовой платформеArtiPubавтоматическая публикация