深層学習を活用する例でインパクトがあり、最も試してみたいのは物体検知ではないでしょうか?
物体検知とは、画像やビデオの中から特定の物体を見つけ出し、位置を特定する技術です。
この技術は、自動運転車からセキュリティシステム、さらにはスマートフォンのカメラアプリに至るまで、私たちの日常生活に広く使われています。
YOLO(You Only Look Once)は画像やビデオからリアルタイムで物体を検出する高性能な物体検知AIモデルです。
YOLOv8は、このシリーズの最新バージョンで、Pythonプログラミングを通じて簡単に実装できます。
高速で正確、そして使いやすい設計が特徴で、物体検出・追跡、インスタンスセグメンテーション、画像分類、ポーズ推定など、幅広いタスクに対応しています。
私のブログでは、元々プログラミングになじみはないけど、最新のAIには興味があって色々試してみたい!
知識はないけどパソコンには多少お金はかけられるという中年男性読書を想定しています(笑)
ですので基本的にはGPU付きのゲーミングWindowsマシンを使用し、ローカルな環境でプログラムを動かすことを前提とした内容となっています。
環境構築
まずは、YOLOv8を動かすための準備をしましょう。
WindowsマシンにGPUがある前提で進めますが、GPUがない場合でも基本的な手順は同じです。
Gitのインストール:
まずは、GitHubから必要なファイルをダウンロードするために、Gitをインストールしましょう。Gitはコードのバージョン管理ツールで、このリンクからWindows用のGitをダウンロードできます。
YOLOv8のダウンロード:
Gitがインストールされたら、以下のコマンドを使ってYOLOv8のコードをダウンロードします。
git clone https://github.com/ultralytics/ultralytics.git
使い方
YOLOv8は、コマンドラインインターフェース(CLI)またはPython環境で使用できます。
以下は、Pythonでの基本的な使い方の一例です。
import argparse from ultralytics import YOLO def process_file(file_path): # Load a model model = YOLO('yolov8n-seg.pt') # load an official segmentation model # Use the model results = model.track(file_path, save=True, tracker="bytetrack.yaml") # predict on the input file print(f"Processed file: {file_path}") def main(): parser = argparse.ArgumentParser(description='Process an image or a video file with YOLO model.') parser.add_argument('file', type=str, help='Path to the image or video file') args = parser.parse_args() if args.file: process_file(args.file) else: print("Please provide an image or a video file.") if __name__ == '__main__': main()
スクリプトの構成
1.ライブラリのインポート
argparse: コマンドライン引数を解析するために使用されます。
ultralytics: YOLOモデルを提供するライブラリです。
2.process_file関数
指定されたファイルパスを受け取り、YOLOモデルで処理します。
YOLO(‘yolov8n-seg.pt’)のモデルがロードされます
model.trackメソッドを使用してファイルを処理し、結果を保存します。
3.main関数
コマンドライン引数を解析し、file引数(ファイルパス)を取得します。
取得したファイルパスをprocess_file関数に渡します。
4.スクリプトの実行エントリポイント
Pythonがこのファイルを直接実行したときにmain関数が実行されます。
このスクリプトを保存したディレクトリで、以下のコマンドを入力してスクリプトを実行します。
このスクリプトをtest.pyという名前でhighway.mp4という動画ファイルを物体検知した場合のコマンドプロンプトへの入力方法です
利用可能なモデル
YOLOv8には、COCOデータセットやImageNetデータセットで事前訓練された様々なモデルがあります。これらのモデルは、初回使用時に自動的に最新のUltralyticsリリースからダウンロードされます。
上記の例では、yolov8n-seg.ptというセグメンテーションモデルを使用しています
テストの結果、動画内の物体が正確に検出されました!
物体検知はとても面白いので、是非試してみてください。
今後は、自分の画像でモデルを訓練する方法についても紹介していきたいと思います。
コメント