İçeriğe geç

Ultralytics YOLOv8 kullanarak Nesne Bulanıklaştırma 🚀

Nesne Bulanıklaştırma Nedir?

Nesne bulanıklaştırma ile Ultralytics YOLOv8 bir görüntü veya videoda algılanan belirli nesnelere bulanıklaştırma efekti uygulanmasını içerir. Bu, belirli bir sahnedeki nesneleri tanımlamak ve manipüle etmek için YOLOv8 model yetenekleri kullanılarak gerçekleştirilebilir.

Nesne Bulanıklaştırmanın Avantajları?

  • Gizlilik Koruması: Nesne bulanıklaştırma, görüntü veya videolardaki hassas veya kişisel olarak tanımlanabilir bilgileri gizleyerek gizliliği korumak için etkili bir araçtır.
  • Seçici Odak: YOLOv8 seçici bulanıklaştırmaya olanak tanıyarak kullanıcıların belirli nesneleri hedeflemesini sağlar, gizlilik ve ilgili görsel bilgilerin korunması arasında bir denge sağlar.
  • Gerçek Zamanlı İşleme: YOLOv8'nin verimliliği, gerçek zamanlı olarak nesne bulanıklaştırmaya olanak tanıyarak dinamik ortamlarda anında gizlilik geliştirmeleri gerektiren uygulamalar için uygun hale getirir.

YOLOv8 kullanarak Nesne Bulanıklaştırma Örneği

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

model = YOLO("yolov8n.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()

Argümanlar model.predict

İsim Tip Varsayılan Açıklama
source str 'ultralytics/assets' resimler veya videolar için kaynak dizin
conf float 0.25 algılama için nesne güven eşiği
iou float 0.7 NMS için birleşim üzerinde kesişim (IoU) eşiği
imgsz int or tuple 640 skaler veya (h, w) listesi olarak görüntü boyutu, yani (640, 480)
half bool False yarım hassasiyet (FP16) kullanın
device None or str None üzerinde çalışılacak cihaz, yani cuda device=0/1/2/3 veya device=cpu
max_det int 300 görüntü başına maksimum algılama sayısı
vid_stride bool False video kare hızı adımı
stream_buffer bool False tüm akış karelerini arabelleğe alır (True) veya en son kareyi döndürür (False)
visualize bool False model özelliklerini görselleştirin
augment bool False tahmin kaynaklarına görüntü büyütme uygulayın
agnostic_nms bool False sınıf-agnostik NMS
classes list[int] None sonuçları sınıfa göre filtreleyin, yani classes=0 veya classes=[0,2,3]
retina_masks bool False yüksek çözünürlüklü segmentasyon maskeleri kullanın
embed list[int] None Verilen katmanlardan özellik vektörleri/gömme döndürür


Oluşturma 2024-01-09, Güncelleme 2024-01-15
Yazarlar: glenn-jocher (2), AyushExel (1), RizwanMunawar (1)

Yorumlar