Flouter les objets à l'aide de Ultralytics YOLO11 🚀
Qu'est-ce que le flou artistique ?
Regarde : Rendre les objets flous à l'aide de Ultralytics YOLO11
Avantages du flou artistique ?
- Protection de la vie privée: Le flou d'objet 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, ce qui permet aux utilisateurs de cibler des objets spécifiques, en assurant un équilibre entre le respect de la vie privée et la conservation des informations visuelles pertinentes.
- Traitement en temps réel: L'efficacité de YOLO11 permet de flouter 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.
Exemple de flou d'objet avec YOLO11
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. Prend en charge un large éventail de formats et de sources, ce qui permet une application flexible sur 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. Le réglage de cette valeur peut aider à réduire les 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 entraînent moins 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 bon redimensionnement 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. |
max_det | int | 300 | Nombre maximum 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 trames entrantes pour les flux vidéo. Dans ce cas, la mise en file d'attente des trames entrantes est activée. False Si `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 n'est sautée, mais entraîne une latence si le taux d'images par seconde de l'inférence est inférieur au taux d'images par seconde du flux. |
visualize | bool | False | Active la visualisation des caractéristiques du modèle pendant l'inférence, ce qui permet de comprendre 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, améliorant potentiellement la robustesse de la détection au prix de la vitesse d'inférence. |
agnostic_nms | bool | False | Permet la Suppression non maximale (SNM) agnostique des classes, 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 fréquent. |
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 ) correspondra à la taille de l'image originale si elle est activée. 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 où 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 ?
Comment puis-je mettre en place un flou d'objet en temps réel à l'aide de YOLO11 ?
Pour mettre en œuvre le flou d'objet en temps réel avec YOLO11, suis l'exemple fourni sur Python . Il s'agit d'utiliser YOLO11 pour la détection des 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 des objets :
- Protection de la vie privée: Occulte efficacement les informations sensibles ou identifiables.
- Mise au point sélective: Cible des objets spécifiques pour les rendre flous, en conservant le contenu visuel essentiel.
- Traitement en temps réel: Exécuter efficacement le floutage des objets dans des environnements dynamiques, adapté à l'amélioration instantanée de la vie privée.
Pour des applications plus détaillées, consulte la section sur les avantages du flou d'objet.
Puis-je utiliser Ultralytics YOLO11 pour flouter les visages dans une vidéo pour des raisons de confidentialité ?
Oui, Ultralytics YOLO11 peut être configuré pour détecter et flouter 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. Reporte-toi à notre guide sur la détection d'objets avec YOLO11 et modifie le code pour cibler la détection des visages.
Comment YOLO11 se compare-t-il à d'autres modèles de détection d'objets comme Faster R-CNN pour les objets flous ?
Ultralytics YOLO11 surpasse généralement les modèles comme Faster R-CNN en termes de vitesse, 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, consulte notre documentation sur YOLO11.