|
シングルボードコンピュータの代表的な製品は Rapberry Pi と Jetson Nano の2種類です。Jetson nanoはアメリカの半導体メーカーであるNVIDIA社が製造・販売をするシングルボードコンピューターです。 Jetson Nano Developer Kit B01 にはディープラーニングのためのパッケージ Hello AI World が用意されています。ここでは、 Hello AI World パッケージを使用しないで、ディープラーニングの汎用フレームワーク Pytorch や Tensorflow を活用した機械学習の実際例を取り上げます。まず、Pytorch 及びJupyter Notebook のインストール方法と活用について説明します。
このページでは、リモートPCとして Mac を使用した手順を説明しています。Windows マシンでも同様にします。
Last updated: 2022.1.27
Jetson Nano への Pytorch のインストール |
Jetson Nano への Pytorch のインストールの手順について、NVIDIAのForums サイトに沿って説明します。JetPack 4.6 を前提に説明します。Jetson Nano の端末に、以下のコマンド群を順番に入力します。
$ wget https://nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl -O torch-1.8.0-cp36-cp36m-linux_aarch64.whl $ sudo apt-get install python3-pip libopenblas-base libopenmpi-dev $ pip3 install Cython $ pip3 install numpy torch-1.8.0-cp36-cp36m-linux_aarch64.whl
ここでは、Pytorch v.1.8.0 をインストールしました。次に、Torchvision をインストールします。Pytorch のバージョンに合わせたバージョンを選択します。Pytorch v.1.8.0 に対応するのは torchvision v0.9.0 です。
$ sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev $ git clone --branch v0.9.0 https://github.com/pytorch/vision torchvision # see below for version of torchvision to download $ cd torchvision $ export BUILD_VERSION=0.9.0 # where 0.9.0 is the torchvision version $ python3 setup.py install --user
このインストールには相当な時間がかかります。忍耐強く待ちましょう。インストールが正常に終了したことを確認するために、以下のような入力をします。
$ python3 >>> import torch >>> print(torch.__version__) >>> print('CUDA available: ' + str(torch.cuda.is_available())) >>> print('cuDNN version: ' + str(torch.backends.cudnn.version())) >>> a = torch.cuda.FloatTensor(2).zero_() >>> print('Tensor a = ' + str(a)) >>> b = torch.randn(2).cuda() >>> print('Tensor b = ' + str(b)) >>> c = a + b >>> print('Tensor c = ' + str(c)) >>> import torchvision >>> print(torchvision.__version__) >>> import torchvision >>> print(torchvision.__version__)
Illegal instruction (core dumped) というエラーが出たときは、
export OPENBLAS_CORETYPE=ARMV8
という1行を .bashrc ファイルに追加します。その後、$ source .bashrc と読み込みます。
Jetson Nano への Jupyter Notebook のインストール |
Pytorch のインストールが完了したので、次に、Jupyter Notebook のインストールを行います。vivinkoというサイトに説明がありましたので、この手順を参考にします。以下のコマンドを打ちます。
$ sudo apt-get install python3-pip $ pip3 install -U pip # pip自体のアップデート $ pip3 install jupyter notebook
インストールでエラーが出たときは、以下のモジュールをインストールしてから、再実行します。
$ sudo apt install libbz2-dev libsqlite3-dev libffi-dev python3-dev
設定ファイルの作成とパスワードの設定を行います。
$ jupyter notebook --generate-config
設定ファイルは、~/.jupyter/jupyter_notebook_config.pyにあります。このファイルはコメント#のみが多数記述されていますが、これに以下のコードを追加します。該当する各コメント行を検索してから修正をするのは煩雑なので、もとのコメントコードはそのままの状態で、以下の4行を分かりやすい箇所に追加するだけにします。
c.NotebookApp.allow_remote_access = True c.NotebookApp.base_url = '/jetson/' c.NotebookApp.open_browser = False c.NotebookApp.ip = '0.0.0.0'
base_url = '/jetson/'とすることで、http://[JetsonのIPアドレス]:8888/jetson/でアクセスできるようになります。次に、パスワードを設定します。以下のコマンドを打つと、パスワードの設定が要求されます。
$ jupyter notebook password
Jupyter Notebookの自動起動をするために、エディターで /etc/systemd/system/jupyter.service を作成し、下記のようにします。{USER}と{GROUP}については、適宜置き換えてください。
[Unit] Description = Jupyter Notebook [Service] Type=simple PIDFile=/var/run/jupyter-notebook.pid ExecStart=/bin/bash -c ". /home/{USER}/.local/bin/jupyter-notebook --notebook-dir=/home/koichi/my-notebooks" WorkingDirectory=/home/{USER}/my-notebooks User={USER} Group={GROUP} Restart=always [Install] WantedBy = multi-user.target
自動起動のオプションを以下のコマンドで設定します。
$ sudo systemctl start jupyter.service $ sudo systemctl enable jupyter.service
最後に、パスを通します。以下の内容を~/.bash_profileに記載してください。
# Jupyterのコマンドが入っているディレクトリ PATH="$PATH:~/.local/bin" # 以下はCUDA関連ですが, 念のためパスを通しておく PATH="$PATH:/usr/local/cuda/bin" PATH="$PATH:/usr/local/cuda-10.2/bin"
reboot すれば、Jupyter Notebook が利用できます。
Jetson Nano - Pytorch で画像識別 |
Jetson Nano に ssh 接続したPCのターミナルからJupyter Notebook を起動します。
$ jupyter notebook
と打ちます。すると Jupyter Notebook が起動して、以下のような表示が出ます。
[I 15:14:16.858 NotebookApp] ローカルディレクトリからノートブックをサーブ: /home/koichi [I 15:14:16.858 NotebookApp] Jupyter Notebook 6.4.8 is running at: [I 15:14:16.858 NotebookApp] http://Jetson:8888/jetson/ [I 15:14:16.858 NotebookApp] サーバを停止し全てのカーネルをシャットダウンするには Control-C を使って下さい(確認をスキップするには2回)。
PCのブラウザで「http://[JetsonのIPアドレス]:8888/jetson/」にアクセスすると、Jetson Nano の Jupyter Notebook が開きます。テストに以下のスクリプトをコピペしてノートブックを作成してください。
# -*- coding: utf-8 -*- try: import numpy numpyExists = True except ImportError: numpyExists = False try: import scipy scipyExists = True except ImportError: scipyExists = False try: import matplotlib matplotlibExists = True except ImportError: matplotlibExists = False try: import PIL PILExists = True except ImportError: PILExists = False try: import keras kerasExists = True except ImportError: kerasExists = False try: import tensorflow tensorflowExists = True except ImportError: tensorflowExists = False try: import torch torchExists = True except ImportError: torchExists = False if numpyExists == True: print('numpyのバージョンは{0}です'.format(numpy.__version__)) else: print('numpyはインストールされていません') if scipyExists == True: print('scipyのバージョンは{0}です'.format(scipy.__version__)) else: print('scypyはインストールされていません') if matplotlibExists == True: print('matplotlibのバージョンは{0}です'.format(matplotlib.__version__)) else: print('matplotlibはインストールされていません') if PILExists == True: print('PIL(Pillow)のバージョンは{0}です'.format(PIL.__version__)) else: print('PIL(Pillow)はインストールされていません') if kerasExists == True: print('kerasのバージョンは{0}です'.format(keras.__version__)) else: print('kerasがインストールされていないか、まだ設定が済んでいません') if tensorflowExists == True: print('tensorflowのバージョンは{0}です'.format(tensorflow.__version__)) else: print('tensorflowはインストールされていません') if torchExists == True: print('pytorchのバージョンは{0}です'.format(torch.__version__)) else: print('pytorchはインストールされていません')
このセルを実行すると、以下のような結果が出ます。
numpyのバージョンは1.19.4です scipyのバージョンは0.19.1です matplotlibのバージョンは2.1.1です PIL(Pillow)のバージョンは8.4.0です kerasがインストールされていないか、まだ設定が済んでいません tensorflowはインストールされていません pytorchのバージョンは1.8.0です
Tensorflow はまだインストールされていないので、上記のような結果になります。それ以外で、インストールされていないモジュールはインストールしてください。インストールする際に、Numpy モジュールが最新バージョンになる可能性があります。その場合、使用中にエラーが出るときは、numpy モジュールを上記のバージョンにダウングレードします。
$ pip3 install numpy==1.19.4
jupyter notebookを起動して、実行させるときに
ImportError: /usr/lib/aarch64-linux-gnu/libgomp.so.1: cannot allocate memory in static TLS block
というエラーが出ることがあります。この時は、以下のようなコマンドを入力して、再度jupyter bookを起動して下さい。
$ export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1 $ jupyter notebooks
Pytorch を用いて画像分類のスクリプトを実行してみましょう。このスクリプトは私のGitHub repoにあります。以下のスクリプトをコピペして、ノートブックを作成してください。わかりやすいようにセルに分割するといいでしょう。
画像を用意しないといけないので、例えば、私のGitHub repo からダウンロードすることができます。下の画像をダウンロードして使用しても構いません。その場合は、デレクトリ ./images/ を作成して、その中に cat.jpg として配置してくださ。
使用する猫の画像
パッケージのimportとPyTorchのバージョンを確認します。その後、学習済みのAlexNetモデルを読み込みます。
# パッケージのimport import numpy as np import json from PIL import Image import matplotlib.pyplot as plt %matplotlib inline import torch import torchvision from torchvision import models, transforms # PyTorchのバージョン確認 print("PyTorch Version: ",torch.__version__) print("Torchvision Version: ",torchvision.__version__) # 学習済みのAlexNetモデルをロード net = models.alexnet(pretrained=True)# 学習済みのパラメータを使用 net.eval() # 推論モードに設定 print(net) # 入力画像の前処理のクラス class BaseTransform(): """ 画像のサイズをリサイズし、色を標準化する。 resize : int リサイズ先の画像の大きさ。 mean : (R, G, B) 各色チャネルの平均値。 std : (R, G, B) 各色チャネルの標準偏差。 """ def __init__(self, resize, mean, std): self.base_transform = transforms.Compose([ transforms.Resize(resize), # 短い辺の長さがresizeの大きさになる transforms.CenterCrop(resize), # 画像中央をresize × resizeで切り取り transforms.ToTensor(), # Torchテンソルに変換 transforms.Normalize(mean, std) # 色情報の標準化 ]) def __call__(self, img): return self.base_transform(img)
画像を読み込みます。
# 1. 画像読み込み image_file_path = './images/cat.jpg' img = Image.open(image_file_path) # [高さ][幅][色RGB] # 2. 元の画像の表示 plt.imshow(img) plt.show() # 3. 画像の前処理と処理済み画像の表示 resize = 224 mean = (0.485, 0.456, 0.406) std = (0.229, 0.224, 0.225) transform = BaseTransform(resize, mean, std) img_transformed = transform(img) # torch.Size([3, 224, 224]) # (色、高さ、幅)を (高さ、幅、色)に変換し、0-1に値を制限して表示 img_transformed = img_transformed.numpy().transpose((1, 2, 0)) img_transformed = np.clip(img_transformed, 0, 1) plt.imshow(img_transformed) plt.show()
出力結果からラベルを予測する後処理クラスを作成し、学習済みAlexNetモデルで画像分類を予測します。
# ILSVRCのラベル情報をロードし辞意書型変数を生成します class_index = json.load(open('./data/imagenet_class_index.json', 'r')) #class_index # 出力結果からラベルを予測する後処理クラス class Predictor(): def __init__(self, class_index): self.class_index = class_index def predict_max(self, out): """ 確率最大のラベル名を取得する。 out : torch.Size([1, 1000]) Netからの出力。 """ maxid = np.argmax(out.detach().numpy()) predicted_label_name = self.class_index[str(maxid)][1] return predicted_label_name # Predictorのインスタンスを生成します predictor = Predictor(class_index) # 前処理の後、バッチサイズの次元を追加する transform = BaseTransform(resize, mean, std) # 前処理クラス作成 img_transformed = transform(img) # torch.Size([3, 224, 224]) inputs = img_transformed.unsqueeze_(0) # torch.Size([1, 3, 224, 224]) # モデルに入力し、モデル出力をラベルに変換する out = net(inputs) # torch.Size([1, 1000]) result = predictor.predict_max(out) # 予測結果を出力する print("入力画像の予測結果:", result)
結果は 「Egyptian_cat」 となるはずです。GPU を使用しているので、処理速度は結構速いです。私のGitHubにある画像分類のノートブック、image_classifier_vgg_pytorch.ipynb 、及び、Cifar_pytorch.ipynb もJetson Nano で実行可能です。簡単な学習はできますが、一般的なモデルを学習する能力はありません。
Pytorch-YOLOv5で物体検出 |
次に、Yolo(You Only Look Once)v5 バージョンの実装を取り上げます。このパッケージを利用するためには、Python>=3.8 および PyTorch>=1.7 がインストールされていることが必要ですが、Python 3.6でも実行できます。ultralytics/yolov5を参照してください。そのGoogle Colab は YOLOv5_tutorials_roboflow.ipynbにあります。
依存モジュールのダウンロードしておきます。このうち大部分は既ににインストール済みですが、インストールされていないモジュールだけがダウンロードされます。
$ sudo apt update $ sudo apt install -y python3-opencv ssh $ pip3 install -U pip $ pip3 install requests tqdm pyyaml seaborn pycocotools thop
yolov5のパッケージを以下のように git clone します。
$ git clone https://github.com/ultralytics/yolov5 $ cd yolov5
「pip install -r requirements.txt」は使用しません。これで準備はできました。通常は、Jupyter notebook を起動して実行しますが、まずターミナルで実行してみましょう。
Python スクリプトを用いた物体検出を行ってみましょう。以下のように入力して下さい。
$ python3 detect.py --source data/images --weights yolov5s.pt --conf 0.25
自動的にyolov5s.pt がダウンロードされます。これは data/images ディレクトリにある2種類の画像からの物体検出の実行例です。結果は以下のように、 runs/detect/exp 内に保存されます。bus.jpg 、 zidane.jpg です。
Downloading https://ultralytics.com/assets/Arial.ttf to /home/koichi/.config/Ultralytics/Arial.ttf... detect: weights=['yolov5s.pt'], source=data/images, data=data/coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs/detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False YOLOv5 🚀 v6.1-65-g7a2a118 torch 1.8.0 CUDA:0 (NVIDIA Tegra X1, 3964MiB) Downloading https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5s.pt to yolov5s.pt... 100%|██████████████████████████████████████| 14.1M/14.1M [00:05<00:00, 2.75MB/s] Fusing layers... YOLOv5s summary: 213 layers, 7225885 parameters, 0 gradients, 16.5 GFLOPs image 1/2 /home/koichi/my-notebooks/yolov5/data/images/bus.jpg: 640x480 4 persons, 1 bus, Done. (0.654s) image 2/2 /home/koichi/my-notebooks/yolov5/data/images/zidane.jpg: 384x640 2 persons, 2 ties, Done. (0.116s) Speed: 275.0ms pre-process, 385.1ms inference, 118.7ms NMS per image at shape (1, 3, 640, 640) Results saved to runs/detect/exp
Zidane.jpg
次に、webcamera のライブ映像から物体検出を実行しましょう。webcamera を接続して、以下のように打って下さい。
$ python3 detect.py --source 2
Webcamからの映像が表示されるまでの処理時間は数十秒かかりますが、検出スピードは結構早いです。「ImportError: The _imagingft C module is not installed」というエラーが出る可能性があります。この時は、以下のコマンドを打ってから、Pillow をインストールし直して下さい。
$ sudo apt-get install libfreetype6-dev
jupyter notebookを使用することを取り上げます。jupyter notebookを起動して、以下のようにセルを記述します。最初のセルに
!git clone https://github.com/ultralytics/yolov5 # clone repo %cd yolov5 import torch from IPython.display import Image, clear_output # to display images clear_output() print('Setup complete. Using torch %s %s' % (torch.__version__, torch.cuda.get_device_properties(0) if torch.cuda.is_available() else 'CPU'))
このセルを実行後、2番目のセルに以下の内容を作成します
!python3 detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source data/images/ Image(filename='runs/detect/exp/zidane.jpg', width=600)
このセルを実行すると
model.warmup(imgsz=(1 if pt else bs, 3, *imgsz), half=half) # warmup
の1行に invalid syntax エラーが出ますが、実行され、画像 zidane.jpg が表示されます。
全部の画像を表示するには
#display inference on ALL test images import glob from IPython.display import Image, display for imageName in glob.glob('./runs/detect/exp/*.jpg'): #assuming JPG display(Image(filename=imageName)) print("\n")
というセルを作成します。
TensorRT を使用するときには、以下のように学習済みモデルの重みを変換します。
# https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing-pip #!pip install -U nvidia-tensorrt --index-url https://pypi.ngc.nvidia.com # install tensorrt !python3 models/export.py --weights yolov5s.pt --include engine --imgsz 640 640 --device 0 # export !python3 detect.py --weights yolov5s.engine --imgsz 640 640 --device 0 # inference
TensorFlow Lite でリアルタイム物体検出 |
Tensorflow Lite のインストールなどでは、背後で実行されているビルドで64bit C++コンパイラーが使用されます。 ここで、OSのバージョンおよびC++コンパラーのバージョンを調べておきましょう。OSのバージョンチェックは以下のコマンドを打ちます。
$ uname -a $ cat /etc/os-release $ gcc -v
aarch64-linux-gnu と表示されているはずです。TensorFlow Lite の C ++ API をビルドするために必要な64bit C++コンパイラーは aarch64-linux-gnu です。
PythonでTensorFlow Liteを使用すると、 Raspberry PiやEdgeTPUを備えたCoralデバイスなど、Linuxベースの組み込みデバイスに最適です。PythonでTensorFlow Liteモデルの実行をすばやく開始するには、すべてのTensorFlowパッケージではなく、TensorFlow Liteインタープリターのみをインストールします。この簡略化されたPythonパッケージをtflite_runtimeと言います。
tflite_runtimeパッケージは、完全なtensorflowパッケージの数分の1のサイズであり、TensorFlow Lite(主にInterpreter Pythonクラス)で推論を実行するために必要な最小限のコードが含まれています。公式サイトの説明によれば、TensorFlow Liteランタイムパッケージをインストールするには、次のコマンドを実行します。
$ sudo apt install curl $ echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list $ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - $ sudo apt update $ sudo apt install python3-tflite-runtime
このコマンドにより tflite_runtime のパッケージが /usr/lib/python3/dist-packages にインストールされます。
この例を用いた tflite_runtime の実行を試みます。使用する 画像や MobileNet v1 モデルをインストールします。
$ mkdir tmp $ curl https://raw.githubusercontent.com/tensorflow/tensorflow/master/tensorflow/lite/examples/label_image/testdata/grace_hopper.bmp > ~/tmp/grace_hopper.bmp $ curl https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_02_22/mobilenet_v1_1.0_224.tgz | tar xzv -C ~/tmp $ curl https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_1.0_224_frozen.tgz | tar xzv -C ~/tmp mobilenet_v1_1.0_224/labels.txt $ mv ~/tmp/mobilenet_v1_1.0_224/labels.txt ~/tmp/
部分的にエラーが出ますが、無視します。Python スクリプト label_image.py を/home/にコピーします。tensorflow モジュールから Interpreter をインポートする代わりに、tflite_runtime からインポートする必要があります。このスクリプトは Tensorflow 向けに書かれているので、以下の2箇所に修正が必要です。
import tensorflow as tf ⇨ import tflite_runtime.interpreter as tflite interpreter = tf.lite.Interpreter(model_path=args.model_file) ⇨ interpreter = tflite.Interpreter(model_path=args.model_file)
この修正後、以下のコマンドを実行します。
$ python3 label_image.py --model_file ~/tmp/mobilenet_v1_1.0_224.tflite --label_file ~/tmp/labels.txt --image ~/tmp/grace_hopper.bmp
0.919720: 653:military uniform 0.017762: 907:Windsor tie 0.007507: 668:mortarboard 0.005419: 466:bulletproof vest 0.003828: 458:bow tie, bow-tie, bowtie time: 169.113ms
OpenCV のインストールが済んでいない時は、以下のコマンドを打って cv2 をインストールして下さい。
$ sudo apt install python3-opencv
Tensorflow Lite の公式ページに沿って説明します。TensorFlow のGitHubから Tensorflow Lite パッケージをダウンロードします。Raspberry Pi 向けのコードですが、Jetson Nanoでも実行可能です。
$ git clone https://github.com/tensorflow/examples --depth 1 $ cd examples/lite/examples/object_detection/raspberry_pi $ sh setup.sh---- Successfully installed absl-py-1.0.0 argparse-1.4.0 flatbuffers-1.12 numpy-1.22.1 opencv-python-4.5.3.56 pybind11-2.9.0 tflite-runtime-2.7.0 tflite-support-0.3.1 (中略) -e Downloaded files are in ./
と表示されて、インストールが終わります。warning がいくつか出ますが、無視してください。tflite_runtime をはじめとする関連するファイルはすべてユーザ直下のディレクトリ 「.local/lib/python3.x」 にインストールされます。なお、
「/home/pi/examples/lite/examples/object_detection/raspberry_pi」
には以下のファイルがインストールされます。
README.md object_detector.py test_data detect.py object_detector_test.py utils.py efficientdet_lite0.tflite requirements.txt efficientdet_lite0_edgetpu.tflite setup.sh
ここで使用される学習済みモデルが efficientdet_lite0.tflite になります。これは EfficientNet をTensorflow Lite で使用できるように変換したモデルです。Webcamからの映像処理にとなって必要となるモジュールをインストールしておきます。
$ sudo apt install portaudio19-dev $ pip install pyaudio次に、Jetson Nano に Webcamera を接続して下さい。Raspberry Piのデスクトップにあるターミナルから実行して下さい。
$ python3 detect.py \ --model efficientdet_lite0.tflite --cameraId 2
と入力して、Web camera を用いた物体検出のコードを実行します。デスクトップ画面に結果が表示されます。 以下のスクリプトが detect.py の内容です。
Jetson Nano のデスクトップのターミナルから実行すると、このコマンドは正常に作動して、デスクトップに Web camera の映像が表示されて、物体検出がされるはずです。検出スピードは早いです。
TensorFlow 2.4.1 のインストール |
Tensorflow のJetson Nano へのインストールは少々厄介です。NVIDIA の Forums に説明されているインストールの説明通りに実行すると「no matching distribution found 」というエラーが出て終了します。JetPack 4.6 に対応するwheel が存在しないようです。また、Tensorflow 2.5.0 が CUDA 11.0 and cuDNN version 8.0.4 に依存しているが、Jetson Nano はこれに対応していません。JetPack がバージョンアップされ、これに対応できるまで待つ必要があるそうです。さらに、 CUDA とNumpy のバージョンが衝突することによるエラーも起きているようです。Tensorflow はインストールに 2.1 GB のストレージを要求します。
JetPack 4 には Python 3.6.9.がインストールされていますので、確認して下さい。Jetson Nano (aarch64)向けのwheelは、Qengineeringさんが用意していますので、install-tensorflow-2.4.0-on-jetson-nano.htmlで説明されているい手順に従います。以下のコマンドを順に入力します。
# get a fresh start (remember, the 64-bit OS is still under development) $ sudo apt-get update $ sudo apt-get upgrade # install pip and pip3 $ sudo apt-get install python-pip python3-pip # remove old versions, if not placed in a virtual environment (let pip search for them) $ sudo pip uninstall tensorflow $ sudo pip3 uninstall tensorflow # install the dependencies (if not already onboard) $ sudo apt-get install gfortran $ sudo apt-get install libhdf5-dev libc-ares-dev libeigen3-dev $ sudo apt-get install libatlas-base-dev libopenblas-dev libblas-dev $ sudo apt-get install liblapack-dev $ sudo -H pip3 install Cython==0.29.21 # install h5py with Cython version 0.29.21 $ sudo -H pip3 install h5py==2.10.0 $ sudo -H pip3 install -U testresources numpy # upgrade setuptools 39.0.1 -> 53.0.0 $ sudo -H pip3 install --upgrade setuptools $ sudo -H pip3 install pybind11 protobuf google-pasta $ sudo -H pip3 install -U six mock wheel requests gast $ sudo -H pip3 install keras_applications --no-deps $ sudo -H pip3 install keras_preprocessing --no-deps # install gdown to download from Google drive $ sudo -H pip3 install gdown # download the wheel $ gdown https://drive.google.com/uc?id=1DLk4Tjs8Mjg919NkDnYg02zEnbbCAzOz # install TensorFlow $ sudo -H pip3 install tensorflow-2.4.1-cp36-cp36m-linux_aarch64.whl
サイズが大きのでインストールには時間がかかります。TensorFlow 2.4 C++ API 向けのインストール手順も説明されていますが、C++ APIのインストールは省略します。インストールの確認をしましょう。
$ python3 Python 3.6.9 (default, Dec 8 2021, 21:08:43) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow as tf 2022-03-13 11:18:10.849413: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.10.2 2022-03-13 11:18:18.202415: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.10.2 >>> tf.__version__ '2.4.1'