roboflow+Google Colabを使ってyolov11の自作データセットを作ってyolo_rosで動かしてみる

に公開

概要

NuTech-Rというチームでロボカップレスキュー実機リーグに参加している者です。前回の記事GPU環境構築からyolo_rosを動かすまで その2ではROS2でYOLOを使用するためのパッケージyolo_rosを動かしてみました。今回は自作データセットを作って物体検出を行う為にroboflowでアノテーションを行い、その後google colabを使って学習データを作成します。

環境

  • Ubuntu 22.04
  • ROS 2 Humble
  • Thirdwave Corporation XL7C-R36H (PC)
  • GeForce RTX 3060 Mobile (GPU)

データセット用の動画の準備

物体検出用のデータセットを作成するため、対象物体を撮影した動画が必要です。この動画からフレーム単位で画像を生成し、アノテーション作業を行います。webカメラでの撮影にはguvcviewを使用します

sudo apt install guvcview

guvcviewの設定:
Preferences -> Webcamを選択
Resolutionで640×480を設定(ROS2での動作時も同じ解像度を使用)

width=640

設定完了後、動画撮影を開始します。

roboflowを使ったアノテーション

https://roboflow.com/
上記のサイトでログインした後にWorkSpacesを作成します。この時Public Planで作成します。
width=240
+Projectを押します。

今回は手元にあるDualSenseを物体検出するためのモデルを作成します。下記のように設定します。
Project Name: DualSense
License: Public Domain (ライセンスはお好きなものを選んでください)
Annotation Group: DualSense (物体認識するためのラベル)

選んだ後にCreate Public Projectを押します。
その後Drag and drop file...に先ほど保存した動画をアップロードします。

アップロードすると1秒間で何フレーム写真を抽出するか選択をします。今回の動画は短いので5frames/secondで抽出します。

抽出が終わると下記のように写真のプレビューが表示されます。

その後右上のAnnotate Imagesを押してAuto Labelを選択します。

この画面になったら物体検出する為の名前とその物体の説明をそれぞれの選択項目に入力します。
Class name: DualSense
Visual description of the class: Game Controller
終わったらGenerate Test Resultsを押します。

その後、Auto Label With This Modelを押すと自動的にアノテーション作業が始まります。

アノテーション作業が終わるとReviewにステータスが変更されます。

その後Approve Allを選択するとアノテーションが承認されます。

次に上にあるAdd Approved to Datasetを選択してアノテーション済みのデータをデータセットに変換します。Train・Valid・testはデフォルトの7:2:1のまま作成します。

データセットのダウンロード

左側のタブにあるVersionsを選択します。

ここからモデルの設定を行って行きます。

Source Images

Source Imagesでは使用するデータセットの設定をTrain/Test Splitでは、機械学習に欠かせない訓練用データとテスト用データを分けます。

Preprocessing

Preprocessingでは、画像サイズのリサイズによる統一などによって学習時間の減少とパフォーマンスを上昇させるための設定を行います。

Augmentation

Augmentationでは、データの水増し処理を行うかどうかを設定します。

今回は特に何も設定せずにデフォルトのまま設定を行います。
設定を終えGenarateを押すことで設定の完了とモデルの作成が行われます。
モデルが完成すると下記のようにデータが完成します。

その後作成されたモデルをダウンロードします。今回はYOLO v11で学習を行うのでYOLO v11します。その後download zip to computerを押してzip形式でダウンロードします。

ultralyticsにアップロード

次にultralyticsにデータセットをアップロードします。
下記のURLからログインを行ってください。
https://www.ultralytics.com/ja
ログイン後左側のDatasetsを押してUpload Datasetを選択します。

Dataset nameとDescriptionは下記のように設定しました。
Dataset name:DualSense Dataset
Description:DualSense Controller Detection
記入後に先ほどダウンロードしたデータセットをアップロードします。

ultralyticsにプロジェクトを作成

左のタブにあるProjectsを選択してCreate Projectを押します。

Project nameとDescriptionを記入します。今回はCover Imageはなくて大丈夫です。
Project name:DualSense Controller Detection
Description:Detect for DualSense Controller
その後Createを押してください。

Train Modelの設定

データセットの設定が終わった後にTrain Modelを選択します。

Projectは先ほど作成したプロジェクトを選択してください。
Model nameは適宜入力してください。未記入の場合は灰色で記載されているような文字が入力されます。
Detect Architecturesは自分の好きなモデルを選んでください。今回はYOLO11nの軽量版でTrain Modelの作成を行います。ちなみに最後の末尾の文字が
n: nano
s: small
m: medium
l: large
x: xlarge
となっています。nが一番軽量モデルでxが重量モデルだと考えてください。

その後TrainでClick to copy the Colab codeのところに書かれている内容をコピーし、その後google colabを開きます。

Google colab上での学習

Google colabにアクセスしたら、再生ボタンを押してスクリプトを走らせます。

スクリプトを走らせるとgoogle colab上でGPUが使用できるようになります。その後Startの部分にかかれているコードブロックに先ほどUltralytics HUBでコピーしたcolabのコードを添付してまた再生ボタンを押してスクリプトを走らせます。

Starting trainingで学習が進んでいます。

現在のgoogle colabは何も操作せずに90分経つとリセットされる仕組みになっております。今回はEpoch数が100で割と軽量な処理ですが、もしもっとより長い時間学習に時間がかかる場合は下記のサイトなどを参考にして対策をしてください。
https://note.com/npaka/n/n1aa6f8c973d0
学習が終わると一番最後の部分にUltralytics HUBのURLが表示されるのでクリックして接続してください。

その後Train結果などを見ることができます。
Train・Configutation・・・・と書かれているタブのDeployを選択します。

その後Pytourch形式でDownloadボタンを押すと.pt形式で学習済みモデルをダウンロードすることができます。

yolo_rosで動かしてみる

yolo_rosの環境やリポジトリをクローンしていない方はここで設定を行ってください。
GPU環境構築からyolo_rosを動かすまで その2
先程ダウンロードした学習済みモデルをros2_wsに移動させます。

cp ~/Downloads/detection_dual_sense.pt ~/ros2_ws/

その後下記のコマンドで実行をする

ターミナル1

ros2 run usb_cam usb_cam_node_exe --ros-args -p image_width:=640 -p image_height:=480 -p pixel_format:=mjpeg2rgb

ターミナル2

ros2 launch yolo_bringup yolov11.launch.py   input_image_topic:=/image_raw   model:=detection_dual_sense.pt

まとめ

今回YOLOの自作データセットを作成し、yolo_rosでの物体検出を実装しました。
本記事では基本的な流れを解説しましたが、以下の点で精度向上が可能です:

  • アノテーション精度の向上
  • 学習パラメータの最適化
  • Detect Architecturesの選定

ご質問やフィードバックは、Zennのコメント欄にてお待ちしております。記事が参考になった方は、ぜひ「いいね」をお願いします。

参考

https://qiita.com/Y_R_/items/07ced51178b38f7b2bde

NuTech-R (長岡技術科学大学)

Discussion