5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Raspberry Pi OS Bullseye 64bitでTFLite環境構築

Last updated at Posted at 2022-01-13

1.はじめに

Raspberry PiでAI推論をするとき、モデルの量子化と64bitOS化が良く効くと聞いていたので、Bullseyeで64Bit TFLite環境を作るぞー、おーーーー!

64bit化が良く効く例
その1 Raspberry Pi4 単体で TensorFlow Lite はどれくらいの速度で動く?
その2 Raspberry Pi4 単体で TensorFlow Lite はどれくらいの速度で動く?【2020年12月版】

※この記事を書き終えて、、、32bit版で環境を作った前回記事と全く同じやりかたで出来てしまいました。もったいないので成功した記録として公開しますが、代わり映えの無い内容です。

※2 タイトルを「Raspberry Pi OS Bullseye 64bitでTFLite環境高速化」から「Raspberry Pi OS Bullseye 64bitでTFLite環境構築」に変更しました。高速化したいから64bit環境作ったのは確かですが、高速化の検証を載せてなかったので。

2.Bullseye 64bitのSDを作る

2022/1/12現在、こちらに64bit版OS(2021-10-30-raspios-bullseye-arm64.zip)がありますのでダウンロードして解凍してRaspberry Pi ImagerでMicroSDに書き込みます。

初期設定等は32bit版と同様に済ませられます。

64bitで動いてることを確認。

$ getconf LONG_BIT
64
$ uname -a
Linux raspberrypi 5.10.63-v8+ #1459 SMP PREEMPT Wed Oct 6 16:42:49 BST 2021 aarch64 GNU/Linux

パッケージも取り合えず最新版にしておきます。

$ sudo apt update
$ sudo apt upgrade

3.OpenCVのインストール

OpenCVとTFLiteのruntimeはこの記事で紹介した方法で入れておきます。まずはOpenCV。

$ git clone https://github.com/luxonis/depthai.git
$ cd depthai
$ python3 install_requirements.py

Warningがちょこちょこ出ていたので心配ですが、とりあえずインポートして様子を見ます。

$ python
Python 3.9.2 (default, Feb 28 2021, 17:03:44) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> 

インポートできたので、USBカメラの画像も読めるか確認しておきます。
標準でThonnyが入っていたのでこのコードをコピペですぐ動きます。

import cv2
import time
capture = cv2.VideoCapture(0)

if capture.isOpened() is False:
    raise IOError

start_time = time.time()

while(True):
    try:
        ret, frame = capture.read()
        if ret is False:
            raise IOError

        elapsed_time = time.time() - start_time
        start_time = time.time()
        cv2.putText(frame,
             "Elapsed Time : " + '{:.1f}'.format(elapsed_time * 1000) + "ms" + " / " + '{:.1f}'.format(1 / elapsed_time) + "fps" ,
             (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 255, 0), 2,
             cv2.LINE_AA)

        cv2.imshow('frame',frame)
        cv2.waitKey(1)

    except KeyboardInterrupt:
        # 終わるときは CTRL + C を押す
        break

capture.release()

動きました。

4.TFLiteも入れてみる

pip3 install --extra-index-url https://google-coral.github.io/py-repo/ tflite_runtime
$ git clone https://github.com/PINTO0309/TensorflowLite-bin
$ cd TensorflowLite-bin
$ python3 mobilenetv2ssd.py
time:  0.06339740753173828
[[(128, 223), (320, 542), 0.96484375, 'dog'], [(114, 135), (564, 432), 0.953125, 'bicycle'], [(459, 80), (694, 173), 0.87890625, 'car']]
coordinates: (128, 223) (320, 542). class: "dog". confidence: 0.96
coordinates: (114, 135) (564, 432). class: "bicycle". confidence: 0.95
coordinates: (459, 80) (694, 173). class: "car". confidence: 0.88

動いた。
というわけで、32bitと同じ手順で問題なく動いてしまいました。あれ?

5.まとめ

Qiitaの記事は覚書目的が8割で、書きながら作業を進めるのですが、今回は何のトラブルもなく32bitと同じ方法で動いてしまいました。もったいないので公開しますが、冒頭で書いた通りあまり意味のない記事になってしまいました。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?