[Искусственный интеллект, Машинное обучение] Как видит компьютер
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Задумывались ли Вы когда-нибудь, как компьютер находит нужные для обработки объекты из видеопотока? На первый взгляд, это выглядит задачей из разряда «высокого» программирования с применением огромного количества формул из математического анализа, дискретной математики и т.д., требует огромного количества знаний, чтобы написать хотя бы маленькую программу наподобие «Hello, world» в мире распознавания образов на видео. А если бы Вам сказали, что на самом деле сейчас осуществить вход в мир компьютерного зрения гораздо проще и после прочтения этой статьи Вы сможете написать свою программу, которая научит Ваш компьютер видеть и детектировать лица? Также в конце статьи Вас ждет бонус, который может повысить безопасность Вашего ПК с помощью компьютерного зрения.
Для того, чтобы Ваш компьютер начал понимать, что Вы ему показываете что-либо похожее на лицо, нам понадобится:
- Компьютер;
- Web-камера;
- Python 3;
- Ваш любимый редактор кода (PyCharm, Jupyter и т.д.).
Итак, после того, как Вы собрали всё необходимое по списку выше, мы можем приступить к непосредственному написанию нашей программы для распознавания лиц.
Для начала, качаем необходимые библиотеки Python с помощью команды в Командной строке:
pip install opencv-python; numpy
Коротко о том, зачем они нам нужны:
OpenCV. Эта библиотека – основа почти каждого современного проекта по компьютерному зрению. В ней хранятся сотни алгоритмов компьютерного зрения и обработки изображений. Изначально написана на C/C++, но в дальнейшем была переписана и на Python ввиду большой востребованности ее на данном языке.
Numpy. Будет помогать с внутренними вычислениями библиотеки OpenCV.
После окончания установки нужных нам библиотек открываем наш любимый редактор кода и начинаем писать нашу программу:
Присоединяем библиотеку компьютерного зрения OpenCV
import cv2 as cv
2. Захват видеопотока с Web-камеры производим с помощью метода VideoCapture(index), где index — порядковый номер нашей Web-камеры в системе. Если камера одна, то параметр будет равен 0.
capture = cv.VideoCapture(0)
3. Для получения видео воспользуемся методом read(), который возвращает нам флаг rtrn -показывает успешность захвата кадра из видеопотока и image — кадр нашего видеопотока (numpy-массив). Считывать данные из видеопотока будем непрерывно, пока не будет нажата клавиша Escape.
while True:
rtrn, image = capture.read()
cv.imshow("Capture from Web-camera", image) # Вывод кадра в окно с названием
if cv.waitKey(1) == 27: # Выход из программы по нажатию Esc
break
capture.release()
cv.destroyAllWindows()
Сохраняем наш файл, запускаем из командной строки с помощью python имя_нашего_файла.py. Теперь наша программа умеет принимать видеопоток с Web-камеры! А это значит, что мы уже на полпути к тому, чтобы компьютер мог распознавать лица.
4. Давайте сделаем так, чтобы наш компьютер также мог записывать видео в файл:
Указываем кодек для сохранения видео, указываем имя для сохраняемого файла, fps и размеры. Для нашей задачи мы берем кодек XVID.
import cv2 as cv
capture = cv.VideoCapture(0)
codec = cv.VideoWriter_fourcc(*'XVID')
5. Выводим последовательно кадры в окно video, а после сохраняем результат в переменную output. Затем данные из output, после завершения видеопотока, передадим в файл «saved_from_camera.avi»:
output = cv.VideoWriter('saved_from_camera.avi ', codec, 25.0, (640, 480))
while capture.isOpened():
rtrn, image = capture.read()
if cv.waitKey(1) == 27 or rtrn == False:
break
cv.imshow('video for save', image)
output.write(image)
output.release()
capture.release()
cv.destroyAllWindows()
После того как мы научились брать видео с Web-камеры и сохранять его в файл, то можно приступить к самому интересному – распознаванию лиц в видеопотоке. Для нахождения лица на кадрах мы будем использовать так называемые Признаки Хаара. Суть их в том, что если брать прямоугольные области на изображении, то по разности интенсивностей между пикселями смежных прямоугольников можно выделить особенности, присущие лицам.
Например, на изображениях с лицами область вокруг глаз темнее, чем около щек. Поэтому, одним из Признаков Хаара для лиц можно назвать 2 смежных прямоугольника у щек и глаз.
Существует большое количество других, более быстрых и точных методов детекции объектов на изображении, но для понимания общих принципов нам пока будет достаточно знать лишь Признаки Хаара.
Разработчики OpenCV уже провели работы по определению Признаков Хаара и предоставили всем желающим результаты для возможностей обработки видеопотока.
Приступим к написанию детектора лиц с нашей Web-камеры:
6. Первым делом, получим наши Признаки Хаара и определим параметры для захвата видеопотока. Файл с Признаками лежит по пути, где устанавливаются библиотеки Python. По умолчанию, они находятся в папке,
C:/Python3X/Lib/sitepackages/cv2/data/haarcascade_frontalface_default.xml
где X – Ваша подверсия Python 3.
import cv2 as cv
cascade_of_face = cv.CascadeClassifier('C:/Python3.X/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml ')
capture = cv.VideoCapture(0)
capture.set(cv.CAP_PROP_FPS, 25) # Частоту зададим 25 кадров в секунду
7. Далее, в цикле будем поочередно считывать кадры с Web-камеры и передавать его нашему детектору лиц:
while True:
rtrn, image = capture.read()
gr = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
faces_detect = cascade_of_face.detectMultiScale(
image=gr,
minSize=(15, 15),
minNeighbors=10,
scaleFactor=1.2
)
for (x_face, y_face, w_face, h_face) in faces_detect:
cv.rectangle(image, (x_face, y_face), (x_face + w_face, y_face + h_face), (0, 0, 255), 2)
cv.imshow("Image", image)
if cv.waitKey(1) == 27: # Esc key
break
capture.release()
cv.destroyAllWindows()
8. Теперь объединим всё в одно целое и получим программу, которая захватывает видео с Web-камеры, распознает на нем лица и сохраняет результат в файл:
import cv2 as cv
faceCascade = cv.CascadeClassifier('C:/Users/Zet/Desktop/Python/test_opencv/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml')
capture = cv.VideoCapture(0)
capture.set(cv.CAP_PROP_FPS, 25)
codec = cv.VideoWriter_fourcc(*'XVID')
output = cv.VideoWriter('saved_from_camera.avi', codec, 25.0, (640, 480))
while True:
rtrn, image = capture.read()
gr = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
faces_detect = faceCascade.detectMultiScale(
image=gr,
minSize=(15, 15),
minNeighbors=10,
scaleFactor=1.2
)
for (x_face, y_face, w_face, h_face) in faces_detect:
cv.rectangle(image, (x_face, y_face), (x_face + w_face, y_face + h_face), (255, 0, 0), 2)
cv.imshow("Image", image)
output.write(image)
if cv.waitKey(1) == 27: # Esc key
break
output.release()
capture.release()
cv.destroyAllWindows()
Все! Вы написали программу, которая является первым шагом в понимании того, как видит компьютер. Дальше можно улучшать распознавание лиц, например, чтобы компьютер узнавал определенных людей на видео с помощью обучения нейронных сетей. Также можно написать детектор, настроенный на распознавание более сложных объектов (например, отслеживание дорожного трафика) с возможностью их анализа. А также решать другие, не менее интересные задачи компьютерного зрения.
БОНУС
Применим программу на практике – будем отслеживать входы под учетной записью.
1. Зайдем в Планировщик заданий (можно найти через стандартный Поиск Windows);
2. Создадим Простую задачу, дадим ей название и краткое описание;
3. Нажимаем Далее и попадаем в пункт Триггер. Здесь выбираем событие, при котором будет происходить запуск нашего задания. Выбираем «При входе в Windows»;
4. Далее в действии указываем «Запустить программу»;
5. В Действии указываем путь до python.exe, а в Параметрах – путь до нашей программы:
Готово! В результате, при входе в систему будет записываться лицо вошедшего под учетной записью, а видео будет сохранено. Таким образом, можно отслеживать, кто работал за компьютером в Ваше отсутствие, с сохранением записи доказательств.
===========
Источник:
habr.com
===========
Похожие новости:
- [Data Mining, Машинное обучение, Исследования и прогнозы в IT] Портрет российского специалиста Data Science от MADE и hh.ru
- [Будущее здесь, Искусственный интеллект, Мозг, Научно-популярное, Процессоры] Новый подход к нейроморфным вычислениям
- [Машинное обучение] Предварительная обработка данных
- [Big Data, Data Engineering, Карьера в IT-индустрии, Машинное обучение] Дата-инженеры в бизнесе: кто они и чем занимаются?
- [Машинное обучение, Программирование, Учебный процесс в IT] Data Science, ИИ и машинное обучение без программирования (перевод)
- [Natural Language Processing, Искусственный интеллект, Машинное обучение] Искусственный интеллект в области юриспруденции. Статья 2
- [Голосовые интерфейсы, Искусственный интеллект] Исследовательский практикум. Голосовые виртуальные ассистенты – что с ними не так?
- [DIY или Сделай сам, Искусственный интеллект, Софт] Ставим и тестим RTX Voice на видеокартах Nvidia GTX серии
- [Искусственный интеллект, Машинное обучение] Deep Learning: как это работает? Часть 2
- [Будущее здесь, Читальный зал] Лучше, чем люди. Новая точка отсчета
Теги для поиска: #_iskusstvennyj_intellekt (Искусственный интеллект), #_mashinnoe_obuchenie (Машинное обучение), #_computer_vision, #_obrabotka_video (обработка видео), #_iskusstvennyj_intellekt (
Искусственный интеллект
), #_mashinnoe_obuchenie (
Машинное обучение
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 00:51
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Задумывались ли Вы когда-нибудь, как компьютер находит нужные для обработки объекты из видеопотока? На первый взгляд, это выглядит задачей из разряда «высокого» программирования с применением огромного количества формул из математического анализа, дискретной математики и т.д., требует огромного количества знаний, чтобы написать хотя бы маленькую программу наподобие «Hello, world» в мире распознавания образов на видео. А если бы Вам сказали, что на самом деле сейчас осуществить вход в мир компьютерного зрения гораздо проще и после прочтения этой статьи Вы сможете написать свою программу, которая научит Ваш компьютер видеть и детектировать лица? Также в конце статьи Вас ждет бонус, который может повысить безопасность Вашего ПК с помощью компьютерного зрения. Для того, чтобы Ваш компьютер начал понимать, что Вы ему показываете что-либо похожее на лицо, нам понадобится:
Итак, после того, как Вы собрали всё необходимое по списку выше, мы можем приступить к непосредственному написанию нашей программы для распознавания лиц. Для начала, качаем необходимые библиотеки Python с помощью команды в Командной строке: pip install opencv-python; numpy
Коротко о том, зачем они нам нужны: OpenCV. Эта библиотека – основа почти каждого современного проекта по компьютерному зрению. В ней хранятся сотни алгоритмов компьютерного зрения и обработки изображений. Изначально написана на C/C++, но в дальнейшем была переписана и на Python ввиду большой востребованности ее на данном языке. Numpy. Будет помогать с внутренними вычислениями библиотеки OpenCV. После окончания установки нужных нам библиотек открываем наш любимый редактор кода и начинаем писать нашу программу: Присоединяем библиотеку компьютерного зрения OpenCV import cv2 as cv
2. Захват видеопотока с Web-камеры производим с помощью метода VideoCapture(index), где index — порядковый номер нашей Web-камеры в системе. Если камера одна, то параметр будет равен 0. capture = cv.VideoCapture(0)
3. Для получения видео воспользуемся методом read(), который возвращает нам флаг rtrn -показывает успешность захвата кадра из видеопотока и image — кадр нашего видеопотока (numpy-массив). Считывать данные из видеопотока будем непрерывно, пока не будет нажата клавиша Escape. while True:
rtrn, image = capture.read() cv.imshow("Capture from Web-camera", image) # Вывод кадра в окно с названием if cv.waitKey(1) == 27: # Выход из программы по нажатию Esc break capture.release() cv.destroyAllWindows() Сохраняем наш файл, запускаем из командной строки с помощью python имя_нашего_файла.py. Теперь наша программа умеет принимать видеопоток с Web-камеры! А это значит, что мы уже на полпути к тому, чтобы компьютер мог распознавать лица. 4. Давайте сделаем так, чтобы наш компьютер также мог записывать видео в файл: Указываем кодек для сохранения видео, указываем имя для сохраняемого файла, fps и размеры. Для нашей задачи мы берем кодек XVID. import cv2 as cv
capture = cv.VideoCapture(0) codec = cv.VideoWriter_fourcc(*'XVID') 5. Выводим последовательно кадры в окно video, а после сохраняем результат в переменную output. Затем данные из output, после завершения видеопотока, передадим в файл «saved_from_camera.avi»: output = cv.VideoWriter('saved_from_camera.avi ', codec, 25.0, (640, 480))
while capture.isOpened(): rtrn, image = capture.read() if cv.waitKey(1) == 27 or rtrn == False: break cv.imshow('video for save', image) output.write(image) output.release() capture.release() cv.destroyAllWindows() После того как мы научились брать видео с Web-камеры и сохранять его в файл, то можно приступить к самому интересному – распознаванию лиц в видеопотоке. Для нахождения лица на кадрах мы будем использовать так называемые Признаки Хаара. Суть их в том, что если брать прямоугольные области на изображении, то по разности интенсивностей между пикселями смежных прямоугольников можно выделить особенности, присущие лицам. Например, на изображениях с лицами область вокруг глаз темнее, чем около щек. Поэтому, одним из Признаков Хаара для лиц можно назвать 2 смежных прямоугольника у щек и глаз. Существует большое количество других, более быстрых и точных методов детекции объектов на изображении, но для понимания общих принципов нам пока будет достаточно знать лишь Признаки Хаара. Разработчики OpenCV уже провели работы по определению Признаков Хаара и предоставили всем желающим результаты для возможностей обработки видеопотока. Приступим к написанию детектора лиц с нашей Web-камеры: 6. Первым делом, получим наши Признаки Хаара и определим параметры для захвата видеопотока. Файл с Признаками лежит по пути, где устанавливаются библиотеки Python. По умолчанию, они находятся в папке, C:/Python3X/Lib/sitepackages/cv2/data/haarcascade_frontalface_default.xml
где X – Ваша подверсия Python 3. import cv2 as cv
cascade_of_face = cv.CascadeClassifier('C:/Python3.X/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml ') capture = cv.VideoCapture(0) capture.set(cv.CAP_PROP_FPS, 25) # Частоту зададим 25 кадров в секунду 7. Далее, в цикле будем поочередно считывать кадры с Web-камеры и передавать его нашему детектору лиц: while True:
rtrn, image = capture.read() gr = cv.cvtColor(image, cv.COLOR_BGR2GRAY) faces_detect = cascade_of_face.detectMultiScale( image=gr, minSize=(15, 15), minNeighbors=10, scaleFactor=1.2 ) for (x_face, y_face, w_face, h_face) in faces_detect: cv.rectangle(image, (x_face, y_face), (x_face + w_face, y_face + h_face), (0, 0, 255), 2) cv.imshow("Image", image) if cv.waitKey(1) == 27: # Esc key break capture.release() cv.destroyAllWindows() 8. Теперь объединим всё в одно целое и получим программу, которая захватывает видео с Web-камеры, распознает на нем лица и сохраняет результат в файл: import cv2 as cv
faceCascade = cv.CascadeClassifier('C:/Users/Zet/Desktop/Python/test_opencv/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml') capture = cv.VideoCapture(0) capture.set(cv.CAP_PROP_FPS, 25) codec = cv.VideoWriter_fourcc(*'XVID') output = cv.VideoWriter('saved_from_camera.avi', codec, 25.0, (640, 480)) while True: rtrn, image = capture.read() gr = cv.cvtColor(image, cv.COLOR_BGR2GRAY) faces_detect = faceCascade.detectMultiScale( image=gr, minSize=(15, 15), minNeighbors=10, scaleFactor=1.2 ) for (x_face, y_face, w_face, h_face) in faces_detect: cv.rectangle(image, (x_face, y_face), (x_face + w_face, y_face + h_face), (255, 0, 0), 2) cv.imshow("Image", image) output.write(image) if cv.waitKey(1) == 27: # Esc key break output.release() capture.release() cv.destroyAllWindows() Все! Вы написали программу, которая является первым шагом в понимании того, как видит компьютер. Дальше можно улучшать распознавание лиц, например, чтобы компьютер узнавал определенных людей на видео с помощью обучения нейронных сетей. Также можно написать детектор, настроенный на распознавание более сложных объектов (например, отслеживание дорожного трафика) с возможностью их анализа. А также решать другие, не менее интересные задачи компьютерного зрения. БОНУС Применим программу на практике – будем отслеживать входы под учетной записью. 1. Зайдем в Планировщик заданий (можно найти через стандартный Поиск Windows); 2. Создадим Простую задачу, дадим ей название и краткое описание; 3. Нажимаем Далее и попадаем в пункт Триггер. Здесь выбираем событие, при котором будет происходить запуск нашего задания. Выбираем «При входе в Windows»; 4. Далее в действии указываем «Запустить программу»; 5. В Действии указываем путь до python.exe, а в Параметрах – путь до нашей программы: Готово! В результате, при входе в систему будет записываться лицо вошедшего под учетной записью, а видео будет сохранено. Таким образом, можно отслеживать, кто работал за компьютером в Ваше отсутствие, с сохранением записи доказательств. =========== Источник: habr.com =========== Похожие новости:
Искусственный интеллект ), #_mashinnoe_obuchenie ( Машинное обучение ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 00:51
Часовой пояс: UTC + 5