LoginSignup
1
0

More than 1 year has passed since last update.

Mac環境でCoral USB Acceleratorを動かしてみる

Last updated at Posted at 2021-12-17

はじめに 

リアルタイムな映像の物体検出をサクッと試してみたかったので,Coral USB Acceleratorを動かしてみました.ほとんど参考サイトと内容は同じですが,動画への適応方法とうまくいかなかった箇所とその対処方を添えて書きます.

前提環境

  • mac : 12.0.1
  • python : 3.8.12
  • TensorFlow Lite : 2.6.0

環境構築

サイトを参考にして環境を構築していきます.
1. python仮想環境構築
2. Edge TPUランタイム
3. TensorFlow Lite

python仮想環境構築

Anacondaを利用し仮想環境を構築します.Anacondaのインストールが済んでない方はこちらのサイトを見てAnacondaをインストールをしてください.
ターミナルで以下のコマンドを叩きpythonの仮想環境を構築します.

ターミナル
# 作業ディレクトリ作成
mkdir tflite-coral-example && cd tflite-coral-example

# 仮想環境作成
conda create -n 仮想環境名

以下の操作はこの仮想環境内で行います.

Edge TPUランタイム

Coralの公式サイトの手順どおりにインストールします.OSごとに必要条件と叩くコマンドが異なるので注意.
以下はMacOSにおけるインストール手順.最後に動作周波数について聞かれますが今回はN(通常の周波数)で動かします.

ターミナル(仮想環境内)
curl -LO https://github.com/google-coral/libedgetpu/releases/download/release-grouper/edgetpu_runtime_20210726.zip

unzip edgetpu_runtime_20210726.zip

cd edgetpu_runtime

sudo bash install.sh

この時『brewコマンドが見つかりません』というエラーが出た場合は,こちらのサイトを参考にHomebrewをインストールして再度sudo bash install.shを叩く.

TensorFlow Lite

公式サイトを参考にインストール.
以下はMacOsにおけるインストール手順(pip3でインストールするだけ)

ターミナル(仮想環境内)
pip3 install --extra-index-url https://google-coral.github.io/py-repo/ tflite_runtime

画像の物体検出をしてみる

まずリポジトリをクローン.

ターミナル(仮想環境内)
mkdir google-coral && cd google-coral
git clone https://github.com/google-coral/tflite --depth 1

依存用ライブラリと推論データをインストール.

ターミナル(仮想環境内)
cd tflite/python/examples/detection
./install_requirements.sh

以上で準備完了.以下のコマンドを叩き実行.

ターミナル(仮想環境内)
python3 detect_image.py \
      --model models/mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite \
      --labels models/coco_labels.txt \
      --input images/grace_hopper.bmp \
      --output images/grace_hopper_processed.bmp

この時『opencvのモジュールが無い』と言われた場合はこちらのサイトを参考にopencvをインストール(opencvは諸々エラーが多発しますので粘ってください...)

リアルタイム動画の物体検出をしてみる

detect_image.py内の画像の読み込み部分を書き換えることで,リアルタイム動画の物体検出が可能になります.しかし,このプログラムはpillow型しか読み込めないため,動画(OpenCV)をpillowに変換する必要があります.

detect_image.py内に追加
def cv2pil(image):
    ''' OpenCV型 -> PIL型 '''
    new_image = image.copy()
    if new_image.ndim == 2:  # モノクロ
        pass
    elif new_image.shape[2] == 3:  # カラー
        new_image = cv2.cvtColor(new_image, cv2.COLOR_BGR2RGB)
    elif new_image.shape[2] == 4:  # 透過
        new_image = cv2.cvtColor(new_image, cv2.COLOR_BGRA2RGBA)
    new_image = Image.fromarray(new_image)
    return new_image

def pil2cv(image):
    ''' PIL型 -> OpenCV型 '''
    new_image = np.array(image, dtype=np.uint8)
    if new_image.ndim == 2:  # モノクロ
        pass
    elif new_image.shape[2] == 3:  # カラー
        new_image = cv2.cvtColor(new_image, cv2.COLOR_RGB2BGR)
    elif new_image.shape[2] == 4:  # 透過
        new_image = cv2.cvtColor(new_image, cv2.COLOR_RGBA2BGRA)
    return new_image

(参考サイト:https://qiita.com/derodero24/items/f22c22b22451609908ee)
USBカメラを接続し,同様に実行する. 

1
0
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
1
0