Рубрики
Без рубрики

Создайте приложение для обнаружения лица с менее чем 10 строк кода

История в последние несколько месяцев я испачкал руки с Intel® Distry … Tagged с помощью ИИ, Facedetection, Openvino, Python.

В последние несколько месяцев я испачкал руки с Intel® Distribution of OpenVino ™ Toolkit и сделал несколько проектов по пути, чтобы проиллюстрировать, насколько мощный этот инструментарий.

В этом посте я представлю библиотеку, над которой я работал в последние несколько недель (проект продолжается). Эта библиотека упрощает реализацию модели OpenVino с Python, делая для вас больше тяжелой работы, давая вам больше времени, чтобы повеселиться, т. Е. Меньше больше !!!

Я также создам простое приложение для обнаружения лица менее чем в 10 линиях, перепрыгнув к тому, как для большего.

TL; DR

Ссылка на Pyvino-utils Библиотека: https://github.com/mmphego/pyvino_utils

Светь его, разграбляй и сделай пиар

Библиотека делает тяжелую работу, внедряя Аннотация базовый класс который обрабатывает загрузку моделей, обрабатывая вход и вывод (прогноз). Обнаружение , распознавание и поза оценивает модели, наследуют реализацию базового класса, внедряя функции для постобработки вывода вывода и рисования ограничивающих ящиков вокруг интересующей области (ROI).

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

Я сейчас больше похож на продавца, чем на Tinkerer …

Прогулка кода

Приведенный ниже код реализует простое обнаружение лица с помощью прогонов процессора Intel I7 и может быть легко перенесено в Raspberry Pi с USB-NCS2 (Intel® Neural Compute Stick 2). Приложения бесконечны …

import argparse

from pyvino_utils import InputFeeder
from pyvino_utils.models.detection import face_detection

Начнем с импорта наших необходимых пакетов на Строки 1-4 Анкет Нам нужно Argparse Чтобы справиться с аргументами командной строки, Inputfeeder и face_detection из pyvino_utils Библиотека обрабатывает вход (изображение, видео или кулачок) и Обнаружение лица модуль.

def arg_parser():
  parser = argparse.ArgumentParser(
     description="A simple OpenVINO based Face Detection running on CPU."
   )
  parser.add_argument("-i", "--input", help="Video or image input.", required=True)
  parser.add_argument(
    "-m", "--model", help="Face detection model name (no extension).", required=True
   )
  parser.add_argument(
    "-b", "--show-bbox", action="store_true", help="Show bounding box."
   )
  return parser.parse_args()

Функция arg_parser , обрабатывает анализ двух наших (обязательных) аргументов командной строки и необязательно Show-Bbox аргумент, который позволяет отображать вывод на наш экран. Вход Аргумент берет на себя изображение или видео -путь и канал веб -камеры. Нашим вторым необходимым аргументом будет имя и путь (за исключением расширения), которые были нашими OpenVino модель расположен. Поскольку у нас импортируются наши пакеты, и наши аргументы командной строки проанализированы, мы можем продолжать реализовать нашу основную функцию.

def main(args):
   input_feed = InputFeeder(input_feed=args.input)
   face_detector = face_detection.FaceDetection(
     model_name=args.model, input_feed=input_feed
   )

  for frame in input_feed.next_frame(progress=False):
     inference_results = face_detector.predict(frame, show_bbox=args.show_bbox)
    if args.show_bbox:
      input_feed.show(frame)
   input_feed.close()

if __name__ == "__main__":
   args = arg_parser()
  main(args)

Строка 2 : Обрабатывает Inputfeeder который является класс Это в основном обрабатывает ввод и создает объект input_feed который будет использоваться позже.

Строка 3-5 : Создает face_detector объект, который будет обрабатывать вход и вывод. Мы называем класс face_detection. Facedetection который требует model_name а также input_feed Объект (в основном для определения ширины и высоты нашего изображения/видео/CAM ввода).

Строка 7-8 : Петчики над кадром (ы) из input_feed и захватывает текущую кадр и передает его в нашем face_detector.predict Анкет Эта функция, ответственная за выполнение вывода, и результаты хранятся в sepence_results толковый словарь. Этот словарь содержит обработанный выход (пара ключей/значения) в форме списка координат прямоугольного ограничивающего бокса. Если args.show_bbox это Истинный Затем будет нарисован прямоугольник вокруг обнаруженного лица.

Строка 9-10 : Проверяет, если args.show_bbox это правда, а затем отображает текущий кадр на наш экран с зеленым прямоугольником вокруг лица (если есть).

Строка 11 : Изящно очищает и закрывает любые открытые окна.

Строка 14-16 : Код верхнего уровня-это Если блокировать. __name__ это встроенная переменная, которая оценивается на имя текущего модуля. Однако Если Модуль запускается напрямую (как в python main.py ), затем __name__ Вместо этого устанавливается на строку "__main__" Анкет 1

Таким образом, запустив логику под блоком, в данном случае он вызовет arg_parser и результаты будут храниться в args После этого вызов Главный Функция определена выше при передаче args Анкет

Клонировать репозиторий или проверить пример Применение обнаружения лица

Прогулка с учебным пособием

Посмотрите полный учебник и код.

Приведенный выше пример иллюстрирует, насколько просто создать приложение для обнаружения лица внизу 10 строк кода (исключая функцию arg_parser , предполагая, что модель и Вход жестко переписываются.). Это из -за pyvino_utils Библиотека, которая делает для нас всю тяжелую работу, поскольку нам не нужно создавать модули/классы для обработки/обработки ввода и вывода.

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

Оригинал: “https://dev.to/mmphego/create-a-face-detection-application-with-less-than-10-lines-of-code-bjn”