ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ содСрТимому

Π Π°Π·ΠΌΡ‹Ρ‚ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8 πŸš€.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π°Π·ΠΌΡ‹Ρ‚ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²?

Π Π°Π·ΠΌΡ‹Ρ‚ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ultralytics YOLOv8 ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ эффСкта размытия ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎ. Π­Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ возмоТности ΠΌΠΎΠ΄Π΅Π»ΠΈ YOLOv8 для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ манипулирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π² Π΄Π°Π½Π½ΠΎΠΉ сцСнС.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° размытия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²?

  • Π—Π°Ρ‰ΠΈΡ‚Π° частной ΠΆΠΈΠ·Π½ΠΈ: Π Π°Π·ΠΌΡ‹Ρ‚ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² - это эффСктивный инструмСнт для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ приватности, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½Π° изобраТСниях ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎ.
  • Выборочная фокусировка: YOLOv8 позволяСт Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎ Ρ€Π°Π·ΠΌΡ‹Π²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, давая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π½Π°Ρ†Π΅Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, обСспСчивая баланс ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ сохранСниСм Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.
  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ: YOLOv8'Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ позволяСт Ρ€Π°Π·ΠΌΡ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ подходящим для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° Π»Π΅Ρ‚Ρƒ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹Ρ… срСдах.

Π Π°Π·ΠΌΡ‹Ρ‚ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° YOLOv8

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()

АргумСнты model.predict

Имя Π’ΠΈΠΏ По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ОписаниС
source str 'ultralytics/assets' исходный ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ для ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎ
conf float 0.25 ΠΏΠΎΡ€ΠΎΠ³ довСрия ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ для обнаруТСния
iou float 0.7 ΠŸΠΎΡ€ΠΎΠ³ пСрСсСчСния Π½Π°Π΄ объСдинСниСм (IoU) для NMS
imgsz int or tuple 640 Π Π°Π·ΠΌΠ΅Ρ€ изобраТСния Π² Π²ΠΈΠ΄Π΅ скаляра ΠΈΠ»ΠΈ списка (h, w), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ (640, 480)
half bool False Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π½ΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ (FP16)
device None or str None Устройство, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, cuda device=0/1/2/3 ΠΈΠ»ΠΈ device=cpu
max_det int 300 максимальноС количСство ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
vid_stride bool False частота ΠΊΠ°Π΄Ρ€ΠΎΠ² Π²ΠΈΠ΄Π΅ΠΎ
stream_buffer bool False Π‘ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΈΡ€ΡƒΠΉ всС ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Π΅ ΠΊΠ°Π΄Ρ€Ρ‹ (True) ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΠΉ самый послСдний ΠΊΠ°Π΄Ρ€ (False).
visualize bool False Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉ особСнности ΠΌΠΎΠ΄Π΅Π»ΠΈ
augment bool False ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠΉ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ изобраТСния для источников прСдсказаний
agnostic_nms bool False классово-диагностичСский NMS
classes list[int] None Π€ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎ классам, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ classes=0, ΠΈΠ»ΠΈ classes=[0,2,3]
retina_masks bool False ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ маски для сСгмСнтации с высоким Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ
embed list[int] None Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ²/вкраплСния ΠΈΠ· Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… слоСв


Боздано 2024-01-09, ОбновлСно 2024-01-15
Авторы: glenn-jocher (2), AyushExel (1), RizwanMunawar (1)

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ