コンテンツへスキップ

オブジェクトの切り抜きUltralytics YOLOv8

オブジェクトの切り抜きとは?

によるオブジェクトの切り出し Ultralytics YOLOv8でのオブジェクトの切り出しは、画像やビデオから検出された特定のオブジェクトを分離して抽出することです。YOLOv8 のモデル機能を利用して物体を正確に識別し、輪郭を描くことで、さらなる分析や操作のための正確な切り出しが可能になります。



見るんだ: オブジェクトの切り抜きUltralytics YOLOv8

オブジェクトクロッピングの利点

  • フォーカス分析:YOLOv8 は、ターゲットを絞ったオブジェクトの切り取りを容易にし、シーン内の個々のアイテムの詳細な検査や処理を可能にします。
  • データ量の削減:関連性のあるオブジェクトのみを抽出することで、オブジェクトの切り出しはデータサイズを最小化するのに役立ち、保存、送信、またはその後の計算タスクを効率化する。
  • 精度の向上:YOLOv8 のオブジェクト検出精度は、切り取られたオブジェクトの空間的な関係を維持し、詳細な分析のための視覚情報の完全性を維持します。

ビジュアル

空港の手荷物
空港のベルトコンベア スーツケースのクロッピングUltralytics YOLOv8
空港のベルトコンベアーでスーツケースが切り取られる。Ultralytics YOLOv8

YOLOv8 例を用いたオブジェクトの切り抜き

import os

import cv2

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

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

crop_dir_name = "ultralytics_crop"
if not os.path.exists(crop_dir_name):
    os.mkdir(crop_dir_name)

# Video writer
video_writer = cv2.VideoWriter("object_cropping_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

idx = 0
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):
            idx += 1
            annotator.box_label(box, color=colors(int(cls), True), label=names[int(cls)])

            crop_obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]

            cv2.imwrite(os.path.join(crop_dir_name, str(idx) + ".png"), crop_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' 推論のデータソースを指定します。画像パス、ビデオファイル、ディレクトリ、URL、またはライブフィードのデバイスIDを指定できます。幅広いフォーマットとソースをサポートしているため、さまざまな入力タイプに柔軟に対応できます。
conf float 0.25 検出の最小信頼度しきい値を設定します。この閾値以下の信頼度で検出されたオブジェクトは無視されます。この値を調整することで、誤検出を減らすことができます。
iou float 0.7 Non-Maximum Suppression (NMS)のIntersection Over Union (IoU)しきい値。値が低いほど、重複するボックスが排除されるため検出数が少なくなり、重複を減らすのに便利です。
imgsz int or tuple 640 推論のための画像サイズを定義する。単一の整数値 640 を使用することで、正方形のサイズ変更、または(高さ、幅)のタプルを使用することができます。適切なサイジングは、検出精度と処理速度を向上させます。
half bool False 半精度(FP16)推論が可能になり、サポートされているGPUでのモデル推論を、精度への影響を最小限に抑えながら高速化することができます。
device str None 推論を行うデバイスを指定する(例. cpu, cuda:0 または 0).CPU 、特定のGPU 、またはモデル実行のための他のコンピュート・デバイスを選択することができます。
max_det int 300 画像あたりの最大検出数。1回の推論でモデルが検出できるオブジェクトの総数を制限し、密集したシーンでの過剰な出力を防ぎます。
vid_stride int 1 ビデオ入力のフレームストライド。時間的な解像度を犠牲にして処理を高速化するために、ビデオのフレームをスキップできるようにする。1の値はすべてのフレームを処理し、それ以上の値はフレームをスキップする。
stream_buffer bool False ビデオストリームを処理する際に、すべてのフレームをバッファリングするかどうかを決定する (True)、あるいはモデルが最新のフレーム(False).リアルタイムアプリケーションに便利。
visualize bool False 推論中にモデルの特徴を可視化し、モデルが何を「見て」いるのかを知ることができます。デバッグやモデルの解釈に役立ちます。
augment bool False 予測に対するテスト時間拡張(TTA)を可能にし、推論速度を犠牲にすることで検出のロバスト性を向上させる可能性がある。
agnostic_nms bool False 異なるクラスのオーバーラップしたボックスをマージする、クラスにとらわれない非最大抑制(NMS)を有効にします。クラスの重複が一般的なマルチクラス検出シナリオで有用。
classes list[int] None クラス ID のセットに予測をフィルタリングします。指定されたクラスに属する検出のみが返されます。複数クラスの検出タスクで、関連するオブジェクトに焦点を当てるのに便利です。
retina_masks bool False モデルに高解像度のセグメンテーションマスクがあれば、それを使用する。これにより、セグメンテーションタスクのマスク品質が向上し、より細かいディテールが得られます。
embed list[int] None 特徴ベクトルまたは埋め込みを抽出するレイヤを指定します。クラスタリングや類似検索のような下流のタスクに便利です。

よくあるご質問

Ultralytics YOLOv8 、どのように機能するのですか?

を使ったオブジェクトの切り出しでは、 の検出機能に基づいて、画像やビデオから特定のオブジェクトを分離して抽出する。 Ultralytics YOLOv8を使ったオブジェクトの切り出しでは、YOLOv8 の検出能力に基づいて、画像やビデオから特定のオブジェクトを分離して抽出する。このプロセスでは、YOLOv8 を活用することで、集中的な分析、データ量の削減、精度の向上が可能になり、高い精度でオブジェクトを識別し、それに応じて切り抜くことができます。詳細なチュートリアルについては、オブジェクトの切り抜き例を参照してください。

なぜ他のソリューションではなく、Ultralytics YOLOv8 。

Ultralytics YOLOv8 は、その精度、スピード、使いやすさで際立っています。詳細かつ正確なオブジェクトの検出とクロッピングが可能で、集中的な分析や高いデータ完全性を必要とするアプリケーションに不可欠である。さらに、YOLOv8 は、OpenVINO やTensorRT のようなツールとシームレスに統合され、リアルタイム機能と多様なハードウェア上での最適化を必要とするデプロイメントに対応します。モデルのエクスポートに関するガイドで、その利点をご覧ください。

オブジェクトの切り抜きでデータセットのデータ量を減らすには?

Ultralytics YOLOv8 を使って画像や動画から関連するオブジェクトだけを切り抜くことで、データサイズを大幅に削減し、保存や処理の効率を上げることができます。このプロセスでは、モデルをトレーニングして特定のオブジェクトを検出し、その結果を使用してこれらの部分のみを切り抜いて保存します。Ultralytics YOLOv8 の機能を活用するための詳細については、クイックスタートガイドをご覧ください。

Ultralytics YOLOv8 、リアルタイムのビデオ解析やオブジェクトの切り出しに使用できますか?

はい、Ultralytics YOLOv8 、リアルタイムのビデオフィードを処理して、動的にオブジェクトを検出し、切り抜くことができます。このモデルの高速推論機能は、監視、スポーツ分析、自動検査システムなどのリアルタイムアプリケーションに最適です。トラッキングモードと予測モードをチェックして、リアルタイム処理の実装方法を理解しましょう。

YOLOv8 、オブジェクトのトリミングを効率的に実行するためのハードウェア要件は?

Ultralytics YOLOv8 は、CPU とGPU の両方の環境に最適化されているが、最適なパフォーマンスを得るには、特にリアルタイムまたは大容量の推論には、専用のGPU (NVIDIA Tesla、RTXシリーズなど)を推奨する。軽量デバイスへの展開には、CoreML foriOS または TFLite forAndroid の使用を検討してください。サポートされるデバイスとフォーマットの詳細は、モデル展開オプションに記載されています。



作成日:2024-01-09 更新日:2024-07-05
著者:Glenn-Jocher(8),RizwanMunawar(2),IvorZhu331(1),AyushExel(1)

コメント