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)