Ultralytics YOLO27:
Get Started

Ultralytics YOLO26による物体カウント#

物体カウントとは?#

Open Object Counting In Colab

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



視聴: 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の場合、領域が必要なSolutionsでは定義済みのデフォルト値が使用されます。
line_widthint2Solutionが描画するボックス、キーポイント、カウント表示の線幅です。
verboseboolTrue各フレームの入力shape、クラス数、処理速度を記録するSolutionのログを有効にします。トラッキング呼び出し自体は常にログを出力しません。

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

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

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

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

よくある質問#

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

    1. 必要なライブラリ(cv2、ultralytics)をインポートします。
    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データセットの人物や車など)の物体をカウントすることを意味します。クラスインデックスの詳細は、COCOデータセットのドキュメントをご覧ください。

  • Ultralytics YOLO26には、Faster R-CNN、SSD、以前のYOLOバージョンなど、ほかの物体検出モデルと比べて次のような利点があります。

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

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

  • はい。Ultralytics YOLO26は、リアルタイム検出機能、スケーラビリティ、統合の柔軟性を備えているため、群衆分析や交通管理などの高度なアプリケーションに最適です。高度な機能により、変化の激しい環境でも高精度な物体追跡、カウント、分類を実現できます。ユースケースの例を以下に示します。

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

    より専門的なアプリケーションについては、実世界のコンピュータビジョンの課題に対応する包括的なツール群を提供するUltralytics Solutionsをご覧ください。

コメント