野生の動物を検出するためのUltralytics YOLOモデルのトレーニング方法

アビラミ・ヴィナ

5分で読める

2025年4月15日

アフリカの野生動物データセットを使用して、野生の動物を検出するYOLOモデルを訓練し、未見の画像に対して推論を実行するためにモデルを使用する方法を学びます。

私たちの地球の野生生物は、ブンブン飛び回るミツバチからそびえ立つゾウまで、驚くほど多様であり、この生物多様性を維持することは、バランスのとれた生態系を維持するための重要な鍵となる。しかし、生息地の減少、密猟、気候変動などにより、保護活動はますます困難になっている。これらの要因はすべて、野生生物の個体数に悪影響を及ぼす。 

カメラトラップの画像を手作業で分析したり、現地調査を行ったりするような従来の動物モニタリング方法は、時間がかかり、多くの資源を必要とする。こうした取り組みでは、広い地域や大きな個体群を効果的にカバーできないことが多い。

こうした制約を克服するために、人工知能(AI)を野生動物の保護にインパクトのあるツールとして使用することができる。具体的には、Ultralytics YOLO11のようなコンピューター・ビジョン・モデルは、画像や動画などの視覚データを解析し、動物のリアルタイム識別と追跡を自動化することができる。 

YOLO11がサポートする物体検出やインスタンス分割のようなコンピュータ・ビジョン・タスクは、ここで非常に役に立つ。視覚データを分析することで、これらのタスクは重要なデータを収集し、生態学的パターンを特定し、環境脅威により効果的に対応するのに役立つ。

この記事では、YOLO11に動物を検知させるためのトレーニング方法を説明します。さっそく始めよう!

Ultralytics YOLO11を使い始める

チュートリアルに入る前に、YOLO11のトレーニングや使用に必要なさまざまな設定オプションやツールについて見てみましょう。 

必要な主なツールはUltralytics Pythonパッケージで、トレーニング、オブジェクトの検出、推論の実行などのタスクでYOLOモデルを簡単に扱うことができます。Ultralyticsパッケージを使用するには、コードを実行するための環境をセットアップする必要があります。

ここでは、開発環境を設定するための最も一般的なオプションをいくつか紹介する:

  • コマンドラインインターフェイス(CLI):CLIはターミナルとも呼ばれ、コマンドを入力することでコンピュータと対話できるテキストベースのツールです。ボタンをクリックしたりマウスを使ったりするグラフィカル・インターフェース(GUI)とは異なり、CLIではプログラムの実行やタスクの実行にテキスト命令を入力する必要があります。
  • ジュピター・ノートブック:このノートブックでは、セルと呼ばれる小さな塊でコードを書いたり実行したりできる。インタラクティブなので、コードの出力をすぐに見ることができ、テストやデバッグがしやすい。
  • Google Colab:Google Colabはクラウドベースのプラットフォームで、Jupyter Notebooksのように動作するが、強力なGPUに無料でアクセスできる。セットアップは簡単で、コンピューターに何もインストールする必要はない。

Ultralyticsの公式ドキュメントで調べることができる環境設定のオプションは他にもありますが、上記の3つのオプションはほとんどセットアップが必要なく、使いやすいので、すぐに始めるのに理想的です。 

このチュートリアルでは、Google Colab、Jupyter Notebooks、またはシンプルなPythonファイルを使ったYOLO11のセットアップとトレーニング方法を紹介する。

アフリカ野生動物データセットを理解する

開発環境を選択した後、YOLO11が野生動物を検出できるように訓練するためには、ラベル付けされた画像の高品質なデータセットが必要だ。それぞれの画像には、どこにどのような種類の動物がいるのかが明確に示されている必要があり、教師あり学習によってモデルが動物の認識を学習できるようにする。

このチュートリアルでは、African Wildlife Dataset を使用します。これはUltralytics Pythonパッケージによってサポートされており、アフリカの生態系で一般的に見られる動物を検出するために特別に設計されています。バッファロー、ゾウ、サイ、シマウマの4つの主要種の注釈付き画像が含まれています。

図1.アフリカ野生動物データセットの概要。

African Wildlife Datasetの主な特徴は以下の通り:

  • スケール:データセットは1504枚の画像で構成され、トレーニング用1052枚、検証用225枚、テスト用227枚の3つのサブセットに分かれている。この分割により、モデルの効果的な学習と徹底的な評価が保証される。

  • シームレスな統合: Ultralyticsは、データセットのパス、クラス、その他の詳細を定義するYAML設定ファイルを提供し、YOLOモデルをトレーニングする際に簡単に使用できます。

  • オープンライセンス:このデータセットはAGPL-3.0ライセンスの下で配布され、透明性とコラボレーションを奨励している。

動物検出のためのUltralytics YOLO11のトレーニング

さて、アフリカ野生動物データセットを探索したところで、画像中の動物を検出するYOLO11モデルのトレーニングを始めましょう。このプロセスでは、開発環境のセットアップ、YOLO11モデルのトレーニング、モデルの性能評価を行います。

ステップ1:環境のセットアップ

始めに、モデルのトレーニングとテストのための環境を準備する。Google Colab、Jupyter Notebooks、またはシンプルなPythonファイルを、好みに応じて使用することができる。Google Colabノートブック、Jupyterノートブック、Pythonファイルを適宜新規作成する。

Google Colabを使用している場合、デフォルトの環境はCPU(Central Processing Unit)で実行されるため、トレーニングが遅くなる可能性があります。プロセスをスピードアップするには、特に大きなモデルの場合、ランタイムをGPUに切り替えることができます。Google Colabでは、メニューの "Runtime "タブに移動し、"Change runtime type "を選択し、ハードウェアアクセラレータをGPU(できればT4 GPU)に設定することができます。これはトレーニング時間を短縮するために重要です。

次に、どの環境を使用しているかに関わらず、Ultralytics Pythonパッケージをインストールする必要がある。ノートブックベースの環境(Google ColabやJupyter)を使っている場合は、感嘆符(!)を先頭につけて以下のコマンドを実行する。

pip install ultralytics

ステップ2:YOLO11のロードとデータセットの準備

Ultralyticsパッケージがインストールされたら、次はYOLO11モデルをロードし、トレーニング用のデータセットを準備する。まず、YOLO11モデルをロードする。YOLO11モデルは、一般的な物体検出タスクについて事前にトレーニング済みである。この事前にトレーニングされたモデルは、様々な物体を検出する方法をすでに学習しているため、良い出発点となります。

次に、画像とラベルの情報を含むYAMLファイルを使ってデータセットを指定する。このファイルは、データセットがどこにあり、どのようなオブジェクトを認識するように学習すべきかをモデルに指示する。 

アフリカ野生動物データセットはUltralyticsパッケージでサポートされているため、トレーニングを開始すると自動的にダウンロードされ、手動で設定する手間が省けます。

データセットの準備が整うと、モデルは学習を開始する。モデルはデータセットを数回繰り返し、複数回のエポックにわたって学習し、画像内の動物を認識する能力を向上させる。この過程で、画像は処理のために一定のサイズにリサイズされ、モデルはバッチと呼ばれる一度に決まった数の画像を扱う。これはモデルがより効率的に学習するのに役立つ。

つまり、モデルがロードされ、データセットが自動的にダウンロードされ、以下のコードスニペットが実行されると、アフリカの野生動物データセットに基づいて動物を検出するためのトレーニングが開始される。

from ultralytics import YOLO

model = YOLO("yolo11n.pt")

results = model.train(data="african-wildlife.yaml", epochs=30, batch=8)

ステップ3:YOLO11トレーニング・ウォークスルー

上記のコード・スニペットを実行すると、モデルは私たちが与えた設定に基づいてトレーニングを開始する。このコードでは、モデルにトレーニング画像を30回見るように指示しています。つまり、モデルはデータセットの全画像を30回見て、毎回少しずつ学習していくということだ。

動物の描き方を学ぼうとしているとしよう。初めて描いたときはうまく描けないかもしれないが、何度も練習しているうちに上達してくる。再挑戦するたびに、何が間違っていたかを学び、修正する。各エポックはモデルにとってそうなのだ。モデルたちは画像を見て、間違いを犯し、そこから学び、回を重ねるごとに動物を認識するのがうまくなっていく。

トレーニングコードが正常に実行されている場合、トレーニングが進むにつれて次のような出力が表示されます:

  • トレーニングのセットアップ:最初の部分は、Ultralytics、PyTorchのバージョン、使用されているハードウェア(この場合はCPU)、モデル(yolo11n.pt)、バッチサイズ、エポック、画像サイズなどの学習設定を示している。
  • モデルの概要:レイヤーやパラメーターの数など、モデルの複雑さに関する情報を提供し、モデルの大きさを示す。
  • オプティマイザと学習率:オプティマイザ(AdamWなど)と学習率について言及している。オプティマイザは、学習中にモデルがどのようにパラメータを調整するかを制御する。
  • データセットのスキャン:モデルはデータセットをスキャンし、有効でトレーニング可能な画像の数を表示します。データセットに問題がないことを確認する。
  • トレーニングの進捗:各エポック(学習サイクル)後に出力が更新され、モデルの学習状況を示す主要な損失値(box_loss、cls_loss、dfl_loss)とともに学習の進捗状況が表示される。
  • パフォーマンス・メトリクス:各エポックの後、precision、recall、mAP(平均平均精度)などのパフォーマンス・メトリクスが表示されます。これらの値は、モデルがどれだけ正確にオブジェクトを検出し分類しているかを示します。
  • GPUメモリ使用量:GPUを使用している場合、ハードウェアの使用状況を追跡するためにメモリ使用量が出力されます。
図2.モデルトレーニングの実行中に表示される出力。

ステップ4:カスタム学習モデルの性能評価

トレーニングプロセスが完了したら、モデルのパフォーマンス指標を確認し、検証することができます。Google Colabでは、"runs "フォルダ、"detect "フォルダ、そして最後に "train "フォルダに移動し、主要なパフォーマンス指標を表示するログを見ることができます。

Python環境のユーザーの場合、トレーニング結果はデフォルトで現在の作業ディレクトリ内の "runs/train/"ディレクトリに保存されます。トレーニングの実行ごとに新しいサブディレクトリが作成され(runs/train/exp、runs/train/exp2など)、そこにトレーニングに関連するログやその他の出力が保存されます。

CLIを使用している場合、"yolo settings"コマンドを使用することで、これらの結果や設定に簡単にアクセスすることができます。"yolo settings"コマンドを使用することで、トレーニングログや実験の詳細に関連するパスやその他の設定を表示または変更することができます。

ログの中には、モデルのトレーニングがどの程度うまくいったかを示すグラフもあります。これらのグラフはトレーニング終了後に作成され、時間の経過とともにモデルのミスが減り、精度が向上したかどうかを示します。 

モデルの進歩を追跡し、トレーニング中に損失(モデルの予測値と実際の値の差)がどのように減少し、精度がどのように向上したかを示します。これにより、モデルがどの程度動物を認識することを学習し、トレーニング終了までにどの程度改善されたかを理解することができます。

図3.モデルを評価するために分析できるグラフの例。

主要業績評価指標

また、モデルのパフォーマンスを評価するために使用できるいくつかの指標を詳しく見てみましょう:

  • 平均平均精度(mAP):この指標は、異なる想起レベルでの精度スコアを平均することで、すべてのクラスにわたって動物を検出するモデルの全体的な精度を測定する。
    ‍ この指標は、異なる想起レベルでの精度スコアを平均することで、すべてのクラスにわたって動物を検出するモデルの全体的な精度を測定する。
  • 精度:これは、真陽性検出数を検出総数で割ることにより算出される、正しい検出の割合を示す。
    ‍。
  • 再現性:画像中の実際の動物のうち、モデルによって正しく識別された動物の割合を示し、モデルが関連するすべての事例を捉える能力を反映している。

これらの評価指標は、実世界のアプリケーションで使用する前に、モデルを微調整して精度を向上させるのに役立つ。

カスタムトレーニングしたYOLO11モデルを使用して推論を実行する

YOLO11の学習と評価が終わったので、いよいよYOLO11を使って画像を解析し、推論を実行します。データセットのテスト画像や、別のソースからの新しい画像を使うことができます。

以下のコード・スニペットを使って、テスト・データセットの画像に対してモデルを実行します。Ultralyticsライブラリから必要なモジュールをインポートします。そして、resultsディレクトリに格納されている最適なモデルの重みファイル("best.pt")へのパスを定義します。カスタムトレーニングされたYOLO11モデルは、これらの重みを使ってロードされます。 

その後、African Wildlifeテストデータセットからの画像へのパスが設定される。この画像にモデルを適用してオブジェクトを検出し、結果を生成し、出力(検出されたオブジェクトや注釈など)を保存する。

from ultralytics import settings

best_model_path = results.save_dir / "weights/best.pt"

model = YOLO(best_path)

image_path = f"{settings['datasets_dir']}/african-wildlife/test/images/1 (168).jpg"

img_results = model(image_path, save=True) 

下図の出力画像は、runs/detect ディレクトリ内の「predict」フォルダに保存される。以降のテストでは、"predict2"、"predict3 "などの新しいフォルダが作成され、画像が保存される。

図4.微調整したYOLO11モデルを使ったテスト画像に対する推論の実行。

異なるソースからの画像をテストするには、以下のコードを使用することができます。ここではPexelsの画像を使用しています。同じ画像や他の関連する画像を使用することができます。

best_model_path = results.save_dir / "weights/best.pt"

model = YOLO(best_path)

img2_results = model("https://images.pexels.com/photos/18341011/pexels-photo-18341011/free-photo-of-elephant-and-zebras-in-savannah.png", save=True)

下図の出力画像が適切なフォルダに保存されます。

図5.微調整したYOLO11モデルを使って、未見の画像から野生動物を検出。

野生動物保護のためのAI:実際の応用例

YOLO11のようなモデルは、動物を自動的に検出して追跡することができるため、さまざまな実用的な応用が可能になる。ここでは、Vision AIが野生動物の保護活動を支援するために使用できる主な分野のいくつかを垣間見ることができる:

  • 種のモニタリング 画像や動画などの視覚データを処理するためにビジョンAIを使用することで、種の正確な識別、個体数のカウント、長期的な動きの追跡が可能になる。
  • スマートカメラによる警告: 遠隔地では、コンピュータ・ビジョンを使って動物を継続的に分類し、リアルタイムのアラートを送信することで、野生動物当局が動物の異常行動や人間と野生動物の衝突などの脅威に迅速に対応できるようになる。
  • 行動分析: 移動、食習慣、社会的相互作用をモニタリングすることで、ビジョンAIシステムは、種間動態に関する包括的な洞察を提供することができる。
  • 密猟の防止: ビジョンAIは、機械学習と過去のデータを活用してリスクのホットスポットを特定しながら、無許可の人間の存在と密猟の兆候を検出するために活用することができる

要点

YOLO11のようなコンピュータ・ビジョン・モデルは、動物の検出と追跡を自動化することで、野生動物の保護に重要な役割を果たすことができる。ビジョンAIを使えば、様々なソースからの大量の画像やビデオを処理することができ、正確な野生動物の評価を実行することが可能になる。 

特にUltralytics YOLO11は、リアルタイムの物体検出に最適で、密猟防止監視、行動分析、生態系モニタリングなどのタスクに最適です。AI主導のモデルを自然保護活動に取り入れることで、私たちは種をよりよく保護し、生物多様性の追跡を改善し、絶滅の危機に瀕した野生生物を保護するために、より多くの情報に基づいた決定を下すことができます。

私たちのコミュニティに参加し、GitHubリポジトリを探索して、コンピュータビジョンについてもっと学びましょう。ヘルスケアにおけるAIと 製造業におけるコンピュータビジョンに関連するアプリケーションをソリューションページでご覧ください。ビジョンAIを始めるには、Ultralyticsのライセンスオプションをチェックしてください。

AIの未来
を一緒に作りましょう!

機械学習の未来への旅を始めよう

無料で始める
クリップボードにコピーされたリンク