Ultralytics YOLO27:

Ultralytics YOLO26を使用した物体カウント#

物体カウントとは何ですか?#

Open Object Counting In Colab

Ultralytics YOLO26を使用した物体カウントでは、動画やカメラストリーム内の特定の物体を正確に識別してカウントします。YOLO26は、最先端のアルゴリズムとディープラーニング機能により、群衆分析や監視など、さまざまなシナリオで効率的かつ正確な物体カウントを実現し、リアルタイムアプリケーションで優れた性能を発揮します。



Watch: How to Perform Real-Time Object Counting with Ultralytics YOLO26 🚀

物体カウントのメリット#

  • リソースの最適化: 物体カウントは正確なカウントを提供することで、効率的なリソース管理を可能にし、在庫管理などのアプリケーションでリソース配分を最適化します。
  • セキュリティの強化: 物体カウントは、対象を正確に追跡してカウントすることでセキュリティと監視を強化し、プロアクティブな脅威検出を支援します。
  • 情報に基づく意思決定: 物体カウントは意思決定に役立つ貴重な洞察を提供し、小売、交通管理、その他さまざまな分野のプロセスを最適化します。

実際の用途#

物流水産養殖
Ultralytics YOLO26を使用したコンベヤーベルト上の小包のカウントUltralytics YOLO26を使用した海中の魚のカウント
Ultralytics YOLO26を使用したコンベヤーベルト上の小包のカウントUltralytics YOLO26を使用した海中の魚のカウント

YOLO26で物体をカウントする#

カウント用のregion(ラインの場合は2点、ポリゴンの場合は3点以上)を定義し、ObjectCounterソリューションに渡します。カウンターはフレーム間で各物体を追跡し、追跡対象の物体がラインを横切るか領域を通過したときにIN/OUTのカウントを集計し、出力動画に書き込める注釈付きフレームを返します。

Ultralytics YOLOを使用した物体カウント
# Run a counting example
yolo solutions count show=True

# Pass a source video
yolo solutions count source="path/to/video.mp4"

# Pass region coordinates
yolo solutions count region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"

region引数は、2点(ラインの場合)または3点以上のポリゴンを受け取ります。カウンターが進入と退出の位置を正確に認識できるよう、接続する順序で座標を定義します。

ObjectCounterの引数#

以下にObjectCounterの引数を示します。

引数デフォルト説明
modelstrNoneUltralytics YOLOモデルファイルへのパスです。
show_inboolTrueビデオストリームに入力カウントを表示するかどうかを制御するフラグです。
show_outboolTrueビデオストリームに出力カウントを表示するかどうかを制御するフラグです。
regionlistまたはdictNone関心領域を定義するポイントです。(x, y)タプルのリスト、または複数の領域に対応する領域名からポイントリストへの辞書(RegionCounterのみ)を指定します。Noneの場合、領域を必要とするソリューションはあらかじめ定義されたデフォルト値にフォールバックします。
line_widthint2ソリューションが描画するボックス、キーポイント、カウントの線の太さです。
verboseboolTrue入力形状、クラス数、処理速度をフレームごとにログに記録する機能を有効にします。トラッキング処理自体は常にサイレントです。

ObjectCounterソリューションでは、複数のtrack引数を使用できます。

引数デフォルト説明
trackerstr'botsort.yaml'使用するトラッキングアルゴリズムを指定します。組み込みオプション:botsort.yamlbytetrack.yamlocsort.yamldeepocsort.yamlfasttrack.yamltracktrack.yaml
conffloat0.25検出の信頼度しきい値を設定します。値を下げるとより多くのオブジェクトを追跡できますが、誤検出が含まれる可能性があります。
ioufloat0.7重複する検出結果をフィルタリングするためのIntersection over Union(IoU)しきい値を設定します。
classeslistNoneクラスインデックスで結果をフィルタリングします。たとえば、classes=[0, 2, 3]は指定されたクラスのみを追跡します。
devicestrNone推論に使用するデバイスを指定します(例:cpucuda:00)。CPU、特定のGPU、その他の計算デバイスから、モデルの実行に使用するものを選択できます。
imgszint or tuple640推論対象の画像サイズ:正方形の場合は整数、または (height, width) のペアです。形状はモデルのストライドに合わせて調整されます。
max_detint300トラッキング前にフレームごとに保持される検出の最大数。高密度なシーンにおいてソリューションが処理するオブジェクトの数を制限します。
quantizeint or strNone推論精度:PyTorchおよびTorchScriptモデルの場合は 16 (FP16)または 32 /未設定(FP32);その他のフォーマットは、その成果物とランタイムが選択する精度で計算を行います。非推奨となった half フラグに置き換わるものです。

さらに、以下に示す可視化引数もサポートされています。

引数デフォルト説明
showboolFalseTrueの場合、注釈付きの画像または動画をウィンドウに表示します。開発やテスト中の即時の視覚的フィードバックに役立ちます。
show_confboolTrue各検出のラベルの横に信頼度スコアを表示します。各検出に対するモデルの確信度を確認できます。
show_labelsboolTrue可視化出力に各検出のラベルを表示します。検出されたオブジェクトをすぐに把握できます。

FAQ#

  • Ultralytics YOLO26を使用して動画内の物体をカウントするには、次の手順に従います。

    1. 必要なライブラリ(cv2ultralytics)をインポートします。
    2. カウント領域(例:ポリゴン、ラインなど)を定義します。
    3. 動画キャプチャを設定し、物体カウンターを初期化します。
    4. 各フレームを処理して物体を追跡し、定義した領域内でカウントします。

    領域内でカウントする簡単な例を次に示します。

    import cv2
    
    from ultralytics import solutions
    
    def count_objects_in_region(video_path, output_video_path, model_path):
        """Count objects in a specific region within a video."""
        cap = cv2.VideoCapture(video_path)
        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))
        video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
    
        region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
        counter = solutions.ObjectCounter(show=True, region=region_points, model=model_path)
    
        while cap.isOpened():
            success, im0 = cap.read()
            if not success:
                print("Video frame is empty or processing is complete.")
                break
            results = counter(im0)
            video_writer.write(results.plot_im)
    
        cap.release()
        video_writer.release()
        cv2.destroyAllWindows()
    
    count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo26n.pt")

    より高度な設定やオプションについては、複数の領域内の物体を同時にカウントできるRegionCounterソリューションをご確認ください。

  • 物体カウントにUltralytics YOLO26を使用すると、次のようなメリットがあります。

    1. リソースの最適化: 正確なカウントを提供することで効率的なリソース管理を実現し、在庫管理などの業界でリソース配分の最適化に役立ちます。
    2. セキュリティの強化: 対象を正確に追跡してカウントすることでセキュリティと監視を強化し、プロアクティブな脅威検出とセキュリティシステムを支援します。
    3. 情報に基づく意思決定: 意思決定に役立つ貴重な洞察を提供し、小売、交通管理などの分野のプロセスを最適化します。
    4. リアルタイム処理: YOLO26のアーキテクチャはリアルタイム推論を可能にし、ライブ動画ストリームや時間制約のあるアプリケーションに適しています。

    実装例や実用的なアプリケーションについては、特定のゾーン内の物体を追跡するTrackZoneソリューションをご覧ください。

  • Ultralytics YOLO26を使用して特定のクラスの物体をカウントするには、追跡フェーズで対象とするクラスを指定する必要があります。以下にPythonの例を示します。

    import cv2
    
    from ultralytics import solutions
    
    def count_specific_classes(video_path, output_video_path, model_path, classes_to_count):
        """Count specific classes of objects in a video."""
        cap = cv2.VideoCapture(video_path)
        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))
        video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
    
        line_points = [(20, 400), (1080, 400)]
        counter = solutions.ObjectCounter(show=True, region=line_points, model=model_path, classes=classes_to_count)
    
        while cap.isOpened():
            success, im0 = cap.read()
            if not success:
                print("Video frame is empty or processing is complete.")
                break
            results = counter(im0)
            video_writer.write(results.plot_im)
    
        cap.release()
        video_writer.release()
        cv2.destroyAllWindows()
    
    count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo26n.pt", [0, 2])

    この例では、classes_to_count=[0, 2]0および2クラス(例:COCOデータセットのpersonとcar)の物体をカウントすることを意味します。クラスインデックスの詳細については、COCOデータセットのドキュメントをご覧ください。

  • Ultralytics YOLO26には、Faster R-CNN、SSD、以前のYOLOバージョンなど、他の物体検出モデルと比較して次のようなメリットがあります。

    1. 速度と効率: YOLO26はリアルタイム処理に対応しているため、監視や自動運転など、高速な推論が必要なアプリケーションに適しています。
    2. 精度: 最先端の検出および追跡精度を実現し、誤検出を削減してシステム全体の信頼性を向上させます。
    3. 統合の容易さ: YOLO26は、モバイルやエッジデバイスを含むさまざまなプラットフォームやデバイスとシームレスに統合でき、最新のAIアプリケーションに不可欠な柔軟性を備えています。
    4. 柔軟性: 検出およびセグメンテーションタスクをサポートし、さらにtrackモードを利用できます。また、特定のユースケース要件に合わせてモデルを設定できます。

    機能や性能比較の詳細については、UltralyticsのYOLO26ドキュメントをご覧ください。

  • はい。Ultralytics YOLO26は、リアルタイム検出機能、スケーラビリティ、統合の柔軟性により、群衆分析や交通管理などの高度なアプリケーションに非常に適しています。高度な機能によって、動的な環境でも高精度な物体の追跡、カウント、分類が可能です。ユースケースの例を以下に示します。

    • 群衆分析: 領域ベースのカウントにより、大規模な集団を監視・管理し、安全を確保して群衆の流れを最適化します。
    • 交通管理: 速度推定機能により、車両を追跡・カウントし、交通パターンを分析して、リアルタイムで渋滞を管理します。
    • 小売分析: 顧客の移動パターンや商品との相互作用を分析し、店舗レイアウトを最適化して顧客体験を向上させます。
    • 産業オートメーション: コンベヤーベルト上の商品をカウントし、生産ラインを監視して品質管理と効率向上を実現します。

    より専門的なアプリケーションについては、実環境のコンピュータービジョン課題向けに設計された包括的なツールセットを提供するUltralytics Solutionsをご覧ください。

コメント