«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > ИИ > Обнаружение пола с OpenCV и Roboflow в Python - Analytics Vidhya

Обнаружение пола с OpenCV и Roboflow в Python - Analytics Vidhya

Опубликовано в 2025-04-29
Просматривать:766

Введение

обнаружение пола из изображений на лице является одним из многих захватывающих приложений компьютерного зрения. В этом проекте мы объединяем OpenCV для местоположения конфронта и API Roboflow для гендерной классификации, создавая устройство, которое идентифицирует лица, проверяет их и предсказывает их пол. Мы используем Python, особенно в Google Colab, для ввода и запуска этого кода. Этот прямой дает простую прохождение кода, разъясняя каждый шаг, чтобы вы могли понять и применить его к своим предприятиям.

]

учебный объект

]
    ]
  • понять, как реализовать обнаружение лица, используя HAAR Cascade OpenCV.
  • ]
  • научиться интегрировать API Roboflow для гендерной классификации.
  • ]
  • исследуйте методы для обработки и манипулирования изображениями в Python.
  • ]
  • ] визуализируйте результаты обнаружения с использованием matplotlib.
  • ]
  • Разработка практических навыков в сочетании ИИ и компьютерного видения для реальных приложений.
]

Эта статья была опубликована как часть Data Science Blogathon. таблица содержимого

Как обнаружить пол, используя OpenCV и Roboflow в Python? Image

    Шаг 4: Настройка API обнаружения пола
    • Шаг 5: Обработка каждого обнаруженного лица
    • Шаг 6: отображение результатов
    • Как обнаружить пол, используя OpenCV и Roboflow в Python?
    • Шаг 1: Импорт библиотек и загрузку изображения
    • ]
    • первичным шагом является следствие жизненно важных библиотек. Мы используем OpenCV для подготовки изображений, Numpy для работы с кластерами и Matplotlib, чтобы визуализировать это. Мы также загрузили изображение, которое содержало лица, которые мы хотели проанализировать.
    • ]
    • из файлов импорта Google.colab Импорт CV2 импортировать Numpy как NP из Matplotlib import pyplot в качестве plt от screence_sdk import spencehttpclient # Загрузить изображение uploaded = files.upload () # Загрузите изображение для имени файла в upladed.keys (): img_path = имя файла
    • ]
    • в Google Colab, работа files.upload () дает клиентам возможность передавать записи, такие как картинки, из их соседних машин в среду Colab. После загрузки изображение откладывается в справочнике слова с именем переносимым, где клавиши сравниваются с именами записей. А затем используется для извлечения пути файла для дальнейшей обработки. Для обработки задач обработки изображений OpenCV используется для обнаружения лиц и привлечения ограничивающих ящиков вокруг них. В то же время, Matplotlib используется для визуализации результатов, включая отображение изображения и обрезанные лица.
    ]
  • Шаг 2: Загрузка каскадной модели HAAR для обнаружения лица
  • ]
  • Далее мы складываем демонстрацию HAAR от OpenCV, которая предварительно обучена для идентификации лица. Эта модель сканирует изображение для шаблонов, напоминающих человеческие лица, и возвращает их координаты.
]

# Загрузите каскадную модель HAAR для обнаружения лица face_cascade = cv2.cascadeclassifier (cv2.data.harcascades 'haarcascade_frontalface_default.xml')

]

это обычно является распространенной стратегией для обнаружения объектов. Он идентифицирует края, текстуры и шаблоны, связанные с объектом (в данном случае, лица). OpenCV обеспечивает предварительно обученную модель обнаружения поверхности, которая загружается с использованием `cascadeclassifier.`

]

Шаг 3: Обнаружение лица в изображении

]

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

]
from google.colab import files
import cv2
import numpy as np
from matplotlib import pyplot as plt
from inference_sdk import InferenceHTTPClient

# Upload image
uploaded = files.upload()

# Load the image
for filename in uploaded.keys():
    img_path = filename
]

]

Загрузка и преобразование изображения:

]

]

Используйте cv2.imread (), чтобы сложить перенесенную картинку.
# Load the Haar Cascade model for face detection
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades   'haarcascade_frontalface_default.xml')
измените изображение на серогоском с помощью CV2.cvtcolor (), чтобы уменьшить сложность и обновление обнаружения.

]

]

]

обнаружение лиц:

]
# Load the image and convert to grayscale
img = cv2.imread(img_path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Detect faces in the image
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
используйте Detectmultiscale (), чтобы найти лица на изображении серого.
  • Функция масштабирует изображение и проверяет различные области на наличие рисунков. ] параметры, такие как ScaleFactor и Minneighbors, регулируют чувствительность и точность обнаружения.
      ]
    • ]
    • ]
    • ]
    • Шаг 4: Настройка API обнаружения пола
    ]
  • ] Теперь, когда мы обнаружили лица, мы инициализируем API Roboflow, используя anferencehttpclient, чтобы предсказать пол каждого обнаруженного лица.
  • # инициализировать spencehttpclient для обнаружения пола Client = sepencehttpclient ( api_url = "https://detect.roboflow.com", api_key = "use_your_api" ) ]
    • saneperhttpclient упрощает взаимодействие с предварительно обученными моделями Roboflow, настраивая клиента с URL API Roboflow и ключом API. Эта настройка позволяет отправлять запросы на модель обнаружения пола, размещенную на Roboflow. Ключ API служит уникальным идентификатором для аутентификации, позволяя безопасному доступу и использованию API Roboflow.
    • ]
    • Шаг 5: Обработка каждого обнаруженного лица
    • ]
    мы пробираемся через каждое обнаруженное лицо, нарисуем прямоугольник вокруг него и обнимаем изображение лица для дальнейшей обработки. Каждое обрезанное изображение лица временно сохраняется и отправляется в API Roboflow, где для прогнозирования пола используется модель пола-обнаружения-Qiyyg/2.
  • ]
модель по полу-вымечению-qiyyg/2 представляет собой предварительно обученную модель глубокого обучения, оптимизированную для классификации пола как мужчины или женщины на основе особенностей лица. Он обеспечивает прогнозы с оценкой достоверности, что указывает на то, насколько определенная модель о классификации. Модель обучается на надежном наборе данных, позволяя ей делать точные прогнозы в широком диапазоне изображений лица. Эти прогнозы возвращаются API и используются для маркировки каждого лица идентифицированным уровнем пола и доверия.

]

# Инициализировать количество лица face_count = 0 # Список для хранения обрезанных изображений лица с этикетками cropped_faces = [] # Обработка каждого обнаруженного лица для (x, y, w, h) на лицах: face_count = 1 # Нарисуйте прямоугольники вокруг обнаруженных лиц CV2.Rectangle (img, (x, y), (x w, y h), (255, 0, 0), 2) # Извлечь область лица face_img = img [y: y h, x: x w] # Временно сохранить изображение лица face_img_path = 'temp_face.jpg' cv2.imwrite (face_img_path, face_img) # Обнаружение пола с использованием spencehttpclient result = client.infer (face_img_path, model_) Если «прогнозы» в результате и результате ['' прогнозы ']: Прогнозирование = результат ['прогнозы'] [0] пол = прогноз ['class'] Доверие = прогнозирование ['ultey'] # Пометьте прямоугольник с полом и уверенностью label = f '{gender} ({уверенность: .2f})' cv2.puttext (img, label, (x, y - 10), cv2.font_hershey_simplex, 0,8, (255, 0, 0), 2) # Добавьте обрезанное лицо с этикеткой в ​​список cropped_faces.append ((face_img, метка))

]

для каждого распознаваемого лица система рисует ограничивающую коробку, используя CV2.Rectangle (), чтобы визуально выделить лицо в изображении. Затем он разбудит область лица, используя нарезку (face_img = img [y: y h, x: x w]), изолируя его для дальнейшей обработки. После временного сохранения обрезанного лица система отправляет его в модель Roboflow через client.infer (), которая возвращает гендерное прогноз вместе с оценкой доверия. Система добавляет эти результаты в виде текстовых меток над каждой поверхностью с использованием cv2.puttext (), обеспечивая четкое и информативное наложение.
# Load the Haar Cascade model for face detection
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades   'haarcascade_frontalface_default.xml')
Шаг 6: отображение результатов

] Обнаружение пола с OpenCV и Roboflow в Python - Analytics Vidhya Наконец, мы визуализируем выход. Сначала мы преобразуем изображение из BGR в RGB (как OpenCV использует BGR по умолчанию), а затем отображает обнаруженные лица и гендерные прогнозы. После этого мы показываем отдельные обрезанные лица с их соответствующими этикетками.

]

# преобразовать изображение из BGR в RGB для отображения img_rgb = cv2.cvtcolor (img, cv2.color_bgr2rgb) # Отображать изображение с обнаруженными лицами и гендерными метками Plt.Figure (FigSize = (10, 10)) plt.imshow (img_rgb) plt.axis ('off') plt.title (f "обнаруженные лица: {face_count}") plt.show () # Отображать каждую обрезанную поверхность с его этикеткой горизонтально Рис, оси = plt.subplots (1, face_count, Figsize = (15, 5)) для i, (face_img, метка) в перечислении (cropped_faces): face_rgb = cv2.cvtcolor (face_img, cv2.color_bgr2rgb) Оси [i] .imshow (face_rgb) Оси [i] .axis ('off') Оси [i] .set_title (метка) plt.show ()

]

]

преобразование изображения:

] Поскольку OpenCV использует формат BGR по умолчанию, мы преобразуем изображение в RGB, используя CV2.cvtcolor () для правильного цветового отображения в Matplotlib.

# Initialize face count
face_count = 0

# List to store cropped face images with labels
cropped_faces = []

# Process each detected face
for (x, y, w, h) in faces:
    face_count  = 1
    # Draw rectangles around the detected faces
    cv2.rectangle(img, (x, y), (x   w, y   h), (255, 0, 0), 2)
    
    # Extract the face region
    face_img = img[y:y h, x:x w]
    
    # Save the face image temporarily
    face_img_path = 'temp_face.jpg'
    cv2.imwrite(face_img_path, face_img)
    
    # Detect gender using the InferenceHTTPClient
    result = CLIENT.infer(face_img_path, model_)
    
    if 'predictions' in result and result['predictions']:
        prediction = result['predictions'][0]
        gender = prediction['class']
        confidence = prediction['confidence']
        
        # Label the rectangle with the gender and confidence
        label = f'{gender} ({confidence:.2f})'
        cv2.putText(img, label, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 0, 0), 2)
        
        # Add the cropped face with label to the list
        cropped_faces.append((face_img, label))
]

]

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

]

мы также показываем каждое обрезанное изображение лица и прогнозируемое гендерное метку в отдельном сюжете.

]

]
# Load the image and convert to grayscale
img = cv2.imread(img_path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Detect faces in the image
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
]
    исходные данные
  • ]
  • данные результата вывода ]

Заключение

в этом руководстве мы успешно разработали мощное обнаружение пола с OpenCV и Roboflow в Python. Реализуя OpenCV для обнаружения лица и Roboflow для гендерного прогноза, мы создали систему, которая может точно идентифицировать и классифицировать пол на изображениях. Добавление Matplotlib для визуализации еще больше улучшило наш проект, обеспечивая четкие и проницательные дисплеи результатов. Этот проект подчеркивает эффективность объединения этих технологий и демонстрирует их практические преимущества в реальных приложениях, предлагая надежное решение для задач обнаружения пола. Обнаружение пола с OpenCV и Roboflow в Python - Analytics Vidhya]

Key Takeaways

]

проект демонстрирует эффективный подход к обнаружению и классификации пола из изображений с использованием предварительно обученной модели ИИ. Демонстрация точно отличает сексуальную ориентацию с высокой уверенностью, демонстрируя его непоколебимое качество. Обнаружение пола с OpenCV и Roboflow в Python - Analytics Vidhya

, объединив такие устройства, как Roboflow для вычета AI, OpenCV для подготовки изображений и Matplotlib для визуализации, предприятие эффективно объединяет различные инновации для реализации своих целей.

] Обнаружение пола с OpenCV и Roboflow в Python - Analytics Vidhya способность системы различать и классифицировать пол разных людей на одной картине подчеркивает его энергичность и гибкость, что делает его подходящим для различных приложений.

]

использование предварительно обученной демонстрации гарантирует высокую точность в прогнозах, как доказано показателями определенности, указанных в предстоящем. Эта точность имеет решающее значение для приложений, требующих надежной гендерной классификации. Обнаружение пола с OpenCV и Roboflow в Python - Analytics Vidhya]

Проект использует методы визуализации для аннотирования изображений с обнаруженными лицами и прогнозируемыми полами. Это делает результаты более интерпретируемыми и ценными для дальнейшего анализа.

]

]

также чтение: именованная гендерная идентификация с использованием NLP и Python

]
    часто задаваемые вопросы
  • Q1.
  • Какова цель проекта? Проект направлен на обнаружение и классификацию пол из изображений с использованием ИИ. Он использует предварительно обученные модели для идентификации и маркировки полов отдельных лиц на фотографиях.
  • Q2.
  • Какие технологии и инструменты были использованы?
  • a. В проекте использовалась модель обнаружения пола Roboflow для вывода AI, OpenCV для обработки изображений и Matplotlib для визуализации. Он также использовал Python для сценариев и обработки данных.
Q3.

как работает модель обнаружения пола?

a. Модель анализирует изображения для обнаружения лиц, а затем классифицирует каждое обнаруженное лицо как мужчину или женщины на основе обученных алгоритмов ИИ. Он выводит доверительные оценки для прогнозов.

Q4. насколько точнее обнаружение пола? a. Модель демонстрирует высокую точность с доверительными показателями, указывающими на надежные прогнозы. Например, показатели доверия в результатах были выше 80%, показывая сильную производительность.

Q5. какие изображения могут обрабатывать модель?

]

СМИ, показанные в этой статье, не принадлежат аналитике Vidhya и используется по усмотрению автора. ]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3