Skip to content

TeamSOBITS/yolo_ros

 
 

Repository files navigation

Contributors Forks Stargazers Issues License

Yolo ROS

目次
  1. 概要
  2. 対応モデル
  3. セットアップ
  4. 実行・操作方法
  5. パラメーター
  6. ライフサイクルノード
  7. デモ
  8. マイルストーン
  9. 参考文献

概要

yolo_rosは,UltralyticsのYOLOモデル(YOLOv3からYOLOv11,YOLO-NAS,YOLO-Worldなど)をROS 2で利用するためのラッパーです.これにより,以下の機能がROS2環境で実現できます.

  • 物体検出 (Object Detection)
  • トラッキング (Tracking)
  • インスタンスセグメンテーション (Instance Segmentation)
  • 人間の姿勢推定 (Human Pose Estimation)

セットアップ

本レポジトリのセットアップ方法について説明します.

環境条件

System Version
Ubuntu 22.04 (Jammy Jellyfish)
ROS Humble Hawksbill
Python 3.0~

インストール方法

  1. ROS2のsrcフォルダに移動します.
    cd ~/colcon_ws/src/
  2. 本レポジトリをcloneします.
    git clone -b humble-devel https://github.com/TeamSOBITS/yolo_ros.git
  3. レポジトリの中へ移動します.
    cd yolo_ros
  4. 依存パッケージをインストールします.
    bash install.sh
  5. パッケージをコンパイルします.
    cd ~/colcon_ws/
    colcon build --symlink-install

実行・操作方法

  1. カメラを起動し,yolo.launch.pyimage_topic_nameを使用するカメラのトピック名に書き換える.

    default_value="/camera/color/image_raw"          # orbbec_series
  2. RGBDカメラを使用する場合は,yolo.launch.pypoint_cloud_topicも使用するカメラの点群のトピック名に書き換える.

    default_value="/camera/depth_registered/points"     # orbbec_series
  3. ウェイトファイルを設定
    用意したウェイトファイルをweightsディレクトリに入れる.

  4. yolo.launch.pyweight_fileを,手順3で設定したウェイトファイル名に書き換える.

    default_value=os.path.join(get_package_share_directory("yolo_ros"), "weights", "best.pt")  ## custom weight file
  5. colcon buildを実行

    cd ~/colcon_ws/
    colcon build --symlink-install
  6. yoloを起動

    ros2 launch yolo_ros yolo.launch.py

パラメーター

以下はyolo.launch.pyで設定できるパラメーターである. 詳細はUltralytics pageで確認できる.

パラメーター名 説明 デフォルト値
model_type Ultralyticsモデルタイプ YOLO
init_prediction 起動時に検出の推論を行うかどうか True
image_show 検出結果の画像を表示するかどうか False
threshold 検出の閾値 0.5
iou 検出した位置がどれだけ正解と重なっているか(低いと同じ位置に複数のbboxが出現) 0.7
imgsz_height, imgsz_width 推論のための画像高さ/幅 480/640
half 半精度 (FP16) 推論を有効にするか False
max_det 画像あたりの最大検出数 300
agnostic_nms クラスに依存しないNMSを有効にするか False
retina_masks 高解像度セグメンテーションマスクを使用するか False
use_3d 3D検出を有効にするか True
cluster_tolerance どの程度離れた点群までは同一の物体とみなすかのしきい値.BoundingBox内に点群を飛ばした場合に,対象物に点群があたり,しきい値いないにある点群を1物体とみなしクラス分けを行います. そのため,あまり大きくすると点群1つ1つの探索範囲が広がり処理が遅くなってしまいます. 0.01
min_clusterSize どの程度の数以下の点群の集まりは対象物の点群から棄却するかのしきい値.点群をクラス分けした際に,この数以下の点群数だったらノイズとみなし棄却します. 100
max_clusterSize どの程度の数以上の点群の集まりは対象物の点群から棄却するかのしきい値.点群をクラス分けした際に,この数以上の点群数だったら全く別の対象物(物体だったら床の点群など)を捉えてしまったとみなし棄却します. 20000
noise_point_cloud_range 対象の物体の点群からノイズ面を除去し,中心座標に近づけるため除去量.クラス分けした点群から物体を抽出した後,床や背後の壁,左右の壁などx,y,z方向に点群をこの値分,更にカットします. こうすることで,より物体の部分のみにかかる点群に絞ることができます. しかし値を大きくしすぎると,物体分の点群まで多く削いでしまうため注意が必用です. 0.01
fast_shot fast_shotを有効にするかどうか true
enable_id 検出した物体のラベルの後ろにIDをつけるかどうか(例: apple_01) false

ライフサイクルノード

yolo_rosのすべてのノードはライフサイクルノードをサポートしています.これにより,未設定 (unconfigured) および非アクティブ (inactive) 状態での負荷を軽減し,アクティブ (active) 状態でのみモデルのロードとサブスクライバーのアクティブ化を行います.

状態ごとのリソース比較 (yolov8m.ptモデル,30fpsビデオストリーム)

State CPU Usage (i7 12th Gen) VRAM Usage Bandwidth Usage
Active 40-50% in one core 628 MB Up to 200 Mbps
Inactive ~5-7% in one core 338 MB 0-20 Kbps

デモ

物体検出 姿勢推定 インスタンスセグメンテーション

参考文献

About

Ultralytics YOLOv8, YOLOv9, YOLOv10, YOLOv11 for ROS 2

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 97.8%
  • Shell 2.2%