Interface編集部

ailia SDKを試す<第13回> YOLOを利用した静止画像のオブジェクト検出
今回は,ailia-SDKを用いてオブジェクト検出モデルYOLO11を実装したサンプルを紹介します.
●今の最新はYOLO11とYOLO12
YOLOシリーズは,軽量かつ高速な物体検出モデルとして広く利用されており,最新世代としてはYOLO11とYOLO12が公開されています.一般的にYOLO12は精度面で優位とされていますが,推論速度や必要な計算リソースの点ではYOLO11の方が有利です.そのため,組み込み機器やIoTデバイスのようにリソースが限られた環境では,YOLO11を選択する方が実用的なケースが多いと考えられます.
●今回はYOLO11を使う
YOLO11には用途や環境に応じて複数のバリエーションが用意されています.例えば,
******
・YOLO11n-seg
・YOLO11s-seg
・YOLO11m-seg
・YOLO11l-seg
・YOLO11x-seg
******
といったモデルがあり,処理速度と識別性能のバランスを選択可能です.
今回はその中で最も軽量な YOLO11n-segを利用し,静止画像を対象とした検証を行います.他のモデルについては別稿で改めて紹介する予定です.また,動画入力での検証については処理速度計測のためにプログラムの改造が必要となるため,準備が整い次第,追って紹介します.
なお,今回使用するモデル(YOLO11)は,COCO_CATEGORYで学習された,人/車/犬など80種類の一般的な物体カテゴリが含まれています.
●実行環境
今回は IoT を意識した小型PC環境として,Intel(R) N100搭載機を用いて検証を行いました.比較的省電力なCPUですが,メモリやGPUを備えているため,エッジ環境での推論性能を評価するのに適しています.システム構成は表1の通りです.
名 称 | 内 容 |
---|---|
OS | Windows11 Pro |
CPU | Inten(R) N100 |
RAM | 16GB |
GPU | Inten(R) N100 UHD Graphics |
Python | python-3.10.11-amd64 |
ailia-SDK | Version 1.5.0.0 |
ailia-models | v1.4.0 (https://github.com/axinc-ai/ailia-models) |
表1 システム構成一覧
●環境構築してYOLOを実行してみる
環境構築手順はailia-modelsリポジトリに含まれるサンプルを利用するため,特別な準備は不要です.Python環境とailia-SDKが導入されていれば,そのまま動作します.なお,ailia-SDKのインストール方法については,ailia-modelsのリポジトリに記載されている手順を参考にしてください.
初回実行時には,必要なモデル・ファイルが自動的にダウンロードされます.そのため,インターネットに接続された環境でスクリプトを実行してください.一度ダウンロードされたモデルはローカルに保存されるため,2回目以降の実行ではネットワーク接続は不要です.
実行コマンドは
******
PS> python yolov11-seg.py [options]
*****
となります.また,オプションを表2に示します.
オプション | 説 明 |
---|---|
-i IMAGE/VIDEO | 入力ファイルを指定(画像または動画) |
-v VIDEO | カメラやビデオ入力を指定 |
-s SAVE_PATH | 出力ファイルを保存するパスを指定 |
-m {11n,11s,11m,11l,11x} | 使用するモデルを指定 |
-e ENV_ID | 実行環境を指定(CPU/GPU など) |
表2 オプション
用意された画像を使って生成した実行環境の動作を確認します.先ほどのコマンドを実行すると図1が得られました.
図1 オブジェクト検出の結果
(Image from https://ultralytics.com/images/bus.jpg)
これで,yolov11-segの公式リポジトリ(README.md)に掲載されている例と同一の結果画像を得ることができました.このことから,環境構築が正しく行われていること,さらにモデルの推論処理が正常に機能していることを,初期動作確認として確認できました.
●さまざまな画像を入力して性能検証
今回の検証では,静止画を対象にYOLO11n-segの検出性能を確認しました.
▲1,イベント風景
検出結果を図2に,クラスや件数などを表3に示します.
図2 イベント風景のオブジェクト検出結果
項目 | クラス | 件数 |
---|---|---|
検出結果 | person | 12 |
backpack | 1 | |
bicycle | 1 | |
合計 | 14 |
表3 クラスや件数
主な検出オブジェクトは,立って歩いている人や座っている人を検出しています.特に顔が写っている人物は高い確率で検出されました.その他の検出対象は,人物以外にも,自転車やバックパックといった物体も正しく検出しました.この結果から,YOLO11n-seg は人物が密集しているシーンにおいても,比較的安定して対象を識別できることが確認できました.
▲2,新幹線のホーム風景
検出結果を図3に,クラスや件数などを表4に示します.
図3 ホーム風景のオブジェクト検出結果
項目 | クラス | 件数 |
---|---|---|
検出結果 | person | 3 |
train | 1 | |
合計 | 4 |
表4 クラスや件数
検出件数は4件で,主な検出対象は新幹線,およびホームで待っている人物を検出しました.その他の検出対象は,奥のホームにいる人物も検出しています.この結果から,YOLO11n-segは大きな物体(新幹線)と人物を区別して認識できること,さらに遠景にいる人物についても検出可能であることが確認できました.
▲3,複数のオブジェクト・リスト
検出結果を図4に,クラスや件数などを表5に示します.
図4 オブジェクト・リストの検出結果
項目 | クラス |
---|---|
検出結果 | person, car, motorcycle, airplane train, fire hydrant, stop sign, parking meter bench, dog, dog, couch sheep, cow, zebra, 未検出 backpack, 未検出, person・tie, couch・chair 未検出, couch・chair, person・snowboard, tv |
合計 | 25件 |
表5 クラスや件数
画像生成時に指定したオブジェクトは24件でしたが,次の理由により検出数が増加しました.
******
・ネクタイ:装着している人物と同時に検出
・スノーボード:滑っている人物と同時に検出
・ソファー:椅子も同時に検出
******
主な検出対象は,指定したオブジェクトの多くを検出しました.未検出のオブジェクトとしては,スーツケース,ハンドバッグ,フリスビーで誤検出としては,ねこを犬と誤認しました.この結果から,YOLO11n-segは多種多様な物体を同時に検出可能である一方で,類似カテゴリ間での誤認や,小物の未検出といった課題が残ることが分かりました.
●まとめ
今回は,ailia-SDK上でYOLO11n-segを用いた静止画像のオブジェクト検出を検証しました.検証の結果,次の知見が得られました.
▲強み
次が挙げられます.
******
・多人数が写るイベント風景においても,人物を安定して検出できる
・新幹線のような大型物体と人物を区別して認識可能
・多種多様なオブジェクトを同時に検出でき,生成AIで作成した複雑な画像に対しても対応できる
******
▲課題
一方,課題も存在します.
******
・猫を犬と誤認するなど,類似カテゴリ間での誤検出が発生
・スーツケースやフリスビーといった小物類の検出漏れが見られる
・複合的な物体(例:スノーボード+人物)を個別に扱う際には,余分な検出が生じやすい
*****
総じて,YOLO11n-segは軽量かつ高速に動作し,IoTや小型PC環境での利用に適した検出性能を持つ ことが確認できました.一方で,精度面では未検出や誤認が課題として残るため,より高精度なYOLO11m以降のモデル(YOLO11s/m/l/x-seg)の活用も有効であると考えられるので,これらの検証を行い,精度の変化を明らかにしていく予定です.
氏森 充(うじもり・たかし)
約30年間,(株)構造計画研究所にてIoT,ビッグデータ,機械学習,AI関連のシステム開発や実務応用に従事.退職後はLLM(大規模言語モデル)関連の情報収集や技術動向の調査・発信に注力し,雑誌「Interface」でもLLM技術に関する記事を執筆中.