Installation¶
To install Face Recognition, run this command in your terminal:
$ pip3 install face_recognition
This is the preferred method to install Face Recognition, as it will always install the most recent stable release.
If you don’t have pip installed, this Python installation guide can guide you through the process.
From sources¶
The sources for Face Recognition can be downloaded from the Github repo.
You can either clone the public repository:
$ git clone git://github.com/ageitgey/face_recognition
Or download the tarball:
$ curl -OL https://github.com/ageitgey/face_recognition/tarball/master
Once you have a copy of the source, you can install it with:
$ python setup.py install
© Copyright 2017, Adam Geitgey Revision 2e2dccea .
Built with Sphinx using a theme provided by Read the Docs.
Read the Docs v: latest
Versions latest stable Downloads pdf html epub On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.
ITСooky
Ищем человека на фото с OpenCV, dlib, face_recognition на Ubuntu 20.4
Автор Александр дата 07.09.2021
Собственно буду искать испанского актера Альваро Морте, не почему-то, а просто так! Есть испанский сериал на 2k серий есть 2k скриншотов — хочу найти с ним и надо это это как-то оптимизировать!
Пытался использовать вот этот мануал Face recognition with OpenCV, Python, and deep learning но он оказался непонятным и чето там надо было регистрироваться — он помог только с установкой нужного. А вот мануал Hussain Mujtaba реально помог Face Recognition with Python and OpenCV.
Установка OpenCV
Ставить буду через pip он у меня уже остановлен
pip —version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
Python тоже уже установлен
python —version
Python 2.7.18
Python 3.8.10
К нему понадобиться
sudo apt-get install python-setuptools
sudo apt-get install python-dev
Ставим сам OpenCV
sudo pip install opencv-contrib-python
Установка dlib с поддержкой CUDA ядер
Я точно знаю что у меня на GeForce RTX 2070 есть CUDA ядра — в любой не старой видеокарте Nvidia они должны быть
для сборки понадобиться cmake ставлю его сначала
sudo apt-get install cmake
далее по инструкции
git clone https://github.com/davisking/dlib.git
cd dlib
mkdir build
cd build
cmake .. -DDLIB_USE_CUDA=1 -DUSE_AVX_INSTRUCTIONS=1
cmake —build .
Команда из инструкции 2018 года уже не работает запускаем дальше так
sudo python setup.py install
Установка face_recognition
pip install face_recognition
Установка imutils
Говорят нам еще нужен он
pip install imutils
Учим модель
Создаем папку app в ней создаем папку Images в ней создаем папку alvaro_morte
В неё сохраняем кучу(около 60) фоток Альваро Морте с разных ракурсов
Идем в парку app и создаем py файл
vi learn.py
вставляем в него code тут привязка к путям где лежат фотки
from imutils import paths import face_recognition import pickle import cv2 import os #get paths of each file in folder named Images #Images here contains my data(folders of various persons) imagePaths = list(paths.list_images('Images')) knownEncodings = [] knownNames = [] # loop over the image paths for (i, imagePath) in enumerate(imagePaths): # extract the person name from the image path name = imagePath.split(os.path.sep)[-2] # load the input image and convert it from BGR (OpenCV ordering) # to dlib ordering (RGB) image = cv2.imread(imagePath) rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) #Use Face_recognition to locate faces boxes = face_recognition.face_locations(rgb,model='hog') # compute the facial embedding for the face encodings = face_recognition.face_encodings(rgb, boxes) # loop over the encodings for encoding in encodings: knownEncodings.append(encoding) knownNames.append(name) #save emcodings along with their names in dictionary data data = #use pickle to save data into a file for later use f = open("face_enc", "wb") f.write(pickle.dumps(data))
Запускам его
python3 learn.py
он думает и создает в этой же папки файл face_enc тут оцифрованное лицо Альваро под именем папки в которой были его фотки
Теперь создаем файл
vi recog.py
import face_recognition import imutils import pickle import time import cv2 import os #find path of xml file containing haarcascade file cascPathface = os.path.dirname( cv2.__file__) + "/data/haarcascade_frontalface_alt2.xml" # load the harcaascade in the cascade classifier faceCascade = cv2.CascadeClassifier(cascPathface) # load the known faces and embeddings saved in last file data = pickle.loads(open('face_enc', "rb").read()) #Find path to the image you want to detect face and pass it here image = cv2.imread('./001.jpg') rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) #convert image to Greyscale for haarcascade gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(60, 60), flags=cv2.CASCADE_SCALE_IMAGE) # the facial embeddings for face in input encodings = face_recognition.face_encodings(rgb) names = [] # loop over the facial embeddings incase # we have multiple embeddings for multiple fcaes for encoding in encodings: #Compare encodings with encodings in data["encodings"] #Matches contain array with boolean values and True for the embeddings it matches closely #and False for rest matches = face_recognition.compare_faces(data["encodings"], encoding) #set name =inknown if no encoding matches name = "Unknown" # check to see if we have found a match if True in matches: #Find positions at which we get True and store them matchedIdxs = [i for (i, b) in enumerate(matches) if b] counts = <> # loop over the matched indexes and maintain a count for # each recognized face face for i in matchedIdxs: #Check the names at respective indexes we stored in matchedIdxs name = data["names"][i] #increase count for the name we got counts[name] = counts.get(name, 0) + 1 #set name which has highest count name = max(counts, key=counts.get) # update the list of names names.append(name) # loop over the recognized faces for ((x, y, w, h), name) in zip(faces, names): # rescale the face coordinates # draw the predicted face name on the image cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2) cv2.putText(image, name, (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 0), 2) cv2.imshow("Frame", image) cv2.waitKey(0)
кладем файл 001.jpg в папку app в которой лежит скрипт и файл face_enc — это прописано в этой строчке
image = cv2.imread('./001.jpg')
Запускаем
python3 recog.py
Скрипт показывает фотку(без её названия что плохо) и обводит лицо если узнает — чтобы его закрыть корркетно надо нажать 0 когда фотка показалсь
На фотке из набора для обучения сработало
На фотке не из набора тоже
Если на фотке несколько лиц странно срабатывает, но срабатывает
И так это штукофина работает таки. Теперь надо её адаптировать для поиска по многим фоткам и лицам, и чтобы она эти фотки копировала вдругую папку, а для этого надо погрузиться в python, а я его уже не взлюбил…поэтому часть того что нужно сделаю скриптами bash
Итак будет два файла первый pyhon вот такой
vi nrecog.py
import sys import face_recognition import imutils import pickle import time import cv2 import os #find path of xml file containing haarcascade file cascPathface = os.path.dirname( cv2.__file__) + "/data/haarcascade_frontalface_alt2.xml" # load the harcaascade in the cascade classifier faceCascade = cv2.CascadeClassifier(cascPathface) # load the known faces and embeddings saved in last file data = pickle.loads(open('face_enc', "rb").read()) #Find path to the image you want to detect face and pass it here image = cv2.imread(sys.argv[1]) rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) #convert image to Greyscale for haarcascade gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(60, 60), flags=cv2.CASCADE_SCALE_IMAGE) # the facial embeddings for face in input encodings = face_recognition.face_encodings(rgb) names = [] # loop over the facial embeddings incase # we have multiple embeddings for multiple fcaes for encoding in encodings: #Compare encodings with encodings in data["encodings"] #Matches contain array with boolean values and True for the embeddings it matches closely #and False for rest matches = face_recognition.compare_faces(data["encodings"], encoding, tolerance=0.5) #set name =inknown if no encoding matches name = "Unknown" # check to see if we have found a match if True in matches: f = open("result.txt", "a") f.write(sys.argv[1] + '\n') f.close() sys.exit()
Это обрезанный и чуть измененный код который был до этого. Он берет с наружи имя файла, которое будем накидывать bash и пишет в файле название если найдет
Создаем српит
vi facecheck.sh
вствляем код
#!/bin/bash IFS=$'\n' folder="test" rm result.txt mkdir "./"$folder"_result" echo $folder for a in $( ls ./$folder ); do python3 nrecog.py $folder/$a echo "./"$folder"/"$a done for a in $( cat ./result.txt | awk -F/ '' ); do cp "./"$folder"/"$a "./"$folder"_result/"$a done
тут надо менять только переменнубю folder сейчас там написано папка test
и так в папке у нас три файла facecheck.sh nrecog.py face_enc и папка test с тестовыми фотками(не из обучения)
Запускм срипт
bash ./facecheck.sh
Как он отработаем смотрим файл который он создал result.txt, а так же он копирует все найденные фотки в папк test_result
там получается
28 — всего файлов
9 — сработали как осдержащие Альваро Морте
4 — из них действительно с Альваро
2 — так и не нашло, правда там трудности с лицом — он в профиль, а на втором после пытки
Предпологаю что улучшить этот результат можно лучше прокачавь модель. Беру еще около 2000 скриншотов из видео интервью с Альваро
Делаю сриншот каждой секунды командой
ffmpeg -i video.mp4 -vf fps=1 out%d.jpg
Возвращаюсь на пару шагов назад, кладу их в нужную папку и запускаю обучение — оно уже занимает больше времени!
Опять запускаю распознование
28 — всего файлов
16 — сработали как осдержащие Альваро Морте
6 — из них действительно с Альваро
0 — все Альвары найдены
Должна быть настройка для точности распознования… и она есть!
В файле nrecog.py находим строчку
matches = face_recognition.compare_faces(data["encodings"], encoding)
matches = face_recognition.compare_faces(data["encodings"], encoding, tolerance=0.4)
Теперь все супер гуд
28 — всего файлов
6 — сработали как осдержащие Альваро Морте
6 — из них действительно с Альваро
0 — все Альвары найдены
Теперь хорошо бы проверить на больших масштабах так чтобы скриншотов 2000 и обычно это проблема, но вот испанский стримнг, надеюсь он не обидеться все же в научных целях — вот тут по ссылке можно безхитростным образом вытащить окло 2350 скринштов — по одному с серии. И я точно знаю что Альваро там был (уже заметил).
При толерантности 0.4 нашел 26 с Морой, при этом глазами я нашел 34, но не нашел 4 где Мора в дали.
Кстати: Процесс обработки 2300 картинок размером 1280×720 у меня занимает 59 минут на:
OS: Ubuntu 20.04.3 LTS
CPU: AMD® Ryzen 7 3700x 8-core processor × 16
Mem: 62,8 GiB
GPU: Nvidia GeForce RTX 2070
Disk: Samsung SSD 970 EVO Plus 500GBПри этом экстремальной нагрузки не возникает, проц с видеокартой даже не прогреваются.
Перезапускаю при толерантности 1.1 НЕТ стоп это слишком много, даже 0.7 много запускаю с 0.5
Найдено 56 из них с Альваро 28. При этом, ладно путает с бородатыми мужиками, но прям неборадатых женщин тоже помечает как Альваро!
Итого: Система помогает найти лица, но точность не очень, видимо это зависит от натренерованной модели. Глазами и своим мозгом у меня ищется быстрее пока — что радает… хотя у ПК возможности по совершенствованию безграничны, а вот мой мозг с каждым годом…
Как установить face recognition?
Как установить face rocognition. Использовал много способов но ничего не работает. Подскажите как установить на windows 10.
- Вопрос задан более двух лет назад
- 364 просмотра
12 комментариев
Простой 12 комментариев

Что ты понимаешь под «face recognition», и причём тут VS?
Face recognition — это название для семейства технологий, если речь про конкретное ПО/библиотеку, назови её и дай ссылку.

Ага, уже лучше. А ничего не работает — это как? Ошибка при установке? Успешная установка, но ошибка при импорте?
Успешный импорт, но ошибка при выполнении кода?
Приведи код (если есть) и текст ошибки.


Мое чутье подсказывает что проблема в версии python.
Установи python3.6
Не забудь изменить переменные среды
Устанавливаешь
pip install face-recognition

Любитель поиграть в самолёты @Levman5 Автор вопроса
Рамис, а можно использовать и 3.8 и 3.6


Любитель поиграть в самолёты @Levman5 Автор вопроса
Рамис, значит при установке python 3.6 просто не ставить галочку на а против add Python 3.6 to PATH


Python Новичок, ставить, если ты хочешь использовать его как основу.
Если хочешь вернуть обратно, то просто подними наверх c:\python39 и c:\python39\scripts\ вверх

Любитель поиграть в самолёты @Levman5 Автор вопроса
Microsoft Windows [Version 10.0.17763.2114] (c) Корпорация Майкрософт (Microsoft Corporation), 2018. Все права защищены. C:\Users\Дом>pip install face-recognition Collecting face-recognition Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/1e/95/f6c9330f54ab07bfa032bf3715c12455a381083125d8880c43cbe76bb3d0/face_recognition-1.3.0-py2.py3-none-any.whl Collecting Pillow (from face-recognition) Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/ea/93/23b8524c64790729ba443b49462012a817c0152f2b78105331140f9da1b9/Pillow-8.3.2-cp36-cp36m-win_amd64.whl (3.2MB) 100% |████████████████████████████████| 3.2MB 361kB/s Collecting dlib>=19.7 (from face-recognition) Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/f0/a2/ba6163c09fb427990180afd8d625bcecc5555af699c253193c35ffd48c4f/dlib-19.22.1.tar.gz (7.4MB) 100% |████████████████████████████████| 7.4MB 156kB/s Collecting face-recognition-models>=0.3.0 (from face-recognition) Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/cf/3b/4fd8c534f6c0d1b80ce0973d01331525538045084c73c153ee6df20224cf/face_recognition_models-0.3.0.tar.gz (100.1MB) 100% |████████████████████████████████| 100.2MB 10.0kB/s Collecting Click>=6.0 (from face-recognition) Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/76/0a/b6c5f311e32aeb3b406e03c079ade51e905ea630fc19d1262a46249c1c86/click-8.0.1-py3-none-any.whl (97kB) 100% |████████████████████████████████| 102kB 4.7MB/s Collecting numpy (from face-recognition) Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/ea/bc/da526221bc111857c7ef39c3af670bbcf5e69c247b0d22e51986f6d0c5c2/numpy-1.19.5-cp36-cp36m-win_amd64.whl (13.2MB) 100% |████████████████████████████████| 13.2MB 88kB/s Collecting importlib-metadata; python_version < "3.8" (from Click>=6.0->face-recognition) Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/71/c2/cb1855f0b2a0ae9ccc9b69f150a7aebd4a8d815bd951e74621c4154c52a8/importlib_metadata-4.8.1-py3-none-any.whl Collecting colorama; platform_system == "Windows" (from Click>=6.0->face-recognition) Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/44/98/5b86278fbbf250d239ae0ecb724f8572af1c91f4a11edf4d36a206189440/colorama-0.4.4-py2.py3-none-any.whl Collecting zipp>=0.5 (from importlib-metadata; python_version < "3.8"->Click>=6.0->face-recognition) Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/92/d9/89f433969fb8dc5b9cbdd4b4deb587720ec1aeb59a020cf15002b9593eef/zipp-3.5.0-py3-none-any.whl Collecting typing-extensions>=3.6.4; python_version < "3.8" (from importlib-metadata; python_version < "3.8"->Click>=6.0->face-recognition) Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/74/60/18783336cc7fcdd95dae91d73477830aa53f5d3181ae4fe20491d7fc3199/typing_extensions-3.10.0.2-py3-none-any.whl Installing collected packages: Pillow, dlib, face-recognition-models, zipp, typing-extensions, importlib-metadata, colorama, Click, numpy, face-recognition Running setup.py install for dlib . error Exception: Traceback (most recent call last): File "c:\users\дом\appdata\local\programs\python\python36\lib\site-packages\pip\compat\__init__.py", line 73, in console_to_str return s.decode(sys.__stdout__.encoding) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe4 in position 246: invalid continuation byte During handling of the above exception, another exception occurred: Traceback (most recent call last): File "c:\users\дом\appdata\local\programs\python\python36\lib\site-packages\pip\commands\install.py", line 342, in run prefix=options.prefix_path, File "c:\users\дом\appdata\local\programs\python\python36\lib\site-packages\pip\req\req_set.py", line 784, in install **kwargs File "c:\users\дом\appdata\local\programs\python\python36\lib\site-packages\pip\req\req_install.py", line 878, in install spinner=spinner, File "c:\users\дом\appdata\local\programs\python\python36\lib\site-packages\pip\utils\__init__.py", line 676, in call_subprocess line = console_to_str(proc.stdout.readline()) File "c:\users\дом\appdata\local\programs\python\python36\lib\site-packages\pip\compat\__init__.py", line 75, in console_to_str return s.decode('utf_8') UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe4 in position 246: invalid continuation byte During handling of the above exception, another exception occurred: Traceback (most recent call last): File "c:\users\дом\appdata\local\programs\python\python36\lib\site-packages\pip\basecommand.py", line 215, in main status = self.run(options, args) File "c:\users\дом\appdata\local\programs\python\python36\lib\site-packages\pip\commands\install.py", line 385, in run requirement_set.cleanup_files() File "c:\users\дом\appdata\local\programs\python\python36\lib\site-packages\pip\req\req_set.py", line 729, in cleanup_files req.remove_temporary_source() File "c:\users\дом\appdata\local\programs\python\python36\lib\site-packages\pip\req\req_install.py", line 977, in remove_temporary_source rmtree(self.source_dir) File "c:\users\дом\appdata\local\programs\python\python36\lib\site-packages\pip\_vendor\retrying.py", line 49, in wrapped_f return Retrying(*dargs, **dkw).call(f, *args, **kw) File "c:\users\дом\appdata\local\programs\python\python36\lib\site-packages\pip\_vendor\retrying.py", line 212, in call raise attempt.get() File "c:\users\дом\appdata\local\programs\python\python36\lib\site-packages\pip\_vendor\retrying.py", line 247, in get six.reraise(self.value[0], self.value[1], self.value[2]) File "c:\users\дом\appdata\local\programs\python\python36\lib\site-packages\pip\_vendor\six.py", line 686, in reraise raise value File "c:\users\дом\appdata\local\programs\python\python36\lib\site-packages\pip\_vendor\retrying.py", line 200, in call attempt = Attempt(fn(*args, **kwargs), attempt_number, False) File "c:\users\дом\appdata\local\programs\python\python36\lib\site-packages\pip\utils\__init__.py", line 102, in rmtree onerror=rmtree_errorhandler) File "c:\users\дом\appdata\local\programs\python\python36\lib\shutil.py", line 488, in rmtree return _rmtree_unsafe(path, onerror) File "c:\users\дом\appdata\local\programs\python\python36\lib\shutil.py", line 378, in _rmtree_unsafe _rmtree_unsafe(fullname, onerror) File "c:\users\дом\appdata\local\programs\python\python36\lib\shutil.py", line 378, in _rmtree_unsafe _rmtree_unsafe(fullname, onerror) File "c:\users\дом\appdata\local\programs\python\python36\lib\shutil.py", line 378, in _rmtree_unsafe _rmtree_unsafe(fullname, onerror) [Previous line repeated 2 more times] File "c:\users\дом\appdata\local\programs\python\python36\lib\shutil.py", line 387, in _rmtree_unsafe onerror(os.rmdir, path, sys.exc_info()) File "c:\users\дом\appdata\local\programs\python\python36\lib\site-packages\pip\utils\__init__.py", line 114, in rmtree_errorhandler func(path) PermissionError: [WinError 32] Процесс не может получить доступ к файлу, так как этот файл занят другим процессом: 'C:\\Users\\E786~1\\AppData\\Local\\Temp\\pip-build-ey04e_8p\\dlib\\build\\temp.win-amd64-3.6\\Release\\CMakeFiles\\3.21.1\\CompilerIdC' You are using pip version 9.0.1, however version 21.2.4 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.
How to Install Face Recognition in Python on Windows?
In this article, we will learn how to install Face Recognition in Python on Windows. Recognize and manipulate faces from Python or from the command line with the world’s simplest face recognition library. Built using dlib’s state-of-the-art face recognition built with deep learning.
Installing Face Recognition on Windows :
Prerequisites:
Face Recognition module can only be installed for Python version 3.7 and 3.8.
Step 2: Clone this repository and go inside the folder using the following commands
git clone https://github.com/RvTechiNNovate/face_recog_dlib_file.git cd face_recog_dlib_file

Step 3: Enter the following command to install dlib and cmake using pip
Python 3.7: pip install dlib-19.19.0-cp37-cp37m-win_amd64.whl Python 3.8: pip install dlib-19.19.0-cp38-cp38-win_amd64.whl
pip install cmake

Method 1: Using pip to install Face Recognition Package
Follow the below steps to install the Face Recognition package on Windows using pip:
Step 2: Check if pip and python are correctly installed.
python --version pip --version

Step 3: Upgrade your pip to avoid errors during installation.
pip install --upgrade pip

Step 4: Enter the following command to install Face Recognition using pip3.
pip install face-recognition

Method 2: Using setup.py to install Face Recognition
Follow the below steps to install the Face Recognition on Windows using the setup.py file:
Step 1: Download the latest source package of Face Recognition for python3 from here.
curl https://files.pythonhosted.org/packages/6c/49/75dda409b94841f01cbbc34114c9b67ec618265084e4d12d37ab838f4fd3/face_recognition-1.3.0.tar.gz > face_recognition-1.3.0.tar.gz

Step 2: Extract the downloaded package using the following command.
tar -xzvf face_recognition-1.3.0.tar.gz

Step 3: Go inside the folder and Enter the following command to install the package.
cd face_recognition-1.3.0 python setup.py install

Verifying Face Recognition installation on Windows :
Make the following import in your python terminal to verify if the installation has been done properly:
import face_recognition

If there is any error while importing the module then is not installed properly.
Whether you’re preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we’ve already empowered, and we’re here to do the same for you. Don’t miss out — check it out now!
Last Updated : 26 Oct, 2021

Like Article
