YOLO Vision 2026:

Ultralytics YOLO26を使用したオブジェクトカウント#

オブジェクトカウントとは何ですか?#

Open Object Counting In Colab

Ultralytics YOLO26 を用いたオブジェクトカウントには、ビデオやカメラストリーム内の特定のオブジェクトの正確な識別とカウントが含まれます。YOLO26は、最先端のアルゴリズムとディープラーニング機能のおかげで、群衆解析や監視などのさまざまなシナリオにおいて効率的で正確なオブジェクトカウントを実現し、リアルタイムアプリケーションに優れています。



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

オブジェクトカウントの利点#

  • リソースの最適化: オブジェクトカウントは正確なカウントを提供することで効率的なリソース管理を容易にし、在庫管理などのアプリケーションにおけるリソース配分を最適化します。
  • セキュリティの強化: オブジェクトカウントはエンティティを正確に追跡およびカウントすることでセキュリティと監視を強化し、プロアクティブな脅威検出を支援します。
  • 情報に基づいた意思決定: オブジェクトカウントは意思決定のための貴重なインサイトを提供し、小売、交通管理、およびその他のさまざまなドメインにおけるプロセスを最適化します。

現実世界の応用例#

物流水産養殖
Conveyor Belt Packets Counting Using Ultralytics YOLO26Fish Counting in Sea using 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:0、または0)。ユーザーはモデルの実行にCPU、特定のGPU、またはその他の計算デバイスを選択できます。

さらに、以下に記載する可視化引数もサポートされています:

引数タイプデフォルト説明
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 dataset における person や car など)をカウントすることを意味します。クラスインデックスの詳細については、COCO dataset ドキュメントをご覧ください。

  • Ultralytics YOLO26は、Faster R-CNN、SSD、および以前のYOLOバージョンといった他のオブジェクト検出モデルと比較して、いくつかの利点を提供します:

    1. 速度と効率: YOLO26はリアルタイム処理機能を提供するため、監視や自動運転など、高速推論を必要とするアプリケーションに最適です。
    2. Accuracy: 最先端の検出およびトラッキング精度を提供し、誤検出を減らし、システム全体の信頼性を向上させます。
    3. 統合の容易さ: YOLO26は、モバイルやエッジデバイスを含むさまざまなプラットフォームやデバイスとのシームレスな統合を提供します。これは現代のAIアプリケーションにおいて極めて重要です。
    4. Flexibility: detection および segmentation タスクを、その上層での track mode とともにサポートし、特定のユースケースの要件を満たすための設定可能なモデルを備えています。

    機能やパフォーマンス比較の詳細については、Ultralytics YOLO26 ドキュメントをご確認ください。

  • はい、Ultralytics YOLO26は、そのリアルタイム検出機能、スケーラビリティ、統合の柔軟性により、群衆分析や交通管理といった高度なアプリケーションに最適です。その高度な機能により、動的な環境においても高精度なオブジェクト追跡、カウント、分類が可能です。使用例は以下の通りです:

    • 群衆解析: 領域ベースのカウントを使用して大規模な集まりを監視および管理し、安全性を確保して群衆の流れを最適化します。
    • 交通管理: 速度推定機能を使用して、車両の追跡とカウント、交通パターンの分析、およびリアルタイムでの混雑管理を行います。
    • 小売分析: 顧客の移動パターンや製品との対話を分析し、店舗レイアウトを最適化して顧客体験を向上させます。
    • 産業オートメーション: コンベアベルト上の製品をカウントし、品質管理および効率向上のために生産ラインを監視します。

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

コメント