はじめに
Edge TPUはラズパイ以外にもMacやWindowsでも使えますが、コンパイルはDebianベースのLinuxしかでかできないようなので、MacやWindowsでもコンパイルできるようにDockerを用いてコンパイルできるようにしました。
Dockerfileの作成
Dockerfileとして以下を作成
FROM debian:buster-slim
RUN export DEBIAN_FRONTEND=noninteractive \
&& apt-get update \
&& apt-get install --no-install-recommends -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
&& curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - \
&& echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" > /etc/apt/sources.list.d/coral-edgetpu.list \
&& apt-get update \
&& apt-get install edgetpu-compiler \
WORKDIR /home/edgetpu-compiler
ENTRYPOINT ["edgetpu_compiler"]
Docker build
作成したDockerfileを以下のコマンドでビルド
docker image build -t edgetpu-compiler .
量子化モデルの準備
dockerfileと同じディレクトリにディレクトリを作成
mkdir model
modelディレクトリにINT8で量子化済のtfliteを格納。
EdgeTPUコンパイル
以下のコマンドでINT8で量子化済のtfliteモデルをEdegTPU用のモデルにコンパイル
docker run --rm -it -v $(pwd):/home/edgetpu-compiler edgetpu-compiler model/{MODEL}
{MODEL}
の部分には先ほど準備したINT8で量子化されたtfliteを指定。{MODEL}_edgetpu.logと{MODEL}_edgetpu.tfliteの様なファイルが作成されていれば、コンパイルが成功していると思います。
最後に
Linux環境がなくても、MacやWindowsでも簡単にEdgeTPU用のモデルにコンパイル、EdgeTPUで推論することができます。
#参考
この記事は以下の情報を参考にして執筆しました。