В последние несколько месяцев я испачкал руки с 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”