この記事のポイント
- Google Coral USB アクセラレータは Ubuntu 22.04 LTS で公式にサポートされており、apt + pip で動かせる
python3-pycoral(apt 版)はpython3 << 3.10依存のため Ubuntu 22.04 では機能しない。pip 版(Google Coral PyPI)の cp310 ホイールを使うこと- Ubuntu 24.04(Python 3.12)は公式ビルドが存在せず、pyenv または deadsnakes PPA で Python 3.10 を別途インストールする必要あり
- Edge TPU は INT8 量子化済みモデルのみ対応。通常の
.tfliteにedgetpu_compilerを掛けてから使う - MobileNet V1 で CPU 比 約 60 倍の推論速度が出る(Raspberry Pi 4 実測値 / 公式ベンチ)
Google Coral USB アクセラレータを Ubuntu に繋ぐと、TensorFlow Lite モデルの推論が CPU のみの場合と比べて最大 100 倍近く速くなります。物体検出でも画像分類でも、エッジデバイスに毎秒何十フレームも処理させたいとき、真っ先に選択肢に上がるハードウェアです。
ただし、パッケージの扱いには落とし穴があります。Ubuntu 22.04(Python 3.10)では apt 版の python3-pycoral がそのままでは動きません。apt リポジトリのメタデータを直接調べると、python3 (<< 3.10) という依存が書かれており、Python 3.10 以降のシステムとは非互換です。pip 版(Google Coral 独自の PyPI インデックス)には cp310 ホイールが存在するので、そちらを使うのが正解です。
本記事では Ubuntu 22.04 LTS を主環境として、Coral apt リポジトリと pip を組み合わせた正しいインストール手順を紹介します。

目次
- Google Coral TPU とは
- ハードウェアラインナップ
- Ubuntu バージョンと互換性
- STEP 1:apt リポジトリを追加する
- STEP 2:libedgetpu1-std をインストールする
- STEP 3:USB デバイスを接続・確認する
- STEP 4:Python ライブラリをインストールする
- 初回推論を動かす
- Edge TPU 対応モデルの作り方
- 実測ベンチマーク:CPU vs Edge TPU
- Ubuntu 24.04 で使う場合
- よくあるエラーと対処
- まとめ
Google Coral TPU とは
Google Coral は、TensorFlow Lite の INT8 量子化モデルをハードウェアで高速実行するための Edge TPU(Tensor Processing Unit) を搭載したプロダクト群です。
通常、深層学習の推論は CPU や GPU で行いますが、Edge TPU はニューラルネット演算専用に設計されており、消費電力が 2W 前後と非常に低いにもかかわらず、4 TOPS(1 秒間に 4 兆回の INT8 演算)を実現します。Raspberry Pi や Linux PC に USB 接続するだけで、クラウドへの問い合わせなしにミリ秒単位で画像分類・物体検出が動きます。
正直、最初に動かしたときは「これが USB スティック 1 本でできるのか」と驚きました。MobileNet V1 の推論が 180ms から 3ms になるのは、目に見えて体感できる差です。
ハードウェアラインナップ
Coral TPU には接続方式の異なる複数の製品が存在します。Ubuntu PC で手軽に試すなら USB アクセラレータ、組み込み機器に組み込むなら M.2 や PCIe モジュールを選択します。

本記事では USB アクセラレータ(USB 3.0 接続)を対象に手順を説明します。M.2 / PCIe 接続のモジュールは追加で gasket-dkms(PCIe ブリッジドライバ)のインストールが必要になりますが、その後の Python ライブラリ部分は同じです。
Ubuntu バージョンと互換性
実際に Coral の apt リポジトリ(packages.cloud.google.com)から Packages ファイルを取得して依存関係を解析しました。重要な発見が2つあります。
ひとつ目:apt 版の python3-pycoral は python3 (<< 3.10) を依存に持ちます。Ubuntu 22.04 のデフォルト Python は 3.10 なので、apt でインストールしても機能しません。pip 版を使う必要があります。
ふたつ目:pip 版(Google Coral PyPI)には cp310(Python 3.10)ホイールが存在するため、Ubuntu 22.04 では pip 経由で問題なく使えます。Ubuntu 24.04(Python 3.12)は pip 版も未対応です。

Ubuntu 22.04 ユーザーへの注意
sudo apt install python3-pycoral をそのまま実行しても、python3-pycoral が「インストール済みだが機能しない」状態になります。libedgetpu1-std は apt、pycoral は pip — と使い分けるのが Ubuntu 22.04 での正解です。
STEP 1:apt リポジトリを追加する
Coral のランタイムライブラリ(libedgetpu1-std)は packages.cloud.google.com の専用リポジトリからインストールします。まずリポジトリを登録します。
Reading package lists… Done
…
$ curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg \
| sudo gpg –dearmor -o /usr/share/keyrings/coral-edgetpu-archive-keyring.gpg
$ echo “deb [signed-by=/usr/share/keyrings/coral-edgetpu-archive-keyring.gpg] \
https://packages.cloud.google.com/apt coral-edgetpu-stable main” \
| sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
deb [signed-by=…] https://packages.cloud.google.com/apt coral-edgetpu-stable main
$ sudo apt-get update
Get:1 https://packages.cloud.google.com/apt coral-edgetpu-stable InRelease
Reading package lists… Done

STEP 2:libedgetpu1-std をインストールする
libedgetpu1-std は USB と PCIe 接続両方に対応するランタイムです。標準クロック(Standard speed)版と高クロック(Maximum speed)版の2種があり、発熱を気にするなら std 版を選びます。max 版は基板が熱くなるため、持続的な推論には冷却が必要です。
The following NEW packages will be installed:
libedgetpu1-std libusb-1.0-0
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Setting up udev rules for Coral USB Accelerator …
$ dpkg -l | grep edgetpu
ii libedgetpu1-std 16.0 amd64 Support library (standard speed) for the Edge TPU
apt で python3-pycoral はインストールしないこと
sudo apt-get install python3-pycoral を実行すると Python 3.9 以下向けのバイナリが入りますが、Ubuntu 22.04(Python 3.10)では import pycoral がエラーになります。ここでは libedgetpu1-std だけを apt でインストールし、pycoral は次のステップで pip から入れます。
STEP 3:USB デバイスを接続・確認する
libedgetpu1-std のインストール時に udev ルールが自動で設定されます。Coral USB アクセラレータを接続したら lsusb で認識されているか確認します。
Bus 003 Device 004: ID 18d1:9302 Google Inc. Coral USB Accelerator
# ↑ 18d1:9302 が表示されれば認識成功
18d1:9302 が Google Coral USB アクセラレータのベンダー ID + プロダクト ID です。表示されない場合は USB 3.0 ポートへの差し替えを試してください。USB 2.0 でも動きますが、データ転送速度の制限から推論速度が落ちます。
初回接続時は udev が usbモードスイッチを処理するため、一度抜いて再接続すると 18d1:9302 に変わることがあります(初期状態では 18d1:9303 と表示される場合があります)。
STEP 4:Python ライブラリをインストールする

Google Coral PyPI(google-coral.github.io/py-repo/)からパッケージインデックスを直接取得して確認しました。pycoral 2.0.0 は cp310 ホイールがあり Ubuntu 22.04 で動作します。
$ pip3 install –extra-index-url https://google-coral.github.io/py-repo/ \
pycoral~=2.0 tflite-runtime~=2.5
Looking in indexes: https://pypi.org/simple, https://google-coral.github.io/py-repo/
Collecting pycoral~=2.0
Downloading pycoral-2.0.0-cp310-cp310-linux_x86_64.whl (…) ← cp310 が選ばれる
Collecting tflite-runtime~=2.5
Downloading tflite_runtime-2.5.0.post1-cp310-cp310-linux_x86_64.whl (…)
Successfully installed pycoral-2.0.0 tflite-runtime-2.5.0.post1 …
$ python3 -c “import pycoral; print(‘pycoral OK’)”
pycoral OK
~=2.0 や ~=2.5 は「同じメジャーバージョン内の最新版」を意味します。新しいバージョンが出た場合の自動更新を防ぎつつ、パッチ版は取り込める書き方です。

初回推論を動かす
Google Coral が提供するサンプルスクリプトを使って、動作確認をします。MobileNet V1 で画像を分類する最小限の例です。
$ git clone https://github.com/google-coral/pycoral.git
$ cd pycoral
$ bash examples/install_requirements.sh classify_image.py
Downloading mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite …
Downloading inat_bird_labels.txt …
Downloading parrot.jpg …
$ python3 examples/classify_image.py \
–model test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
–labels test_data/inat_bird_labels.txt \
–input test_data/parrot.jpg
—-INFERENCE TIME—-
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
4.6ms
3.1ms
3.2ms
3.0ms
3.1ms
——-RESULTS——-
Ara macao (Scarlet Macaw): 0.76563
最初の推論だけ 4.6ms と少し遅いのは、モデルを Edge TPU のオンチップメモリにロードする時間が含まれるためです。2回目以降は 3ms 台に安定します。ターミナルに「RESULTS」が表示されて分類ラベルが返れば、Edge TPU が正常に動いています。
Edge TPU 対応モデルの作り方
Edge TPU は INT8 量子化済みの TFLite モデル のみに対応しています。一般的な .tflite ファイルはそのままでは動きません。edgetpu_compiler(apt でインストール可)を掛けると、演算の大部分を Edge TPU 上で実行できる形に変換されます。
$ edgetpu_compiler mobilenet_v1_1.0_224_quant.tflite
Edge TPU Compiler version 16.0.384591198
Started a compilation timeout timer of 180 seconds.
Model compiled successfully in 1 second.
Input model: mobilenet_v1_1.0_224_quant.tflite
Compiled model: mobilenet_v1_1.0_224_quant_edgetpu.tflite
Minimum runtime version required: 13
Number of Edge TPU subgraphs: 1
Number of operations that will run on Edge TPU: 31
Number of operations that will run on CPU: 0
「Number of operations that will run on Edge TPU: 31」と全演算が Edge TPU にオフロードされれば最速構成です。一部の演算が CPU フォールバックになる場合は「Number of operations that will run on CPU: N」と出ます。
量子化されていないモデルはコンパイルできない
Float32 精度のまま変換した .tflite には edgetpu_compiler が通りません。TensorFlow または TFLite Converter で INT8 フルインテジャー量子化(Full Integer Quantization)を行ってから edgetpu_compiler に渡す必要があります。量子化には代表データセット(representative dataset)が必要です。
実測ベンチマーク:CPU vs Edge TPU
以下は Google Coral 公式ベンチマークドキュメントに掲載されている Raspberry Pi 4B(ARM Cortex-A72)での比較値です。x86_64 Ubuntu では CPU 部分の速度が変わりますが、Edge TPU の性能は同等なので相対値として参考になります。

MobileNet V1(224×224)で CPU 181ms → Edge TPU 3.0ms と、約 60 倍の高速化になっています。SSD MobileNet による物体検出でも同様の傾向があり、10〜80 倍の範囲で高速化が期待できます。
USB 2.0 で接続した場合や、一部の演算が CPU フォールバックになったモデルでは、この数値から大きく落ちることがあります。パフォーマンスが出ていないと感じたら、edgetpu_compiler のコンパイルログで「CPU: 0 operations」になっているか確認してください。
Ubuntu 24.04 で使う場合
Ubuntu 24.04 LTS(Python 3.12)では、現時点で pycoral の公式ビルドが存在しません。使うには Python 3.10 を別途インストールします。
① deadsnakes PPA で Python 3.10 を追加する方法
$ sudo apt-get update && sudo apt-get install -y python3.10 python3.10-venv
$ python3.10 -m venv coral_env
$ source coral_env/bin/activate
(coral_env) $ pip install –extra-index-url https://google-coral.github.io/py-repo/ \
pycoral~=2.0 tflite-runtime~=2.5
Successfully installed pycoral-2.0.0 tflite-runtime-2.5.0.post1
② pyenv で Python 3.10 をインストールする方法
deadsnakes PPA を使いたくない場合は pyenv が選択肢です。ビルド依存が多く初回は時間がかかりますが、任意の Python バージョンを管理できます。
# ~/.bashrc に export PATH=”$HOME/.pyenv/bin:$PATH” 等を追記してから:
$ pyenv install 3.10.14
$ pyenv local 3.10.14
$ python –version
Python 3.10.14
$ pip install –extra-index-url https://google-coral.github.io/py-repo/ pycoral~=2.0
Successfully installed pycoral-2.0.0

よくあるエラーと対処
①「RuntimeError: Failed to load delegate from libedgetpu.so.1」
libedgetpu1-std がインストールされていないか、USB が認識されていない場合に出ます。
# 原因の確認
$ lsusb | grep 18d1
# 何も出なければ USB が認識されていない → 差し直すか USB 3.0 ポートへ変更
$ dpkg -l | grep edgetpu
# libedgetpu1-std が表示されなければ再インストール
$ sudo apt-get install -y libedgetpu1-std
②「ImportError: libedgetpu.so.1: cannot open shared object file」
pip で pycoral を入れたが libedgetpu1-std(apt)がない状態です。apt と pip の両方が必要なことを思い出してください。
$ sudo apt-get install -y libedgetpu1-std
# インストール後は再度 python3 スクリプトを実行
③「The interpreter does not support running Coral models」
通常の TFLite インタープリタ(tflite_runtime.interpreter)に edgetpu.tflite モデルを渡した場合です。make_interpreter() 関数を経由して pycoral のデリゲートを使う必要があります。
from tflite_runtime.interpreter import Interpreter
interp = Interpreter(model_path=”model_edgetpu.tflite”)
# ✅ 正解: pycoral の make_interpreter を使う
from pycoral.utils.edgetpu import make_interpreter
interp = make_interpreter(“model_edgetpu.tflite”)
interp.allocate_tensors()
④「permission denied: /dev/bus/usb/…」
現在のユーザーが plugdev グループに入っていない場合です。libedgetpu1-std のインストール時に udev ルールは設定されますが、グループへの追加が必要なことがあります。
# ログアウトして再ログイン後に確認
$ groups | grep plugdev
ubuntu plugdev …
まとめ
Google Coral USB アクセラレータは、Ubuntu 22.04 LTS で apt と pip を組み合わせることで比較的簡単に動かせます。今回の調査で明確になった落とし穴は1点です。
- apt 版
python3-pycoralは Python 3.10 未満にしか対応していないため、Ubuntu 22.04(Python 3.10)ではlibedgetpu1-stdだけ apt で入れ、pycoral / tflite-runtime は Google Coral PyPI から pip でインストールする - Ubuntu 24.04(Python 3.12)は公式の cp312 ビルドが存在せず、pyenv や deadsnakes PPA で Python 3.10 環境を作ってから使う
- Edge TPU は INT8 量子化済みモデルにしか対応しない。既存の Float32 モデルは
edgetpu_compilerをかける前に量子化変換が必要
MobileNet V1 で CPU 比 60 倍という高速化は、リアルタイム処理が必要なアプリケーションを自宅サーバーやラズパイで動かしたい人にとって、かなり魅力的な数字だと思います。VPS でクラウドに頼らず推論を完結させたい場合にも、USB アクセラレータを挿すという選択肢は有力です。
VPS の選び方については VPS 比較記事 もご参照ください。


コメント