8-900-374-94-44
[email protected]
Slide Image
Меню

Habibtg распознавание: Главная страница.

Хабиб vs МакГрегор или Распознавание лиц на Python

Рассказывает команда IT Resume

Детекция (т.е. нахождение) и распознавание лиц — очень популярная задача в современном мире: в метро уже давно следят за нашими передвижениями, а в загородных домах все чаще ставят «умные дверные глазки».

Так уж сложилось, что сейчас уже нельзя просто написать программу для распознавания лиц и присвоить себе должность Senior Data Scientist — таких знаний требуют даже от начинающих специалистов.

Если Вы еще не игрались с распознаванием лиц, но хотите развиваться в области нейронных сетей (ну или просто Вам интересна эта область), то эксперты IT Resume подготовили для вас этот гайд — давайте вместе пройдем все шаги:

  • научимся загружать и представлять фотографии в виде матриц;
  • проведем обработку исходных фотографий;
  • задетектим лица на фотографии;
  • обработаем изображения нейронной сетью;
  • посмотрим — сможет ли сеть понять, что мы ей дали два фото одного и того же человека.

Для работы нам потребуется:

  1. Google Colab — среда для работы с Python в браузере. Они еще доступ к GPU дают (а для нейронных сетей это очень нужно).
  2. И все 🙂

Итак, начнем.

Этап 1. Подключение модулей

Перед тем, как начать работу, давайте сменим среду выполнения на «Ускорение GPU». В будущем нам это понадобится для работы нейронной сети. Для этого в Google Colab нажимаем «Среда выполнения» → «Сменить среду выполнения» → «Аппаратный ускоритель GPU».

Теперь подключим необходимые библиотеки. В Colab большинство библиотек уже установлено, поэтому нам осталось их только импортировать:

  • cv2 — для загрузки и обработки изображений;
  • dlib — для детекции лиц;
  • numpy — для работы с матрицами.

Помимо этого, с помощью команды pip install face_recognition мы устанавливаем библиотеку face_recognition — с ее помощью мы будем обрабатывать лицо нейронной сетью.

Примечание Вообще сделать полную обработку можно всего за несколько строчек кода, потому что в библиотеке face_recognition многие процессы (например, детекция лиц) уже завернуты в функции. Но мы намеренно некоторые вещи будем делать «с нуля», чтобы вы лучше во всем разобрались.

Этап 2. Первичная настройка

Теперь нам нужно произвести небольшую настройку, чтобы потом полноценно использовать все инструменты и кодовую базу.

Начнем с настройки детектора лиц. Сначала скачиваем файл с готовой моделью с помощью команды wget (да, именно этой командой Цукерберг запустил Фэйсбук в фильме Социальная сеть) и распаковываем файл в формат .dat.

wget http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
bunzip2 shape_predictor_68_face_landmarks.dat.bz2

Далее создаем детектор лиц и передаем скачанную модель в

shape_predictor, который будет предсказывать ключевые точки человеческого лица — контур головы, глаза, нос и рот.

face_detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')

Отлично, теперь мы готовы переходить к содержательной части — обработке фотографий.

Этап 3. Загрузка и обработка фотографий

Перед тем, как загружать фотографию в переменную Python, ее надо загрузить в файловое хранилище Google Colab. Для этого достаточно нажать на иконку Папки на левом сайдбаре и выбрать Upload.

Мы, например, загрузим фотографию Конора МакГрегора.

Отлично, теперь надо «прочитать» изображение в переменную Python. Это можно сделать несколькими способами, но нам удобнее представить изображение сразу в виде матрицы. Это можно сделать с помощью функции imread из модуля

cv2.

Если вы загружаете цветную картинку, то «матрица» будет иметь размерность 3*height*width, где 3 — количество цветовых каналов (RGB), а width и height — размерность картинки в пикселях. Проверить это можно с помощью метода shape. Каждое число в матрице — значение пикселя по конкретному цветовому каналу.

img = cv2.imread('conor.jpg')
img.shape #проверяем размерность матрицы
#(434, 770, 3)

Кстати говоря, если вы хотите посмотреть на загруженную картинку, то вам нужно:

  1. Импортировать команду cv2_imshow: from google.colab.patches import cv2_imshow.
  2. Передать в функцию cv2_imshow нужную картинку: cv2_imshow(img).

В некоторых задачах имеет смысл обрабатывать не цветное изображение, а черно-белое. Например, на детекцию лиц наличие цвета мало влияет — контуры лица и так хорошо видны. А вот для нейронной сети это может быть принципиальный момент — мало ли, люди выглядят одинаково, а цвет кожи разный.

Поэтому давайте переведем нашу цветную картинку в черно-белую:

img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

Теперь переходим к следующему этапу — детекция лица.

Этап 4. Детекция лица

Детектор лиц у нас уже настроен, поэтому можем переходить непосредственно к детекции. Делать это будем в 2 этапа:

  1. Ищем прямоугольники, в которых находятся лица.
  2. По этим прямоугольникам предсказываем контуры и ключевые точки лица.

С помощью detector мы получим координаты нужного прямоугольника. Если лиц несколько, то и наборов точек будет несколько. Чтобы выбрать конкретное лицо, нужно указать индекс (в нашем случае — ноль).

face_rect = detector(img, 1)[0]

Чтобы посмотреть на результат, можно нарисовать рамку вокруг лица с помощью метода rectangle и посмотреть фото с помощью cv2_imshow. Только будьте осторожны — рамка останется на фото навсегда, так что лучше потом загрузить изображение заново.

Теперь по найденным квадратам нужно «предсказать» ключевые точки лица. Для этого используем predictor, а потом извлекаем координаты точек.

points = predictor(img, face_rect)
landmarks = np. array([*map(lambda p: [p.x, p.y], points.parts())])

Здесь, чтобы получить координаты точек, мы использовали сразу несколько полезных операций Python:

  • лямбда-функции;
  • функцию map;
  • распаковку.

Если вы планируете связать свою работу с Python, то обязательно освойте все эти приемы — они сильно упростят вам жизнь.

На выходе у нас получилось 68 точек. Не будем сильно в этом гайде заморачиваться с тем, как нанести это на фото, но получится что-то в таком духе:

Теперь у нас есть вся необходимая информация, чтобы обработать изображение нейронной сетью — и изображение, и ключевые точки лица. Переходим к следующему этапу.

Этап 5. Обработка нейронной сетью

Основная идея обработки сетью заключается в том, что из исходного «большого» изображения выделяются только ключевые признаки, которые впоследствии и помогут нам отличить одного человека от другого. Другими словами, многомерная матрица-картинки преобразуется в относительно небольшой числовой вектор, который характеризует лицо с картинки.

Итак, получить итоговый вектор очень просто — достаточно вызвать функцию face_encodings.

vector = face_recognition.face_encodings(img)[0]

Примечание Обратите внимание, что в качестве аргументов мы передали только изображение, а полученные ранее ключевые точки мы не использовали. Причина очень проста — функция face_encodings делает все те же самые действия, которые мы с вами проделали вручную ранее для понимания процесса «изнутри».

На выходе мы получаем вектор размерности 128, т.е. 128 чисел, которые описывают лицо на фотографии. Что значит каждое из этих чисел — неизвестно: это некоторая абстракция, восстановить и осмыслить которую невозможно — слишком уж много математических преобразований лежит внутри этого процесса.

Однако, от этого вектора нам толку мало — чтобы оценить эффективность «нейросетевых технологий», нужно сравнить два вектора для двух разных фотографий. Давайте немного поэксперементируем — будем подавать разные фото на вход и сравнивать с нашим изначальным фото МакГрегора.

Этап 6. Сравнение векторов

Чтобы сравнивать лица между собой, мы будем действовать следующим образом:

  1. Загружаем новое фото и производим обработку, которую уже разобрали на предыдущих этапах. На выходе получаем вектор.
  2. Сравниваем вектора между собой.
  3. На основании расстояния принимаем решение — один и тот же человек на фото или разные.

Встает вопрос — что значит «сравнить вектора»? Самый простой способ — посчитать расстояние в некоторой метрике. Мы выберем обычную евклидову метрику. Вычислять ее без лишнего кода нам позволит функция pdist из scipy.spatial.distance.

Итак, сначала загрузим еще одну фотографию Конора.

Сохраняем полученный вектор для первой фотографии в vector1, для второй — в vector2 и вычисляем расстояние:

from scipy.spatial.distance import pdist

pdist([vector1, vector2], 'euclidean')

Получаем ответ — 0,48. Это достаточно близкое расстояние, из чего делаем вывод, что это один и тот же человек. Сеть справилась отлично!

Ну хорошо, еще пару экспериментов — давайте возьмем снова Конора, но усложним задачу — пусть он будет в очках.

Результат — 0,56. Снова в яблочко (разработчик библиотеки face_recognition рекомендует придерживаться порога 0,6 — если больше 0,6, то это другой человек).

Ну что ж, а может сеть просто всех определяет как Конора? Давайте подсунем ей другого бойца — Хабиба Нурмагомедова. Что наша сеть на это скажет?

Снова проводим уже известную процедуру и ответ… — 0.72. По утвержденному ранее порогу, делаем вывод: Хабиб — не Конор. Сеть снова нас не подвела, и мы со спокойной душой можем переходить к более сложным проектам.

Эпилог

Мы с вами разобрали основной инструментарий, который вам понадобится для старта в области face recognition (да и в нейронных сетях, в целом). Однако это далеко не предел — мы затронули лишь верхушку айсберга, опустив очень много моментов как программных, так и математических.

Вот несколько вещей, которые мы рекомендуем вам сделать, чтобы прокачаться в области Computer Vision (компьютерное зрение):

  • Научитесь выстраивать процесс распознавания с нуля, без использования оберток (чем является библиотека face_recognition). Начните хотя бы с изучения исходников этой библиотеки на GitHub — там ничего сверхсложного нет.
  • Попробуйте разные нейронные сети. Погуглите state-of-the-art решения и посмотрите — чем будет различаться результат.
  • Изучите структуру нейронных сетей (например, сверточных) с математической точки зрения. Это можно сделать с помощью многочисленных туториалов и официальной документации библиотек (например, PyTorch).

Есть много и других точек роста, но начните с этих — остальные мысли придут в процессе 🙂

Желаем удачи и будем рады помочь в комментариях!

P.S. Наш ноутбук с кодом в Google Colab Вы можете найти здесь.

AIGod — распознавание объектов / Хабр

Введение

В настоящее время искусственный интеллект все больше внедряется в повседневную жизнь, тем самым облегчая и ускоряя некоторые процессы. Распознавание объектов есть одним из ключевых моментов в ИИ, а именно это необходимо для того, чтобы программа понимала что перед ней находится и что с этим дальше делать. Это, скажем требование, уже используется довольно таки часто во многих средах с участием ИИ, например: ведение автотранспорта без участия человека, в поиске определенных людей или же вещей, и многое другое где это применяется и еще может применяться. Чтобы выполнить такую задачу, уже достаточно имеется программ которые могут это выполнять и постоянно этот список пополняется. Исключением не стало и данное ПО под названием AIGod.

AIGod

AIGod — программа с графическим интерфейсом, которое облегчит использование продукта любому пользователю, написанная на языке Python. Программа использует известный метод распознавания YOLOv5, но немного изменена под задумку разработчика. AIGod имеет большой спектр распознавания различных объектов, начиная от людей и транспорта, доходя до определения возникновения пожара по дыму. Так же есть модель распознавания лиц людей, номерных знаков автомобилей, и даже есть модель затрагивающая военную тематику. На момент публикации обучается модель по определению обнаружено настоящее лицо или же фальшивое, иными словами распознавание deepfake, face2face, faceswap и другие. Раз затронули тему лиц, программа имеет возможность не просто определить лицо человека, но сохранить его и если нужно сравнить его с пользовательской базой других лиц и узнать есть ли схожие.

ИИ умеет работать с изображением и видео, а так же с прямой трансляцией с веб-камер, и ссылками на видео в ютуб. Результат анализа можно увидеть сразу, так и позже, так как вся проделанная работа сохраняется.

Некоторые возможности были уже описаны, добавлю еще не большим перечнем:

  • просмотр результата распознавания можно глянуть из установленным программ на вашей ОС или же уже встроенным методом в программе;

  • мультипроцессинг в режиме распознавания лиц или же авто номеров в онлайн трансляции;

  • поддержка нескольких языков;

  • проверка истории распознавания, да бы избежать лишнюю трату времени на абсолютно ту же задачу с тем же самым файлом.

Программа разрабатывается одним человеком и на слабом ноутбуке, это конечно не плюс, но в то же время программа сможет запуститься и работать на большом количестве устройств, все лишь упирается в скорость работы. Так же программа поддерживает кроссплатформенность и имеет версии компиляции под Windows и Linux ОС, что сможет затронуть большинство желающих ею воспользоваться. Большим плюсом является то, что продукт распространяется под лицензией GNU, ее исходный код открыт для любого желающего и так же является абсолютно бесплатной. Разработчик не собирает и не пересылает никуда информацию пользователя, так же в продукте отсутствует реклама.

Пример результата анализа изображения на распознания объектов на ней.

результат поиска объектов

Вывод

Никому не секрет, что людей могут обманывать СМИ, что те же люди могут совершать правонарушения, или же, что человек хочет ускорить различные процессы в своей жизни и работе, да бы добиться значимых результатов, зафиксировать и найти нарушителя, проверить правдивость информации и кем она предоставляется с экранов, этот проект нацелен именно на это. Да, ИИ не всегда точный, но к этому всегда стремятся. Данный продукт интересен своим спектром возможностей, которые собраны в один проект, имеет графический интерфейс и абсолютно бесплатен для любого пользователя. Есть и свои недостатки, это то что проект развивается медленно, так как разрабатывается одним человеком, тем самым может являться далеко не идеальным, но проект активный и всегда актуален для различных задач.

Исходный код

Релизы

Что значит хабиби? Когда и когда не следует использовать этот термин в ОАЭ

Как давнему жителю Абу-Даби, мне потребовалось всего несколько месяцев, чтобы осознать, что ласкательные слова в арабском языке часто используются здесь как в личных, так и в профессиональных кругах. .

Будь то встреча за ужином или деловая встреча за завтраком, друзья и коллеги обмениваются нежными прозвищами, что, возможно, было бы неуместно в западных странах.

Я понял это на горьком опыте во время моей последней поездки обратно в Австралию, где я вырос, когда во время ужина с «мальчиками» я начал дискуссию с «моим дорогим Мурадом». Мурад был совершенно сбит с толку.

Тем не менее, даже в более спокойных социальных сферах региона существуют правила взаимодействия.

Например, вы не можете сбросить водородную бомбу (хабиби или хабибти) в первый же присест.Кроме того, в арабском обществе, где старшинство уважается, есть несколько почетных знаков, которые вы можете использовать, чтобы заслужить признание и уважение старших.0003

Вот 15 терминов, которые можно использовать для расширения вашего разговорника ОАЭ:

1. Akhy и ukhty

Означая «мой брат» и «моя сестра» соответственно, этот дескриптор больше, чем семья. Поскольку дружба в арабском мире является премией, не удивляйтесь, если ваш друг в мгновение ока повысит вас до статуса «ахы» и «ухты». Оба термина также имеют духовный вес: мусульман поощряют называть единомышленников братом или сестрой.

2. Ааму и аммати (Аа-му и Ам-ма-ти)

Это означает дядя или тетя, и их следует использовать с людьми, с которыми вы знакомы. Те, кто примерно на 20 лет старше вашего возраста, имеют право на получение статуса ааму или амати. Любого человека более старшего возраста следует называть джадду или джаддати, что означает дедушка и бабушка соответственно.

3. Баш мухандис (Bash mu-han-dis)

Старая и очаровательная ручка из Египта, в основном используемая для мужчин, которая восходит к бывшему османскому владычеству в стране. Баш — это сокращение от «баша», термин, используемый турками для лиц высокого ранга, а мухандис — это арабское слово, означающее инженер. Bash muhandis изначально использовался для обращения к квалифицированным инженерам и архитекторам — теперь его используют для всех, кто умеет обращаться с отверткой.

4. Босс

Уважительное обращение к тем, кто часто оказывает услуги, трудоемкие или в индустрии гостеприимства. Например, вы могли бы назвать обслуживающего персонала, заполняющего ваш бензобак, или официанта «боссом».

5. Дуктур (мужской) и дуктур (женский)

В арабском мире не обязательно быть медицинским работником, чтобы быть врачом. С большим уважением к образованию, привитому культурой, это обозначение также используется для награждения тех, кто получил докторскую степень. Этот титул сразу же вызывает уважение к интеллигенции общества.

6. Хаджи (мужчины) и хаджи (женщины)

Уважительное обращение к тем, кто совершил исламское паломничество в хадж. Когда они возвращаются из путешествия, их принято называть хаджи или хаджа, а затем называть их по имени. Например, Хаджи Ахмед или Хаджа Фатима. Со временем вы можете прибегнуть к обычному имени, но в течение первых нескольких недель придерживайтесь термина. Человек только что выполнил одну из самых важных и изнурительных задач своей веры, поэтому он заслуживает уважения.

7. Ya omri

Хотя его буквальное значение — «моя жизнь», оно выполняет ту же функцию, что и «О, милый» или «О, милый». Неудивительно, что этот термин используется в арабских мыльных операх либо в романтических разговорах, либо в сценах, когда партнер умоляет о прощении.

8. Habibi (мужской) и habibti (женский)

Оба означают «любимый», и их можно использовать с друзьями и хорошими коллегами. Это один из наиболее широко используемых терминов ласки в регионе, и, скорее всего, это первые арабские слова, которые выучил новоприбывший. Но не бросайте его слишком небрежно. Знакомство не обязательно означает близость, и все же существует кодекс уважения, которого следует придерживаться. Не называйте своего менеджера или профессионального знакомого хабиби или хабибти, если вы не уверены в качестве ваших отношений.

9. Ya sahby и Ya sahbety

Это вежливый и немного странный способ сказать «мой друг» мужчинам и женщинам соответственно. Разумный и вечнозеленый, его можно использовать в большинстве социальных сетей, однако рекомендуется использовать его с людьми вашей возрастной группы.

10. Дорогой мой

Название звучит довольно архаично и тяжело для спокойной беседы. Следовательно, это хорошая идея, чтобы быть консервативным в его использовании. Его следует применять в каждом конкретном случае и только для тех, кто первым обращается к вам с использованием этого термина.

11. Я муалем

Арабская версия хип-хоп термина «OG». Обычный и крутой способ сказать «учитель» (примечание: все это в доставке), «муалем» — это тот гризли, у которого есть свой собственный зарезервированный столик и который держит суд в своей местной кофейне. Младший кот также может получить титул либо за кажущуюся мудрость, либо за то, что он лучший в своем деле.

12. Устадхи (мужской) и устадхати (женский)

Переводится как «мой учитель». Вы можете использовать его отдельно или добавить к имени человека. Например, «Шукран устадхи/устадхати» или «Устади Ахмед/устадхати Фатима».

13. Ya albi или ya roohi

В то время как habibi/habibti обычно являются панарабскими терминами, ya albi или ya roohi в основном используются выходцами из Леванта. Но опять же, поскольку ya albi означает «мое сердце», а ya roohi «моя душа», их следует использовать только с близкими друзьями и единомышленниками.

14. Я райал (ya ray-yal)

Эмиратский термин, часто используемый в разговорах между мужчинами. В переводе на «о, чувак», это часто можно услышать в дружеской шутке или как выражение раздражения во время споров.

15. Я Рагель

Это региональная версия «Я Райал». Его обычно можно услышать во время шумной ночной карточной игры в кафе, поэтому лучше использовать его среди друзей и подальше от офисной среды.

География Израиля 101 | Дэвид Ровикс

  • Потоковое + Скачать

    Включает неограниченную потоковую передачу через бесплатное приложение Bandcamp, а также высококачественную загрузку в формате MP3, FLAC и других форматах.

    Можно приобрести с подарочной картой

    1 доллар доллар США или больше

  • Купить полный цифровой альбом
  • Компакт-диск (CD) + цифровой альбом

    Falasteen, Habibti («Палестина, любовь моя») — это сборник песен, связанных с палестинской борьбой, которые я написал в период с 2000 по 2014 год. Песни с разных компакт-дисков были мастерски ремастированы для этого компакт-диска Билли Оскаем в Big Red Studio в Корбетте, штат Орегон.

    Включает неограниченную потоковую передачу Falasteen Habibti через бесплатное приложение Bandcamp, а также высококачественную загрузку в форматах MP3, FLAC и других форматах.

    отправляется в течение 5 дней

    15 долларов доллар США или больше
  • Подписка

    Подписаться теперь получать все новые музыка Дэвид Ровикс создает, включая 28 выпусков бэк-каталога, мгновенно доставлены вам через приложение Bandcamp для iOS и Android. Узнать больше.

    Подписаться Сейчас $3 долларов США в месяц и более
  • Полная цифровая дискография

    28

    выпуска

    Получить все 28 релизов Дэвида Ровикса доступен на Bandcamp и сохраните 70% .

    Включает неограниченное потоковое вещание через бесплатное приложение Bandcamp, а также высококачественные загрузки Убийство Посланника, Первое мая, Прошел год, Повстанческие песни, Скажи их имена, Заметки из неудавшегося государства, вирусная солидарность, Незнакомцы и друзья, и еще 20. , и , .

    За исключением выпусков только для подписчиков.

    Можно приобрести с подарочной картой

    $51,30 доллар США или больше (
    СКИДКА 70% )
  • География Израиля 101

    Нетаньяху взволнован, его глаза полны ненависти
    Он сказал, что проблема этих арабов в том, что они не признают еврейское государство.
    Он сказал, что эти палестинцы просто не придут
    За принятие еврейского правления на их святой земле
    Он сказал, что арабы не принимают своих новых соседей в районе
    Эти неблагодарные режимы не уважают нас должным образом
    Что ж, я не хочу никого расстраивать или чрезмерно брать на себя ответственность
    Но если государство хочет признания, кажется разумным спросить

    Где твои границы?

    Я слышал, как он выступал перед Конгрессом, заняв 29-е место в рейтинге.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *