Обнаружение лиц — это компьютерная технология, которая использует возможности искусственного интеллекта для обнаружения присутствия человеческих лиц на изображении или видео. С развитием проектов с открытым исходным кодом теперь можно идентифицировать человеческие лица независимо от цвета кожи, тона, положения лица и движений.
Мы узнаем, как построить систему обнаружения лиц, которая использует предварительно записанное видео в качестве входных данных и идентифицирует в нем лица. Этот проект похож на проект распознавания лиц в реальном времени (ссылка здесь) — разница в том, что последний принимает на вход прямой эфир с веб-камеры. Вы можете найти некоторое совпадение в содержании.
Библиотеки для установки в pip (Windows + macOS)
- Библиотека OpenCV (компьютерное зрение с открытым исходным кодом). Она создана, чтобы помочь разработчикам выполнять задачи, связанные с компьютерным зрением.
install opencv-python
Далее нам нужно установить API распознавания лиц.
2. Библиотека dlib:dlib построена на основе предварительно обученных моделей для определения ориентиров лица.
pip install dlib
3. библиотека face_recognition: face_recognition — это проект с открытым исходным кодом, который также известен как самый простой API для распознавания лиц.
pip install face_recognition
Давайте приступим к действию в Python
Теперь у нас установлены необходимые библиотеки. Мы начнем внедрять коды, как показано ниже. Я объяснил каждый блок кода, чтобы помочь вам понять, что происходит в фоновом режиме.
Не стесняйтесь перейти к концу этой страницы, чтобы получить ссылку на полный код.
Шаг 1.Откройте Spyder
Шаг 2.Импортируйте библиотеки
import cv2 import face_recognition
Шаг 3. Сделайте ссылку на видеофайл, сохраненный на жестком диске (в формате mp4).
cap= cv2.VideoCapture(<enter file path.mp4>)
Шаг 4. Инициализируйте необходимые переменные. Эти переменные будут заполнены позже в коде.
face_locations = []
Шаг 5.Это работает следующим образом: видео делится на кадры, а код считывает кадр за раз. В каждом кадре мы определяем местоположение лица с помощью API, которые мы импортировали выше. Для каждого обнаруженного лица мы находим координаты, рисуем вокруг него прямоугольник и передаем видео зрителю.
Полный код показан ниже — пояснения следуют под кодом
while True: # Grab a single frame of video ret, frame = cap.read() # Convert the image from BGR color (which OpenCV uses) to RGB # color (which face_recognition uses) rgb_frame = frame[:, :, ::-1] # Find all the faces in the current frame of video face_locations = face_recognition.face_locations(rgb_frame) for top, right, bottom, left in face_locations: # Draw a box around the face cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2) # Display the resulting image cv2.imshow('Video', frame) # Wait for Enter key to stop if cv2.waitKey(25) == 13: break
Блок 1:
# Grab a single frame of video ret, frame = cap.read() # Convert the image from BGR color (which OpenCV uses) to RGB color #(which face_recognition uses) rgb_frame = frame[:, :, ::-1]
Здесь мы обрабатываем один кадр за раз. Кадр извлекается с помощью библиотеки cv2, которая захватывает кадр в цветах BGR (синий-зеленый-красный), а библиотека распознавания лиц использует формат RGB (красный-зеленый-синий). Следовательно, мы меняем цветовой код кадра.
Блок 2:
face_locations = face_recognition.face_locations(rgb_frame)
Здесь мы находим координаты лиц, присутствующих в кадре. Список face_locations заполняется координатами x, y, а также шириной и высотой обнаруженных лиц.
Блок 3:
for top, right, bottom, left in face_locations: # Draw a box around the face cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
Здесь мы рисуем прямоугольник вокруг каждого захваченного лица. Прямоугольник начинается с координат x и y (в данном случае слева и сверху) и простирается до ширины и высоты обнаруженного лица (в данном случае справа и снизу).
Блок 4:
cv2.imshow(‘Video’, frame) if cv2.waitKey(25) == 13: break
Полученное изображение (кадр) передается зрителю, и цикл продолжается до тех пор, пока пользователь не нажмет клавишу Enter на клавиатуре.
Шаг 6.Все отснятые видео должны быть опубликованы.
video_capture.release() cv2.destroyAllWindows()
Запустите программу в командной строке
Следующий шаг — сохранить файл в формате .py и запустить его в командной строке/приглашении Anaconda.
Я запустил его в приглашении Anaconda, сначала перейдя в папку с помощью команды cd.
Я запустил его в приглашении Anaconda, сначала перейдя в папку с помощью команды cd.
cd <folder path>
Запустите файл Python
python filename.py
Вы увидите всплывающее окно с воспроизведением видео. Видео может быть медленным, и это связано с тем, что количество кадров в OpenCV обычно велико. Однако, если вы сохраните видео на жесткий диск, записанное видео не будет медленным и будет соответствовать частоте кадров (кадров в секунду) входного видео.
Вы можете скачать больше видео без лицензионных отчислений здесь.
И да! Вы успешно написали код, который распознает человеческие лица в видео.
Попробуйте поэкспериментировать с видео с включенными фильтрами Snapchat и дайте мне знать, как получилось, в разделе комментариев ниже.
Если у вас возникнут какие-либо проблемы, дайте мне знать в разделе комментариев.
Коды
Ссылки по теме
Система распознавания лиц в режиме реального времени на Python — Windows и macOS
Обнаружение транспортных средств в Python с использованием OpenCV — Windows и macOS
Обнаружение пешеходов в Python с использованием OpenCV — Windows и macOS
Сохранение результатов распознавания объектов в macOS
Где меня найти 🤓
- Свяжитесь со мной на LinkedIn/ GitHub/ Мой сайт
- Чувствуете щедрость? Купи мне кофе здесь☕️