TUTORIALS
はじめてのエッジAI開発
ブラウザで体験 → Raspberry Piで実行 → カスタムモデル学習。3ステップでエッジAI開発者になろう。
1
ブラウザでAIを動かしてみよう
所要時間:15分 / 難易度:★☆☆
Transformers.jsで画像分類
たった10行のJavaScriptで画像認識AIをブラウザ上で動かせます。サーバーもPythonも不要です。
JavaScript
import { pipeline } from "@huggingface/transformers";
// モデルをロード(初回はダウンロード、2回目以降はキャッシュ)
const classifier = await pipeline(
"image-classification",
"Xenova/mobilenetv2_1.0_224"
);
// 画像を分類
const result = await classifier("https://example.com/cat.jpg");
console.log(result);
// => [{ label: "tabby cat", score: 0.92 }, ...]TIPTransformers.jsはHugging Faceのモデルをブラウザで直接実行するライブラリ
TIPONNX形式に変換されたモデルをWebAssembly/WebGPUで推論
TIP初回ダウンロード後はブラウザキャッシュから読み込み(オフライン対応)
リアルタイムカメラ推論
カメラ映像に対してリアルタイムで物体検出を行うコード例です。
JavaScript
// カメラストリームを取得
const stream = await navigator.mediaDevices.getUserMedia({
video: { facingMode: "environment" }
});
video.srcObject = stream;
// TensorFlow.jsで物体検出
import * as cocoSsd from "@tensorflow-models/coco-ssd";
const model = await cocoSsd.load();
// フレームごとに検出
function detect() {
const predictions = await model.detect(video);
predictions.forEach(pred => {
console.log(`${pred.class}: ${(pred.score*100).toFixed(0)}%`);
});
requestAnimationFrame(detect);
}
detect();TIPrequestAnimationFrameで毎フレーム推論するとリアルタイム検出になる
TIPスマホではfacingMode: 'environment'で背面カメラを使用
TIPこのサイトの物体検出デモはまさにこのコードで動いている
2
Raspberry Piでエッジ推論
所要時間:30分 / 難易度:★★☆
環境セットアップ
Raspberry Pi 5にPython環境を構築し、TensorFlow Liteで推論する準備をします。
Python
# Raspberry Pi OS (64-bit) で実行
sudo apt update && sudo apt upgrade -y
# Python仮想環境を作成
python3 -m venv ~/ai-env
source ~/ai-env/bin/activate
# TensorFlow Liteランタイムをインストール
pip install tflite-runtime opencv-python-headless numpy pillow
# カメラモジュールの有効化を確認
rpicam-hello # プレビューが表示されればOKTIPRaspberry Pi 5 + Camera Module 3の組み合わせがおすすめ
TIP64-bit OSを使うことでパフォーマンスが向上
TIPtflite-runtimeは軽量(TensorFlow全体の1/100のサイズ)
カメラで物体検出を実行
Piカメラの映像をリアルタイムで物体検出するPythonスクリプトです。
Python
import cv2
import numpy as np
import tflite_runtime.interpreter as tflite
# TFLiteモデルをロード
interpreter = tflite.Interpreter(
model_path="efficientdet_lite0.tflite"
)
interpreter.allocate_tensors()
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
# カメラキャプチャ
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
# 前処理: リサイズ + 正規化
img = cv2.resize(frame, (320, 320))
input_data = np.expand_dims(img, axis=0).astype(np.uint8)
# 推論実行
interpreter.set_tensor(input_details[0]["index"], input_data)
interpreter.invoke()
# 結果取得
boxes = interpreter.get_tensor(output_details[0]["index"])[0]
classes = interpreter.get_tensor(output_details[1]["index"])[0]
scores = interpreter.get_tensor(output_details[2]["index"])[0]
# 検出結果を描画
for i in range(len(scores)):
if scores[i] > 0.5:
y1,x1,y2,x2 = boxes[i]
cv2.rectangle(frame,
(int(x1*frame.shape[1]), int(y1*frame.shape[0])),
(int(x2*frame.shape[1]), int(y2*frame.shape[0])),
(0,255,0), 2)
cv2.imshow("Detection", frame)
if cv2.waitKey(1) & 0xFF == ord("q"):
breakTIPEfficientDet-Lite0はRPi5でも15-20 FPS出せる軽量モデル
TIPAI HAT+があれば13 TOPSのアクセラレータで60+ FPSも可能
TIPモデルはTensorFlow Hubから無料ダウンロード可能
3
カスタムモデルを学習する
所要時間:60分 / 難易度:★★★
Google Colabで転移学習
YOLOv8をベースに、独自の物体(例:自社製品の不良品)を検出するモデルを学習します。
Python / YAML
# Google Colabで実行(無料GPUを利用)
!pip install ultralytics
from ultralytics import YOLO
# 事前学習済みモデルをベースに転移学習
model = YOLO("yolov8n.pt") # nano版(最軽量)
# 独自データセットで学習
results = model.train(
data="my_dataset.yaml", # 自作のデータセット定義
epochs=50,
imgsz=640,
batch=16,
device=0, # GPU使用
)
# TFLite形式でエクスポート(Raspberry Pi用)
model.export(format="tflite", imgsz=320)
# => "best_saved_model/best_float32.tflite" が生成されるTIP学習データは最低50枚〜、理想は300枚以上
TIPラベリングツールはRoboflow(無料枠あり)がおすすめ
TIPColabの無料GPUで50エポックなら約30分
データセットの準備
学習に使うデータセットの構成例です。
Python / YAML
# my_dataset.yaml の例
train: ./data/train/images
val: ./data/val/images
names:
0: good_product # 良品
1: defect_scratch # キズ不良
2: defect_dent # ヘコミ不良
# ディレクトリ構成
# data/
# train/
# images/ <- 学習用画像(.jpg)
# labels/ <- アノテーション(.txt)
# val/
# images/ <- 検証用画像
# labels/ <- 検証用アノテーションTIPYOLO形式: 1行=1物体「class_id cx cy w h」(正規化座標)
TIPtrain:val = 8:2 の比率が標準
TIPデータ拡張(回転・明度変化等)で実質的なデータ量を増やせる
必要なもの
Step 1(ブラウザ)
- Chrome / Edge 最新版
- Webカメラ(内蔵 or USB)
- テキストエディタ(VS Code等)
Step 2(Raspberry Pi)
- Raspberry Pi 5(8GB推奨)
- Camera Module 3
- microSD 32GB以上
- 電源・ケース
Step 3(学習)
- Googleアカウント(Colab用)
- 学習用画像データ 50枚〜
- Roboflowアカウント(無料)