1. 概要
2025年3月頃から岐阜駅近くで AI の勉強会を始めることを考えています。AI だけでなくプログラミング・他の IT 関連技術等も含め、趣味という位置付けで勉強会を月に一回の頻度で開くことができたらと考えています。
その準備として、Ultralytics YOLO を使用した物体検出ニューラルネットワークによる物体検出とその training 等を自宅のデスクトップパソコンで試してきました。
ですが、勉強会でプログラムを動かすことになった場合、ノートパソコンで動かすことになるかと思います。そこで、ブラウザから無料で GPU を使用してプログラムを実行することのできる Google Colab を試してみました。Google Colab は有料版もありますが、勉強会で小規模なプログラムを動かすには無料版でも問題なさそうです。
Ultralytics のこちらのページを Google Colab で開き、物体検出等のプログラムが実行できることを確認しました。
2. 準備
Google Colab では Google Drive に保存したファイルを参照して利用することがよく行われるようです。そのため、Google Colab から Google Drive を使用するための準備をします。
2.1. Google Drive 側の準備
まず、Google アカウントを作成します。Google アカウントをすでに持っていても、Google Colab のために別途新規アカウントを作成したほうが良さそうな気がします。Google Colab からアクセス可能な Google Drive のデータは他の活動のデータとは別にしておいたほうが安全な気がしたためです。
次に、下の画像のように Google Drive を開きます。
New ボタンをクリックし、下の画像のように Connect more apps を選択します。
Colaboratory で検索し、
Colaboratory をインストールします。
2.2. Google Colab 側の準備
Ultralytics のGoogle Colabについてのページからリンクが貼られているUltralytics の Google Colab のページを開きます。
左端のフォルダアイコンをクリックし、
下の画像の緑の枠で囲ったアイコンをクリックすると、
下記のような Python のコードが追加されます。追加された Python コードの左にある上の画像の赤枠内のボタンをクリックします。
from google.colab import drive drive.mount('/content/drive')
ボタンクリック後に表示されるダイアログで、アクセス可能なデータとして一部のデータのみを選択した際にはマウントに失敗してしまいました。そのため、Google Drive の全てのデータにアクセスできる設定を選択したところ、マウントできるようになりました。
下の画像のように別途 Google Drive にアップロードしたファイルが参照できていることも確認しました。
3. Ultralytics YOLO の実行
3.1. Ultralytics YOLO のインストール
下の画像の緑の枠内のボタンをクリックし、Gooble Colab 環境に Ultralytics をインストールします。インストール後、下記のようなログが表示され、GPU が使用されていることを確認できます。
3.2. Object Detection の実行
物体検出を実行する下記の Shell コマンドの source パラメータの引数のアドレスを適当な画像ファイルのアドレスに変えて物体検出を実行します。
# Run inference on an image with YOLOv8n !yolo predict model=yolov8n.pt source='https://ultralytics.com/images/zidane.jpg'
下記のように私の Web ページ内の画像のアドレスに変えて実行すると、
# Run inference on an image with YOLOv8n !yolo predict model=yolov8n.pt source='https://www.leafwindow.com/wordpress-05/wp-content/uploads/2023/02/DSC00141-min-SonyAlpha-%E6%A8%AA.jpg'
下の画像のようなログが表示され、/content/runs/detect/predict/ ディレクトリに検出結果を表示した画像が出力されます。
緑の枠で囲った出力されたファイルをダブルクリックすると検出結果の画像が表示されます。
先ほどのコードセルの内容を下記のように Google Drive にアップロードした画像のパスに書き換えて実行します。
# Run inference on an image with YOLOv8n !yolo predict model=yolov8n.pt source='/content/drive/MyDrive/DSC00422-min (SonyAlpha-横).JPG'
下の画像のように、Google Drive にアップロードした画像を対象として物体検出を実行した画像が /content/runs/detect/predict2/ に出力されます。
補足:Google Colab の上記のようなコードセル内には通常 Python スクリプトを記述します。上記の例のように「!」で始めた場合には Shell コマンドを実行することができます。また、上記 3.1. の例のように「%」で始めた場合には Jupyter の magic コマンドが実行されます。
3.3. Pose Estimaion の実行
目次から Tasks – Pose を選択し、ページ内の Pose 推定のサンプルコードに移動します。人の姿勢推定を実行する下記の Python スクリプトを書き換えます。
# Load YOLOv8n-pose, train it on COCO8-pose for 3 epochs and predict an image with it from ultralytics import YOLO model = YOLO('yolov8n-pose.pt') # load a pretrained YOLOv8n pose model model.train(data='coco8-pose.yaml', epochs=3) # train the model model('https://ultralytics.com/images/bus.jpg') # predict on an image
上記の Python スクリプトはネットワークの training を実行した後、姿勢推定を実行しています。下記のように training は実行しないようにして、推定結果を画像ファイルとして書き出すように修正しました。
# Load YOLOv8n-pose, train it on COCO8-pose for 3 epochs and predict an image with it from ultralytics import YOLO model = YOLO('yolov8n-pose.pt') # load a pretrained YOLOv8n pose model # model.train(data='coco8-pose.yaml', epochs=3) # train the model results = model('https://ultralytics.com/images/bus.jpg') # predict on an image results[0].save('bus_pose.jpg')
コードセル左の右矢印のボタンをクリックして実行すると姿勢推定の結果が出力されます。上記の Python スクリプトでは姿勢推定の結果を bus_pose.jpg として出力するようにしました。下の画像は出力されたファイルをダブルクリックした後、拡大表示した画面になります。