🐊

画像1枚からアノテーションレスで物体検出AIモデル開発

に公開

松尾研究所のからあげです。

夏休みの宿題に、ロボット(LeRobot SO-101)にワニワニパニックをさせてみたので、テックブログで紹介したいと思います。LeRobotは、模倣学習といった高度なAIで制御するための環境が充実していることで人気なロボットです。


ロボットによるワニワニパニック

なお、ワニワニパニックと速度感が分からない人は、こちらのメーカー公式の商品紹介動画をご覧ください。

せっかくSO-101を使うので最初は模倣学習を試そうとしたのですが、ワニワニパニックのワニさんの速度が速すぎて、早々にアプローチを模倣学習から、AIによる物体検出とロボットの決め打ち動作による手法に切り替えました。

流れとしては、AIによる物体検出でワニさんの位置を検出して、その場所に応じてロボットの決め打ちのモーション制御をするというシンプルな方法です。

本記事では、特にその中でもAIによる物体検出に対する工夫にフォーカスして説明をします。

アノテーションレスで物体検出

AIによる物体検出は、最近はVLMによるzero-shot(事前の学習無し)での物体検出もできるようになってきました。VLM以前の物体検出と簡単に比較した表が以下です。

表:VLMとVLM以前の比較

観点 VLMによる物体検出 VLM以前の学習ベースの物体検出
任意の対象を検出
推論速度
学習の手間

今回は、デモすることも考え、計算機としてJetsonなどの小型のPCをネットのない環境でリアルタイムで動かすことを想定していたのと、対象がワニさんのみなので、モデルサイズが小さいVLM以前の物体検出(Object Detection)手法が適していそうです。

ただ、VLM以前の物体検出では、一般的に対象(今回はワニさん)に合わせて、大量の教師データとなる画像(数百枚〜数千枚)のアノテーションが必要となります。

物体検出のアノテーションは、対象となる物体をひたすらラベリングする、魂を削る孤独な作業です。具体的には、専用のツールを使ってラベル毎に以下のようにバウンディングボックスと呼ばれる四角い枠でひたすら対象を囲っていきます。


画像はcvat.aiより引用

AIによる物体検出では、必要な教師データ画像の枚数も、使用するモデルや取得できる画像や条件、タスクの難易度によって異なるので、場合によっては何度もアノテーション→学習→テスト、性能が出なかったらまたアノテーションをするというサイクルを繰り返すことになります。地獄ですね。

そこで、今回は工夫してアノテーションの作業無しで実用的な物体検出AIモデルを開発することにチャレンジしてみました。

なお、今回のケースに限定すれば、AIを用いない単純に緑色のフィルタリングとクラスタリングでも物体検出を実現できそうではありますが、屋外での芝生環境でのデモなどを想定しているのと、ある程度汎用性ある(対象が変わっても適用できる)手法を検討したかったので、今回は検討対象から外しています。ご了承ください。

教師画像の大量生成

具体的な手法としては、データの合成になります。0から生成するのは大変なので、今回はワニさん1匹あたりに1枚だけ画像を用意することにしました。

以下のようにピンセットでワニさんを引きずり出し、1匹ずつ写真を撮っていきます(ここでは2匹のみ掲載します)。


ワニさん1


ワニさん2

続いて、ワニさんだけを切り出します。


切り出したワニさん1


切り出したワニさん2

これで準備は完了です。あとはこの切り出したワニさんとランダムに生成した背景画像を組み合わせて、以下のような合成画像と、ワニさんがどこにいるかというラベルデータを大量に生成します。


合成データ1


合成データ2

ここで、ワニさんは角度や色、明るさなどを変動させる水増し(Data Augmentation)を行っています。Data Augmentationは、物体検出の精度を上げるためによく使われる技術です。

学習データとなるワニさんの画像は1000枚用意しました。

学習データを生成するサンプルソフトは以下リポジトリで公開しています。

https://github.com/karaage0703/wani-watcher

学習と推論

合成データを用いて、学習と推論を行います。

今回は、比較のためにEfficient DetというCNNベースの物体検出モデルと、最新のTransformerベースのRT-DETRというモデルを使用しました。性能比較のベンチマーク結果は以下となります。

画像はUltralytics ドキュメントより引用

学習するマシンのGPUはNVIDIA RTX3060を使用しました。

なお、物体検出のAIモデルとしてはYOLOシリーズが有名ですが、今回は使用していません。YOLOシリーズは性能が高く使いやすいAIモデルですが、その多くがAGPLという制約が厳しいライセンスとなるため、商用利用などを考える際は十分注意するようにしてください。

なお、ベンチマーク上だとYOLOシリーズのYOLOv11がRT-DETRと近い性能となっています。

Efficient Det(D0)

Efficient Detにはサイズの異なる複数のモデルがあるのですが、D0とD2という2つのサイズのモデルを使用しました。1000枚の画像を50エポック学習するのに数分程度かかりました。一番小さいD0は、検出性能が低く合成データでのテストでもうまくいきませんでした。

Efficient Det(D2)

少し大きなサイズのD2で試した結果です。こちらも同じ条件で学習時間は10〜20分程度でした。

今回は合成データのでテストはうまくいきました。

ただ実際の画像では、検出位置がずれたり、全く検出できなかったりと実用的とは言えない精度でした。

合成データで学習したときは、このように合成データと実際のデータでのギャップで、実用する際の性能が上がらないのはよくあることです。

RT-DETR

続いてRT-DETRでのテスト結果です。Efficient Detと同様、1000枚の画像を50エポック学習するのに数十分かかりました。

合成データではテストはバッチリです。

実際の画像でも、RT-DETRでは定性的ですが、十分実用的と感じられる精度で検出できました。

AIモデルの推論高速化

ワニワニパニックのワニさん、動画から測定すると、表に出ている時間はおおよそ1秒くらいです。

ロボットアームの移動速度も考慮すると、遅くとも200ms程度で物体検出をする必要がありそうです。今回は、Jetson Orinを用いて物体検出とロボット制御を実施しました。

Jetson Orinのセットアップは本記事では割愛します。以下記事を参照ください。

https://zenn.dev/karaage0703/articles/04ca258a89a50e

AIモデルの推論高速化のためにRT-DETRモデルをあらかじめ推論専用のONNXモデルに変換して、Jetson専用のCUDAに対応したONNX Runtimeライブラリを使用することで、GPU推論を実現しました。検出時間は100〜110msでした。

ロボット制御

LeRobot SO-101の制御に関しては、今回は決め打ちのモーション制御となります。

SO-101で、モーションをマニュアルで制御するようなソフトが見当たらなかったので、モーションを保存、再生するソフトを自作しています。詳細は以下記事を参照ください。

https://zenn.dev/karaage0703/articles/da93deeb3e160d

ワニさんが出てくる5箇所の位置に合わせて、5パターンのモーションを作成しました。手先には、ロボットハンドの代わりに、3Dプリンタで作ったハンマーを取り付けています。

ロボットによるワニワニパニック

実際の動作している動画です。

https://x.com/karaage0703/status/1956327215442145543

AIによるワニさんの物体検出自体はできて、ワニさんを叩く動作はできていますが、ロボットの動作は完全に間に合っておらず、偶然タイミングが合って叩けている状態です。

ワニワニパニックでの高得点を実現するには、ロボットモーションに大幅な高速化が必要そうです。

追記:ロボットのソフトを公開しました(※画像認識のモデルは含まれておりません)

https://github.com/karaage0703/wani-panicker

まとめ

アノテーションレスでの実用的な物体検出AI開発について紹介しました。

自分が物体検出に取り組んでいた数年前、一番良いモデルとしてメインで使っていたのがEfficient Detでした。実はそのときも、今回と同様に合成データでの物体検出を試行したのですが、今回の結果でも再現した通り、全く性能が出ませんでした。

それが、最新のモデル(RT-DETR)だと、合成データの学習で手軽に実用的な物体検出AIモデルが作れるようになっているので、AI性能の進化には目を見張るばかりです。

数年前にはできなかったことが、AIの性能向上でできるようになったりするのが、AI開発の恐ろしさでもあり、面白さですね。冒頭で紹介したようにVLMを使えば学習なしでの物体検出自体は実現できますが、特定の対象に対してリアルタイム推論する必要があるケースでは、この記事で紹介したような手法が役に立つこともあるのではないかなと思います。

AIの社会実装に向けては、最新のモデルを使うだけでなく、目的に応じてときには様々な手法を組み合わせたり、独自の工夫をする必要があります。本テックブログの記事がそのようなアイデアの一助になれば幸いです。

関連記事

LeRobot SO-101 テレオペから学習データ取得まで

変更履歴

  • 2025/09/10 ロボットのソフトに関して追記
松尾研究所テックブログ

Discussion