Skip to content

Flouter les objets en utilisant Ultralytics YOLO11 🚀

Qu'est-ce que le flou artistique ?

Le flou d'objet avec Ultralytics YOLO11 consiste à appliquer un effet de flou à des objets spécifiques détectés dans une image ou une vidéo. Pour ce faire, les capacités du modèle YOLO11 permettent d'identifier et de manipuler des objets dans une scène donnée.



Regarder : Floutage d'objets Ă  l'aide de Ultralytics YOLO11

Avantages du flou artistique ?

  • Protection de la vie privĂ©e: Le flou artistique est un outil efficace pour protĂ©ger la vie privĂ©e en dissimulant les informations sensibles ou personnellement identifiables dans les images ou les vidĂ©os.
  • Mise au point sĂ©lective: YOLO11 permet un flou sĂ©lectif, permettant aux utilisateurs de cibler des objets spĂ©cifiques, assurant un Ă©quilibre entre le respect de la vie privĂ©e et la conservation d'informations visuelles pertinentes.
  • Traitement en temps rĂ©el: YOLO11 L'efficacitĂ© du système permet de brouiller les objets en temps rĂ©el, ce qui le rend adaptĂ© aux applications nĂ©cessitant des amĂ©liorations de la confidentialitĂ© Ă  la volĂ©e dans des environnements dynamiques.

Floutage d'objets Ă  l'aide de YOLO11 Exemple

import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors

model = YOLO("yolo11n.pt")
names = model.names

cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

# Blur ratio
blur_ratio = 50

# Video writer
video_writer = cv2.VideoWriter("object_blurring_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = model.predict(im0, show=False)
    boxes = results[0].boxes.xyxy.cpu().tolist()
    clss = results[0].boxes.cls.cpu().tolist()
    annotator = Annotator(im0, line_width=2, example=names)

    if boxes is not None:
        for box, cls in zip(boxes, clss):
            annotator.box_label(box, color=colors(int(cls), True), label=names[int(cls)])

            obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]
            blur_obj = cv2.blur(obj, (blur_ratio, blur_ratio))

            im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])] = blur_obj

    cv2.imshow("ultralytics", im0)
    video_writer.write(im0)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
video_writer.release()
cv2.destroyAllWindows()

Arguments model.predict

Argument Type DĂ©faut Description
source str 'ultralytics/assets' Spécifie la source de données pour l'inférence. Il peut s'agir d'un chemin d'accès à une image, d'un fichier vidéo, d'un répertoire, d'une URL ou de l'identifiant d'un appareil pour les flux en direct. La prise en charge d'un large éventail de formats et de sources permet une application flexible à différents types d'entrées.
conf float 0.25 Définit le seuil de confiance minimum pour les détections. Les objets détectés avec un niveau de confiance inférieur à ce seuil ne seront pas pris en compte. L'ajustement de cette valeur peut contribuer à réduire le nombre de faux positifs.
iou float 0.7 Seuil d'intersection au-dessus de l'union (IoU) pour la suppression non maximale (NMS). Des valeurs plus faibles permettent de réduire le nombre de détections en éliminant les boîtes qui se chevauchent, ce qui est utile pour réduire les doublons.
imgsz int or tuple 640 Définit la taille de l'image pour l'inférence. Peut être un seul entier 640 pour un redimensionnement carré ou un tuple (hauteur, largeur). Un dimensionnement adéquat peut améliorer la détection précision et la vitesse de traitement.
half bool False Permet l'inférence en demi-précision (FP16), ce qui peut accélérer l'inférence du modèle sur les GPU pris en charge avec un impact minimal sur la précision.
device str None Spécifie le dispositif d'inférence (par ex, cpu, cuda:0 ou 0). Permet aux utilisateurs de choisir entre CPU, un GPU spécifique ou d'autres dispositifs de calcul pour l'exécution du modèle.
batch int 1 Spécifie la taille du lot pour l'inférence (ne fonctionne que lorsque la source est un répertoire, un fichier vidéo ou .txt fichier). Une taille de lot plus importante peut permettre un débit plus élevé, en réduisant le temps total nécessaire à l'inférence.
max_det int 300 Nombre maximal de détections autorisées par image. Limite le nombre total d'objets que le modèle peut détecter en une seule inférence, ce qui permet d'éviter les sorties excessives dans les scènes denses.
vid_stride int 1 Saut d'images pour les entrées vidéo. Permet de sauter des images dans les vidéos pour accélérer le traitement au détriment de la résolution temporelle. Une valeur de 1 traite chaque image, les valeurs supérieures sautent des images.
stream_buffer bool False Détermine s'il faut mettre en file d'attente les images entrantes pour les flux vidéo. Si cette option est activée, l'image est mise en file d'attente. FalseSi `True', les anciennes images sont supprimées pour laisser place aux nouvelles images (optimisé pour les applications en temps réel). Si `True', les nouvelles images sont mises en file d'attente dans un tampon, ce qui garantit qu'aucune image ne sera sautée, mais entraînera une latence si le nombre d'images par seconde de l'inférence est inférieur au nombre d'images par seconde du flux.
visualize bool False Active la visualisation des caractéristiques du modèle pendant l'inférence, donnant un aperçu de ce que le modèle "voit". Utile pour le débogage et l'interprétation du modèle.
augment bool False Permet l'augmentation du temps de test (TTA) pour les prédictions, ce qui peut améliorer la robustesse de la détection au détriment de la vitesse d'inférence.
agnostic_nms bool False Permet la suppression non maximale (NMS) indépendante de la classe, qui fusionne les boîtes de différentes classes qui se chevauchent. Utile dans les scénarios de détection multi-classes où le chevauchement des classes est courant.
classes list[int] None Filtre les prédictions sur un ensemble d'identifiants de classes. Seules les détections appartenant aux classes spécifiées seront renvoyées. Utile pour se concentrer sur les objets pertinents dans les tâches de détection multi-classes.
retina_masks bool False Renvoie des masques de segmentation à haute résolution. Les masques retournés (masks.data) correspondront à la taille de l'image originale si elles sont activées. S'ils sont désactivés, ils ont la taille de l'image utilisée lors de l'inférence.
embed list[int] None Spécifie les couches à partir desquelles il faut extraire les vecteurs de caractéristiques ou les encastrements. Utile pour les tâches en aval telles que le regroupement ou la recherche de similarités.
project str None Nom du répertoire du projet dans lequel les résultats de la prédiction sont enregistrés si save est activée.
name str None Nom de l'exécution de la prédiction. Utilisé pour créer un sous-répertoire dans le dossier du projet, où les résultats de la prédiction sont stockés si save est activée.

FAQ

Qu'est-ce que le flou artistique avec Ultralytics YOLO11 ?

Le flou d'objet avec Ultralytics YOLO11 consiste à détecter et à appliquer automatiquement un effet de flou à des objets spécifiques dans des images ou des vidéos. Cette technique renforce la protection de la vie privée en dissimulant les informations sensibles tout en conservant les données visuelles pertinentes. YOLO11 Grâce à ses capacités de traitement en temps réel, le système convient aux applications nécessitant une protection immédiate de la vie privée et des ajustements sélectifs de la mise au point.

Comment puis-je mettre en place un flou d'objet en temps réel en utilisant YOLO11?

Pour mettre en œuvre le flou d'objet en temps réel avec YOLO11, suivez l'exemple fourni par Python . Il s'agit d'utiliser YOLO11 pour la détection d'objets et OpenCV pour l'application de l'effet de flou. Voici une version simplifiée :

import cv2

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break

    results = model.predict(im0, show=False)
    for box in results[0].boxes.xyxy.cpu().tolist():
        obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]
        im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])] = cv2.blur(obj, (50, 50))

    cv2.imshow("YOLO11 Blurring", im0)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

Quels sont les avantages de l'utilisation de Ultralytics YOLO11 pour le floutage d'objets ?

Ultralytics YOLO11 offre plusieurs avantages pour le floutage d'objets :

  • Protection de la vie privĂ©e: Masquer efficacement les informations sensibles ou identifiables.
  • Mise au point sĂ©lective: Ciblez des objets spĂ©cifiques pour les rendre flous, tout en conservant le contenu visuel essentiel.
  • Traitement en temps rĂ©el: ExĂ©cution efficace du floutage d'objets dans des environnements dynamiques, adaptĂ©e Ă  l'amĂ©lioration instantanĂ©e de la protection de la vie privĂ©e.

Pour des applications plus détaillées, consultez la section sur les avantages du flou d'objet.

Puis-je utiliser Ultralytics YOLO11 pour brouiller les visages dans une vidéo pour des raisons de confidentialité ?

Oui, Ultralytics YOLO11 peut être configuré pour détecter et rendre flous les visages dans les vidéos afin de protéger la vie privée. En entraînant ou en utilisant un modèle pré-entraîné pour reconnaître spécifiquement les visages, les résultats de la détection peuvent être traités avec OpenCV pour appliquer un effet de flou. Reportez-vous à notre guide sur la détection d'objets avec YOLO11 et modifiez le code pour cibler la détection de visages.

Comment YOLO11 se compare-t-il à d'autres modèles de détection d'objets tels que Faster R-CNN pour les objets flous ?

Ultralytics YOLO11 est généralement plus rapide que des modèles tels que Faster R-CNN, ce qui le rend plus adapté aux applications en temps réel. Bien que les deux modèles offrent une détection précise, l'architecture de YOLO11 est optimisée pour une inférence rapide, ce qui est essentiel pour des tâches telles que le floutage d'objets en temps réel. Pour en savoir plus sur les différences techniques et les mesures de performance, consultez notre documentation surYOLO11 .

📅C réé il y a 11 mois ✏️ Mis à jour il y a 2 mois

Commentaires