Jetson には最も完全な Jetpack5.1 インストール記録があり、それに従ってください (バグ エラー処理を含む)。

目次

前に書いてある

バックグラウンド

1 システムの事前設定

1.1 燃焼

1.2 環境変数を構成する

1.3 vnc を使用する

1.4 pip ソースの変更とインストール

1.5 pycharmのインストール

2 pytorch環境構築

2.1 miniforgeをインストールして仮想環境を作成する

2.2 トーチ、トーチビジョンの取り付け

2.3 opencvのインストール

2.4 tensorrt のインストール

2.5 torch2trtのインストール

3 カメラ処理

3.1csiカメラ

3.2 USBカメラ


前に書いてある

Jetpack5.1 は cuda11 と cuda11.4 (システムには 2 つのビルトインがあります)、tensorRT8.5.2、ビルトインの opencv4.5.4 を使用しています。いくつかのバグはありますが、全体的には良好なバージョンです。4 月 23 日現在、tensorrt8。 5 はまだ最新の安定版バージョンです。trt を使用して高速化したい友人は見逃さないでください。

この記事では、書き込みから環境構成までをゼロから開始し、torch、torchvision、tensorRT、torch2trt、opencv-python のインストールを含みます。 

バックグラウンド

Jetson xavier nx でトーチベースの顔検出と認識を実現し、推論を加速するために trt を呼び出します。csi2 カメラと複数の SD カードを使用します (環境を新しい SD カードにバックアップすることもお勧めします)。

1 システムの事前設定

1.1 燃焼

JetPack SDK 5.1 | NVIDIA 開発者は、このリンクにアクセスして、Jetson モデルに応じた SD カード イメージをダウンロードしてください。

SD カードを準備します。SD カードがシステムによってすでに消去されている場合は、次の手順を実行してください。

このコンピュータを右クリック --> 管理 --> ディスクの管理 一番下は SD カードです。右クリックして最大のパーティションを削除し、右クリックして新しいボリュームを作成し、ドライブ文字を割り当てます。コンピュータ

Windows/Mac 用 SD メモリ カード フォーマッタ | SD アソシエーション (sdcard.org)このリンクから sdformatter をダウンロードして開き、SD カードを選択してフォーマットします。

Win32 Diskimager - ダウンロード [公式サイト] win32diskimagerをインストールし、先ほどダウンロードしたイメージファイルを選択して書き込みます

 書き込んだSDカードをJetsonに挿入し、電源を入れて初期設定を完了します

1.2 環境変数を構成する

#cuda
sudo vi ~/.bashrc
#添加
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
#保存并刷新
source ~/.bashrc

5.1 イメージには cuda11 と 11.4 があることに注意してください。

export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-ver #ver=11 or 11.4

ここでソースを変更することはお勧めしません. 国内ソースは新しいバージョンのサポートに少し問題がある可能性があります. 動作が遅いと感じたり、タイムアウトが発生したりする場合は、自分でソースに実行してください。

以前のバージョンでは使用できた jtops がこのバージョンでは動作しないようです。次のコードは実行できませんが、存在しなくても問題ありません。確認したいもののバージョンを確認してください。別々に。

sudo -H pip install -U jetson-stats

1.3 vnc を使用する

パソコンで操作したほうが便利ですし、パソコンから直接コピー&ペーストすることもできるので、ここではsshを使って接続します まずパソコンとjetsonをネットワークケーブルで接続し、arp -aと入力しますJetson の IP を見つけるための cmd (通常は 192.168.137.xxx 形式ですが、192.168.137.255 の静的な完全な f アドレスではありません)

デバイス マネージャー -> ネットワークと共有センター -> アダプター オプションの変更 -> wlan プロパティを右クリック ->

Jetson ネットワーク ケーブルがアクセスするポートの共有を許可します。ここでは Ethernet 2 を使用します。

VNCビューアをインストールする

vnc ソフトウェア vino-server は、jetson 公式イメージにインストールされています。そうでない場合は、自分でインストールしてください。インストール コマンドは次のとおりです。

sudo apt-get install vino-server

モニターがない場合は、パテを使用して前述の IP アドレスに接続する必要がありますが、モニターが必要であることをお勧めしますので、モニターなしでの操作方法については説明しません。

起動時に自動的に起動するように vinoserver を構成する

mkdir -p ~/.config/autostart
cp /usr/share/applications/vino-server.desktop ~/.config/autostart

いくつかの設定をする 

gsettings set org.gnome.Vino prompt-enabled false
gsettings set org.gnome.Vino require-encryption false

次に、パスワードを設定します。必要な場合は、パスワードを不要にすることをお勧めします。

gsettings set org.gnome.Vino authentication-methods "['vnc']"
gsettings set org.gnome.Vino vnc-password $(echo -n 'password'|base64)
#password是你的密码

それから再起動します

sudo reboot

自動ログインをオンにする 

sudo gedit /etc/gdm3/custom.conf

これら 2 行のコードをコメント アウトします。ただし、デフォルトはコメント アウトする必要があります。 

#  AutomaticLoginEnable = true
#  AutomaticLogin = user1

次に、解像度を調整します。そうでない場合は、800*600 のみになります (低解像度と低遅延。ニーズによって異なります)。

ファイルを開く 

sudo gedit /etc/X11/xorg.conf

 これを入力しますが、5.1 はデフォルトですでに高解像度になっているはずです

Section "Screen"
   Identifier    "Default Screen"
   Monitor       "Configured Monitor"
   Device        "Tegra0"
   SubSection "Display"
       Depth    24
       Virtual 1280 800 # 改为自己需要的分辨率
   EndSubSection
EndSection

次に、Windows に戻り、vncviewer をインストールします。VNC Viewer をダウンロード | VNC® Connect (realvnc.com)

開き、左上隅の「ファイル」->「新規接続」

 以前の Jetson IP を入力して接続します。

Windows で黄色に切り替わる猫を再起動したり Jetson を開始したりしないでください!!!!!!!!!!!!!!!!!!!!!

あるいは、黒と黄色を切り替える猫のようなものです!!!!!!!!!!!!!!!!!!

これを使用したい場合は、vnc が接続を確立するまで待ってから開いてください。

Jetson の有線接続が切断され、解決方法がわかりません (jetson の vnc を再インストールし、コンピューターのネットワークをリセットしました)。arp -a は直接 Jetson の IP を失いました。

ファイルを転送する必要がある場合は、別の mobaxterm をインストールできます。使用方法は同じです。

 左上の上向き矢印をクリックしてファイルをアップロードします

1.4 pip ソースの変更とインストール

5.1 には pip がないようです。仮想環境を使用しない場合は、pip をローカルにインストールしてください

sudo python3 get-pip.py 

パッケージもインストールします

pip3 install packaging

Pip はソースをより速く変更できます

sudo mkdir .pip
cd .pip

pip.config ファイルを作成し、次のように入力します

sudo touch pip.conf
sudo gedit pip.conf

  以下の内容を書くだけです

[global]
timeout = 6000
index-url = https://pypi.doubanio.com/simple
trusted-host = pypi.doubanio.com

1.5 pycharmのインストール

PyCharm をダウンロード: JetBrains によるプロの開発者向けの Python IDE

aarch64 の圧縮パッケージをダウンロードする

Pycharm は Java に依存しており、インストールした pycharm のバージョンに応じて openjdk-8-jdk または openjdk-11-jdk に分かれます。

ここに新しいバージョンをインストールしたので、openjdk-11-jdk が必要です

ちょっと行き詰まっていますが、古いものではなく新しいものを買いますよね? 

apt-cache search openjdk

sudo apt-get install openjdk-11-jdk

次に、環境変数を設定します。手順は次のとおりです。

sudo gedit ~/.bashrc

次に、構成ファイルの最後に次のコードを記述します。

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

この時点で、open-jdk の構成は完了しています。次に、コマンドまたはグラフィカル インターフェイスの解凍ツールを使用して pycharm を解凍し、ターミナルで解凍されたフォルダーを見つけ、pycharm フォルダー内の bin フォルダーを見つけます。そして bin フォルダーに cd し、bin フォルダー内で実行します。

$ sh ./pycharm.sh

実行後、jetpack5.1が使用するubuntu20.04はpycharmのメニューへのワンクリックロックをサポートしていないため、pycharmを開いて左下隅の設定をクリックする必要があります

 「デスクトップエントリの作成」をクリックするだけでショートカットを作成できます

2 pytorch環境構築

pytorch のインストールには多くのエピソードがありましたが、ここに要約します。

まず、このリンクの下にトーチをインストールしてください

Jetson 用 PyTorch - Jetson と組み込みシステム / Jetson Nano - NVIDIA 開発者フォーラム

このリンクによると、torch1.11 と 1.12 を使用できますが、より高いバージョンが必要な場合は、torch2.0.0 の公式コンテナが提供されています。

NVIDIA L4T PyTorch | NVIDIA NGC

torch1.12 をインストールした後、torchvision0.13.0 の不一致の問題を発見しました (はい、彼はまた来ました、そして github によって与えられたバージョンはまた間違っていました):

torchvision 0.13.0 requires requests, which is not installed.

ただし、torch1.11 と torchvision0.12.0 を組み合わせても問題ありません。

Jetson に pytorch の下位バージョンをインストールする必要がある場合は、python3.6 をインストールする必要があり、次のようなバグに直面します。

libmpi.so.20: cannot open shared object file: No such file or directory

インターネット上の誰かが解決しようとしましたが、図書館の Web サイトにアクセスしてこのファイルを探しましたが見つかりませんでした。python3.6 の問題のはずです。

したがって、torch1.11 とtorchvision0.12.0を使用します。

独自の方法で torch と Python を指定したい場合は、次のとおりです。

リリース · KumaTea/pytorch-aarch64 (github.com)

個人が作成した whl パッケージですが、このパッケージの torch は cuda を使用できません。つまり、torch.cuda.is_available() が false を返します。

著者は解決策も提供しました: pytorch-aarch64/torch.sh at main KumaTea/pytorch-aarch64 (github.com)

自分用に独自のライブラリをコンパイルしてください。試したことはありません

2.1 miniforgeをインストールして仮想環境を作成する

ここでも仮想環境を使用する必要があります。ライブラリをインストールした後にファイルを保存することをお勧めします。

conda create -n 环境名 --clone 需要备份的环境名

今すぐ miniforge をインストールします。最新の miniforge-pypy3-linux-aarch64 をダウンロードするだけです。

リリース · conda-forge/miniforge · GitHub

ダウンロード後、インストールし、ダウンロードしたパスをターミナルに移動し、

sh Miniforge-pypy3-version-Linux-aarch64.sh
# version看文件名

すべて入力してください。デフォルトでは初期化されていません。手動で初期化しましょう: vim は独自の検索を使用しません

# 编辑环境变量
vim ~/.bashrc
# 增加环境变量, 将<username>换成你的用户名
export PATH=/home/<username>/miniforge-pypy3/bin:$PATH
# 激活环境变量
source ~/.bashrc
# 显示(base)
source activate  # 没有base显示(base)时使用

ベースは使わないようにしましょう:

conda config --set auto_activate_base false

このようにして、ベースなしでターミナルを開きます

次に、Python3.8の仮想環境を作成します。

conda create -n 环境名 python=3.8

後でこの仮想環境にインストールします。

ここで conda はソースを変更しないと少し遅いですが、変更してもしなくても大丈夫だと思います

#更换下载源

conda config --prepend channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --prepend channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes

2.2 トーチ、トーチビジョンの取り付け

仮想環境をアクティブ化する

source activate 
conda activate 环境名

前処理: 

# 先把能更新的都更新了
sudo apt-get update
sudo apt-get upgrade
# 装上我们需要的环境包
# 最好使用pip3,不然出错了不好排查
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev
pip3 install Cython

torch の whl ファイルをダウンロードし、そのパスを cd します。

pip3 install numpy torch-1.11.0-cp38-cp38m-linux_aarch64.whl

このようにトーチを設置し、設置後に確認してみました

python
>> import torch
>> torch.__version
>> torch.cuda.is_available()

 次に、torchvision をインストールします

$ sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev

$ git clone --branch <version> https://github.com/pytorch/vision torchvision   # <version>我这里是0.12.0

$ cd torchvision

$ export BUILD_VERSION=0.x.0      # where 0.x.0 is the torchvision version  我这里是0.12.0

$ python3 setup.py install --user

torchvision をインストールした後、インポートしてエラーがないか確認します

ここで、pillow をインストールするときに cuda パスが見つからないという問題があることに注意してください。

FileNotFoundError: [Errno 2] No such file or directory: 
‘:/usr/local/cuda:/usr/local/cuda’: 
‘:/usr/local/cuda:/usr/local/cuda-’

2 つの cuda が組み込まれているため、必要なのは次のことだけです。

# 命令行输入
export CUDA_HOME=/usr/local/cuda-11 #写11或者11.4,我选11.4

 再インストールするだけです

numpy のインストールがタイムアウトになりました。解決策は理解しましたが、csdn では投稿が許可されません。ただし、jetson に直接インストールしないでください。apt-get update には素晴らしい小さなバグが発生します。エラー:

E: The repository ‘https://repo.download.nvidia.com/jetson/common 20 r32.5 Release’ no longer has a Release file.
N: Updating from such a repository can’t be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
E: The repository ‘https://repo.download.nvidia.com/jetson/t210 11 r32.5 Release’ no longer has a Release file.
N: Updating from such a repository can’t be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

「私は一人でブログを投稿し、それを解決する方法を確認するためにそこに行きました。この悪いバグのせいで一日が台無しになりました。だから、それをあなたのコンピュータにインストールして、LANを使用してjetsonと共有してください」

すべてがうまくいけば、基本的にはそれだけです

2.3 opencvのインストール

ここのシステムには opencv と python3.8 が付属しています (これが、py3.8 で torch をインストールするのが最善であると述べた理由です。すべてが完了しています)

cuda アクセラレーションのない opencv が気に入らない場合は、インターネット上にチュートリアルがありますが、gstreamer を使用して csi カメラを呼び出すと問題が発生します。自分でインストールした opencv の仮想環境に gstreamer を導入するのはそれほど簡単ではありません ( USB カメラ、一度も試したことがない)

そこまで速度を追求しないのであれば、システムのopencvを仮想環境にコピーするだけで完了です。

sudo cp /usr/lib/python3.8/dist-packages/cv2/python-3.8/cv2.cpython-38-aarch64-linux-gnu.so ~/miniforge-pypy3/envs/Torch8/lib/python3.8/site-packages/
#自己根据虚拟环境位置调整指令

試すには忘れずに cv2 をインポートしてください

この opencv には gstreamer が付属しています。gstreamer の警告への対処方法については後ほど説明します。

試してみると、次のことがわかります。

ImportError: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined symbol: ffi_type_pointer, version LIBFFI_BASE_7.0

こんなエラーがあるんですね!

簡単な方法は次のとおりです: ただし、まだ pycharm は使用できません

export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libffi.so.7

最良の解決策を提供してくれた偉い人に感謝します: (63 メッセージ) libp11-kit.so.0: 未定義のシンボル: ffi_type_pointer...問題解決済み_Destinycjk のブログ - CSDN ブログでは、 Conda 仮想環境での解決策が提供されています。

#打开至conda虚拟环境下lib文件夹中
cd /home/用户名/miniforge-pypy3/envs/虚拟环境名/lib

次に、ls、libffi.so.7 というファイルが表示されます。

mv libffi.so.7 libffi_bak.so.7

名前を変更して保存し、新しい libffi.so.7 を作成するだけです。

sudo ln -s /usr/lib/aarch64-linux-gnu/libffi.so.7.1.0 libffi.so.7
sudo ldconfig

この方法であれば輸入には問題ありません。

2.4 tensorrt のインストール

Jetpack5.1 にはちょっとした魔法のバグがあります。つまり、/usr/lib/python3.8/dist-packages/ に trt が見つかりません。

それで、どうすればいいでしょうか? Nvidia も少し恥ずかしく思って投稿しました

AGX Xavier JetPack5.1のPythonでtensorrtを使う方法 - Jetson AGX Xavier - NVIDIA Developer Forums

sudo apt install python3-libnvinfer*

 このようにして、trt が表示されます。jetpack5.1.1 ではこの問題が変更されたようです。

2023.4 新しい tensorrt が後でリリースされた場合、trt8.5.2 が現在最新であるため、直接

sudo cp -r /usr/lib/python3.8/dist-packages/tensorrt* /home/用户名/miniforge-pypy3/envs/Torch8/lib/python3.8/site-packages/

もちろん、ソフトリンクする場合も同様です。

2.5 torch2trtのインストール

このシンプルな

git clone https://github.com/NVIDIA-AI-IOT/torch2trt
cd torch2trt
python setup.py install

できる

「パッケージングという名前のモジュールがありません」というメッセージが表示された場合

それで

pip3 install packaging

 それでおしまい

3 カメラ処理

Jetson は CSI カメラと USB カメラを使用できます。USB の使用をお勧めします。使いやすくて便利です。

3.1csiカメラ

sudo apt install v4l-utils 

v4l-utils をインストールしてから、

ls /dev/video* 

カメラを見つけます。csi と usb の両方を同時に接続する場合、通常、video0 は csi です。usb には次のように複数のビデオ ストリームがある場合があります。

 後の 2 つは実際には USB カメラです。

cap = cv2.VideoCapture(dev)

dev=1 の場合、次のコマンドを使用して csi を開くことができるかどうかを確認します。

nvgstcapture

gstreamer をインストールしますが、5.1 がインストールされているようです

sudo add-apt-repository universe
sudo add-apt-repository multiverse
sudo apt-get update
sudo apt-get install gstreamer1.0-tools gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev

次のコードをテストします 

import cv2

# 设置gstreamer管道参数
def gstreamer_pipeline(
    capture_width=1280, #摄像头预捕获的图像宽度
    capture_height=720, #摄像头预捕获的图像高度
    display_width=1280, #窗口显示的图像宽度
    display_height=720, #窗口显示的图像高度
    framerate=60,       #捕获帧率
    flip_method=0,      #是否旋转图像
):
    return (
        "nvarguscamerasrc ! "
        "video/x-raw(memory:NVMM), "
        "width=(int)%d, height=(int)%d, "
        "format=(string)NV12, framerate=(fraction)%d/1 ! "
        "nvvidconv flip-method=%d ! "
        "video/x-raw, width=(int)%d, height=(int)%d, format=(string)BGRx ! "
        "videoconvert ! "
        "video/x-raw, format=(string)BGR ! appsink"
        % (
            capture_width,
            capture_height,
            framerate,
            flip_method,
            display_width,
            display_height,
        )
    )

if __name__ == "__main__":
    capture_width = 1280
    capture_height = 720

    display_width = 1280
    display_height = 720

    framerate = 60			# 帧数
    flip_method = 0			# 方向

    # 创建管道
    print(gstreamer_pipeline(capture_width,capture_height,display_width,display_height,framerate,flip_method))

    #管道与视频流绑定
    cap = cv2.VideoCapture(gstreamer_pipeline(flip_method=0), cv2.CAP_GSTREAMER)

    if cap.isOpened():
        window_handle = cv2.namedWindow("CSI Camera", cv2.WINDOW_AUTOSIZE)

        # 逐帧显示
        while cv2.getWindowProperty("CSI Camera", 0) >= 0:
            ret_val, img = cap.read()
            CV2.imshow("CSI Camera", img)

            keyCode = cv2.waitKey(30) & 0xFF
            if keyCode == 27:# ESC键退出
                break

        cap.release()
        cv2.destroyAllWindows()
    else:
        print("打开摄像头失败") 

3.2 USBカメラ

通常のカメラとして使用するだけです。VideoCapture のパラメータは、先ほど確認したビデオ番号です。

gstreamer に関する多くの警告を見つけて驚かれるでしょう。この警告は、jetpack4.4dp から 5.1 までの私に付随していました。

GStreamer警告:无法查询视频位置: status=0,值=-1,时长=-1
[ warn:0] global /home/ubuntu/build_opencv/opencv/modules/videoio/src/cap_gstreamer.cpp (1390) setproperty opencv | gstreamer warning: #然后balabala

解決:

capture = VideoCapture(0, cv.CAP_V4L2)

十分

SD カードをバックアップする必要がある兄弟は、SD カード システム イメージ クローンを直接検索できます。これが崩壊すると、これまでの努力がすべて無駄になってしまいます。イメージ システム イメージをコンピュータに保存するのが最善です。

他にもいくつかバグがありますが、思いついたら順次更新していきます、印象に残っていないので対処しやすいと思います、何か質問等ありましたらご連絡ください

おすすめ

転載: blog.csdn.net/Yvon_L/article/details/130136080