AIパーソナル・ラーニング
と実践的なガイダンス
豆包Marscode1

RF-DETR:リアルタイム視覚物体検出のためのオープンソースモデル

はじめに

RF-DETRはRoboflowチームによって開発されたオープンソースの物体検出モデルです。これは 変圧器 アーキテクチャの中核となる特徴は、リアルタイム効率です。このモデルは、マイクロソフト社のCOCOデータセット上で、初めて60以上のAPのリアルタイム検出を達成したほか、RF100-VLベンチマークテストでも優れており、実世界の幅広いシナリオに適応しています。RF-DETR-base(2900万パラメータ)とRF-DETR-large(1億2800万パラメータ)の2つのバージョンがあります。このモデルは小型で、エッジデバイスの展開に適しています。コードと事前に訓練された重みはApache 2.0ライセンスの下でライセンスされており、コミュニティでの使用に無料で開放されています。ユーザーはGitHubからリソースにアクセスし、簡単にトレーニングやデプロイを行うことができます。

RF-DETR:实时视觉对象检测开源模型-1


 

機能一覧

  • リアルタイム物体検出:画像やビデオ内の物体を低遅延で高速認識。
  • カスタムデータセットのトレーニング:独自のデータによるモデルのチューニングをサポート。
  • エッジデバイスでの実行:このモデルは軽量で、リソースが限られたデバイスに適している。
  • 調整可能な分解能:ユーザーは検査速度と精度のバランスを取ることができます。
  • 事前学習済みモデルのサポート:COCOデータセットに基づく事前学習済みの重みを提供。
  • ビデオストリーム処理:リアルタイムでビデオを分析し、結果を出力することができる。
  • ONNXエクスポート: ONNXフォーマットへの変換をサポートし、クロスプラットフォーム展開を容易にします。
  • マルチGPUトレーニング:複数のグラフィックカードを使用することで、トレーニングプロセスを高速化することができます。

 

ヘルプの使用

RF-DETRの使用方法は、インストール、推論、トレーニングの3つの部分に分けられます。以下は、すぐに使い始めるための詳細な手順です。

設置プロセス

  1. 環境準備
    Python 3.9以上、PyTorch 1.13.0以上が必要です。GPUを使う場合は nvidia-smi ドライブをチェックする。

    • PyTorchをインストールする:
      pip install torch>=1.13.0 torchvision>=0.14.0
      
    • ダウンロードコード
      git clone https://github.com/roboflow/rf-detr.git
      cd rf-detr
      
    • 依存関係をインストールします:
      pip install rfdetr
      

      これで自動的に numpyそしてsupervision およびその他の必要なライブラリ。

  2. インストールの確認
    以下のコードを実行する:

    from rfdetr import RFDETRBase
    print("安装成功")

エラーが報告されなければ、インストールは完了です。

推論演算

RF-DETRには、画像や動画を直接検出するためのCOCOデータセットの訓練済みモデルが付属しています。

  1. 画像検出
    • サンプルコード:
      import io
      import requests
      from PIL import Image
      from rfdetr import RFDETRBase
      import supervision as sv
      model = RFDETRBase()
      url = "https://media.roboflow.com/notebooks/examples/dog-2.jpeg"
      image = Image.open(io.BytesIO(requests.get(url).content))
      detections = model.predict(image, threshold=0.5)
      labels = [f"{class_id} {confidence:.2f}" for class_id, confidence in zip(detections.class_id, detections.confidence)]
      annotated_image = image.copy()
      annotated_image = sv.BoxAnnotator().annotate(annotated_image, detections)
      annotated_image = sv.LabelAnnotator().annotate(annotated_image, detections, labels)
      sv.plot_image(annotated_image)
      
    • このコードは、画像内のオブジェクトを検出し、バウンディングボックスと信頼度をラベル付けし、結果を表示する。
  2. ビデオ検出
    • まず opencv-python::
      pip install opencv-python
      
    • サンプルコード:
      import cv2
      from rfdetr import RFDETRBase
      import supervision as sv
      model = RFDETRBase()
      cap = cv2.VideoCapture("video.mp4")  # 替换为你的视频路径
      while cap.isOpened():
      ret, frame = cap.read()
      if not ret:
      break
      image = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
      detections = model.predict(image, threshold=0.5)
      annotated_frame = sv.BoxAnnotator().annotate(frame, detections)
      cv2.imshow("RF-DETR Detection", annotated_frame)
      if cv2.waitKey(1) & 0xFF == ord('q'):
      break
      cap.release()
      cv2.destroyAllWindows()
      
    • これはビデオ内のオブジェクトをフレームごとに検出し、リアルタイムで表示する。
  3. 解像度の調整
    • 解像度は初期化時に設定できる(56の倍数でなければならない):
      model = RFDETRBase(resolution=560)
      
    • 解像度が高いほど精度は上がるが、スピードは遅くなる。

カスタムモデルのトレーニング

RF-DETRは独自のデータセットによる微調整をサポートしていますが、データセットは以下を含むCOCOフォーマットである必要があります。 trainそしてvalid 歌で応える test 3つのサブディレクトリ。

  1. データセットの準備
    • カタログ構成例:
      dataset/
      ├── train/
      │   ├── _annotations.coco.json
      │   ├── image1.jpg
      │   └── image2.jpg
      ├── valid/
      │   ├── _annotations.coco.json
      │   ├── image1.jpg
      │   └── image2.jpg
      └── test/
      ├── _annotations.coco.json
      ├── image1.jpg
      └── image2.jpg
      
    • COCOフォーマットのデータセットはRoboflowプラットフォームを使って生成できます:
      from roboflow import Roboflow
      rf = Roboflow(api_key="你的API密钥")
      project = rf.workspace("rf-100-vl").project("mahjong-vtacs-mexax-m4vyu-sjtd")
      dataset = project.version(2).download("coco")
      
  2. トレーニング開始
    • サンプルコード:
      from rfdetr import RFDETRBase
      model = RFDETRBase()
      model.train(dataset_dir="./mahjong-vtacs-mexax-m4vyu-sjtd-2", epochs=10, batch_size=4, grad_accum_steps=4, lr=1e-4)
      
    • トレーニングでは、推奨される合計バッチサイズ (batch_size * grad_accum_steps例えば、A100 GPUは batch_size=16, grad_accum_steps=1T4 GPU batch_size=4, grad_accum_steps=4.
  3. マルチGPUトレーニング
    • 確立 main.py ドキュメンテーション
      from rfdetr import RFDETRBase
      model = RFDETRBase()
      model.train(dataset_dir="./dataset", epochs=10, batch_size=4, grad_accum_steps=4, lr=1e-4)
      
    • ターミナルで実行:
      python -m torch.distributed.launch --nproc_per_node=8 --use_env main.py
      
    • そうしれいかん 8 使用しているGPUの数に置き換えてください。調整 batch_size バッチサイズを安定させるためである。
  4. 負荷トレーニングの結果
    • トレーニング後、通常のウェイトとEMAウェイト(より安定)の2つのウェイトファイルが生成される。ロード方法
      model = RFDETRBase(pretrain_weights="./output/model_ema.pt")
      detections = model.predict("image.jpg")
      

ONNXエクスポート

  • ONNXフォーマットにエクスポートすることで、他のプラットフォームへの展開が容易になります:
    from rfdetr import RFDETRBase
    model = RFDETRBase()
    model.export()
    
  • エクスポートされたファイルは output エッジデバイスの最適推論のためのカタログ。

 

アプリケーションシナリオ

  1. 自動運転
    RF-DETRは道路上の車両や歩行者をリアルタイムで検出します。低遅延で高精度のため、組み込みシステムに適しています。
  2. 工業品質管理
    RF-DETRは工場の組立ラインで部品の欠陥を素早く特定します。このモデルは軽量で、装置上で直接稼働させることができます。
  3. ビデオ監視
    RF-DETRは監視カメラの映像を処理し、異常な物体や行動をリアルタイムで検知します。ビデオストリーミングをサポートし、24時間365日のセキュリティに適しています。

 

品質保証

  1. サポートされているデータセット形式は?
    COCO形式のみ対応。データセットには trainそしてvalid 歌で応える test サブディレクトリに、それぞれ対応する _annotations.coco.json ドキュメンテーション
  2. RoboflowのAPIキーを取得するには?
    https://app.roboflow.com にログインし、アカウント設定からAPIキーを見つけ、コピーして環境変数に設定する。 ROBOFLOW_API_KEY.
  3. トレーニングにはどのくらい時間がかかりますか?
    ハードウェアとデータセットサイズによる。T4 GPUでは、10エポックに数時間かかるかもしれない。小さいデータセットはCPUでも実行できるが、遅い。
無断転載を禁じます:チーフAIシェアリングサークル " RF-DETR:リアルタイム視覚物体検出のためのオープンソースモデル
ja日本語