コンテンツへスキップ

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 NMSのIoU(Intersection Over Union)しきい値
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 つまり、class=0、またはclass=[0,2,3]。
retina_masks bool False 高解像度のセグメンテーション・マスクを使用する
embed list[int] None 与えられたレイヤーから特徴ベクトル/埋め込みを返す


作成日:2024-01-09 更新日:2024-01-15
著者:glenn-jocher(2),AyushExel(1),chr043416@gmail.com(1)

コメント