Colab を用いたAI実行体験

【サイト内の関連ページ】

YOLO26 による物体検出(カメラ撮影)

概要・体験

Google Colab 上で最新の軽量物体検出モデル YOLO26 nano を動かし、自分の端末のカメラ映像にリアルタイムで物体検出をかける演習である。インストールやデータ準備は一切不要で、コードを1セル貼って実行するだけ。カメラ許可後、画面内の人や物が枠とラベルで次々に囲まれていく様子を確認できる。「カメラ入力 → AI 推論 → 結果描画」という処理の流れを最小手順で体感でき、ロボットの視覚処理の基本構造を実感として理解できる達成感が得られる。なお Google Colab そのものの概要はGoogle Colaboratoryとはを参照のこと。

実行手順(Google Colab)

※ 書き換えた内容を保存して後日も使いたい場合は、「ファイル」→「ドライブにコピーを保存」で自分のドライブに複製しておく(Google Driveへの定期保存も参照)。

発展課題

このコードに小さな改造を加えて、推論部分の挙動を確かめてみよう。

ソースコード

先頭の !pip install -q ultralytics は YOLO 実行に必要なライブラリの導入であり、セッションごとに再実行が必要となる(詳細はパッケージのインストールを参照)。処理が停止して反応しなくなった場合は、セッションを終了して最初から実行し直す(セッション管理を参照)。

!pip install -q ultralytics

from IPython.display import display, Javascript, Image, update_display
from google.colab.output import eval_js
from base64 import b64decode
from ultralytics import YOLO
import numpy as np, cv2

display(Javascript('''
  async function startCamera() {
    const video = document.createElement('video');
    const stream = await navigator.mediaDevices.getUserMedia({video: true});
    video.srcObject = stream;
    await video.play();
    window._video = video;
  }
  async function takeFrame() {
    const video = window._video;
    const canvas = document.createElement('canvas');
    canvas.width = video.videoWidth;
    canvas.height = video.videoHeight;
    canvas.getContext('2d').drawImage(video, 0, 0);
    return canvas.toDataURL('image/jpeg', 0.8);
  }
'''))

model = YOLO('yolo26n.pt')
eval_js('startCamera()')

display(Image(data=b''), display_id='cam')
while True:
    img = cv2.imdecode(np.frombuffer(b64decode(eval_js('takeFrame()').split(',')[1]), np.uint8), 1)
    _, buf = cv2.imencode('.jpg', model(img, verbose=False)[0].plot())
    update_display(Image(data=buf.tobytes()), display_id='cam')