Jetson tiene los registros de instalación de jetpack5.1 más completos, solo siga (incluido el manejo de errores de error)

Tabla de contenido

escrito en frente

fondo

1 preconfiguración del sistema

1.1 Quema

1.2 Configurar variables de entorno

1.3 usar vnc

Cambio e instalación de fuente de 1.4 pip

Instalación de pycharm 1.5

2 entorno de construcción pytorch

2.1 Instalar miniforge para crear un entorno virtual

2.2 linterna, instalación torchvision

2.3 Instalación de opencv

2.4 Instalar tensorrt

2.5 Instalar torch2trt

3 Procesamiento de cámara

cámara 3.1csi

cámara usb 3.2


escrito en frente

Jetpack5.1 usa cuda11 y cuda11.4 (el sistema tiene dos incorporados), tensorRT8.5.2, opencv4.5.4 incorporado. Aunque hay algunos errores, en general es una buena versión. A partir del 23 de abril, tensorrt8. 5 sigue siendo la última versión estable, los amigos que quieran usar trt para acelerar no deben perdérsela.

Este artículo comenzará desde cero, desde la grabación hasta la configuración del entorno, e incluirá la instalación de torch, torchvision, tensorRT, torch2trt, opencv-python. 

fondo

Realice la detección y el reconocimiento de rostros basados ​​​​en antorchas en jetson xavier nx y llame a trt para un razonamiento acelerado, use la cámara csi2 y varias tarjetas SD (también recomiendo que haga una copia de seguridad del entorno en una nueva tarjeta SD)

1 preconfiguración del sistema

1.1 Quema

JetPack SDK 5.1 | Desarrolladores de NVIDIA , vayan a este enlace para descargar la imagen de la tarjeta SD según el modelo jetson

Prepare la tarjeta SD, si el sistema ya ha borrado la tarjeta SD, por favor:

Haga clic derecho en esta computadora -> Administrar -> Administración de discos La parte inferior es la tarjeta SD, haga clic derecho para eliminar la partición más grande, luego haga clic derecho para crear un nuevo volumen, asigne una letra de unidad y puede encontrarlo en el ordenador

Formateador de tarjetas de memoria SD para Windows/Mac | SD Association (sdcard.org) descargue sdformatter desde este enlace, ábralo, seleccione la tarjeta SD y formatéela;

Win32 Disk Imager - Descargar [Sitio oficial] Instale win32diskimager, seleccione el archivo de imagen descargado previamente para escribir

 Inserte la tarjeta SD escrita en el jetson, enciéndalo y complete la configuración inicial

1.2 Configurar variables de entorno

#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

Tenga en cuenta que hay cuda11 y 11.4 en la imagen 5.1, puede

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

No recomiendo cambiar la fuente aquí. La fuente doméstica puede tener un pequeño problema con el soporte de la nueva versión. Si siente que la ejecución es lenta o hay un tiempo de espera, corra a la fuente usted mismo.

El jtops que estaba disponible en las versiones anteriores no parece funcionar en esta versión, no puedo ejecutar el siguiente código, pero no importa si no existe, solo verifique la versión de lo que desea verificar por separado.

sudo -H pip install -U jetson-stats

1.3 usar vnc

Es mucho más conveniente operar con una computadora, y también puede copiar y pegar directamente desde la computadora, por lo que aquí usamos ssh para establecer una conexión. Primero conecte la computadora y jetson con un cable de red, e ingrese arp -a en cmd para encontrar la IP de Jetson (generalmente formato 192.168.137. xxx, pero no la dirección f completa estática 192.168.137.255)

Administrador de dispositivos->Centro de redes y recursos compartidos->Cambiar opciones de adaptador->wlan Haga clic con el botón derecho en Propiedades->

Permite compartir el puerto al que accede tu cable de red Jetson, aquí estoy Ethernet 2

instalar visor vnc

El software vnc vino-server se ha instalado en la imagen oficial de jetson, si no, instálelo usted mismo, el comando de instalación es el siguiente:

sudo apt-get install vino-server

Si no tiene un monitor, debe usar PuTTY para conectarse a la dirección IP mencionada anteriormente, pero sugiero que debe tener un monitor, por lo que no hablaré sobre cómo operar sin un monitor.

Configurar vinoserver para que se inicie automáticamente al arrancar

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

hacer algunos ajustes 

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

Luego establezca una contraseña, le sugiero que no se requiera contraseña, si necesita:

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

luego reiniciar

sudo reboot

Activar inicio de sesión automático 

sudo gedit /etc/gdm3/custom.conf

Comente estas dos líneas de código, pero el valor predeterminado debe comentarse 

#  AutomaticLoginEnable = true
#  AutomaticLogin = user1

Luego ajuste la resolución, de lo contrario, solo será 800 * 600 (resolución baja y retraso bajo, depende de sus necesidades)

abrir un archivo 

sudo gedit /etc/X11/xorg.conf

 Ingrese esto, pero 5.1 ya debería ser de alta resolución por defecto

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

Luego regrese a Windows e instale vncviewer.Descargue VNC Viewer | VNC® Connect (realvnc.com)

Abrir, archivo->nueva conexión en la esquina superior izquierda

 Ingrese la IP Jetson anterior para conectarse.

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡!

O algo como ese gato que cambia entre negro y amarillo!!!!!!!!!!!!!!!!!!!

Si desea usarlo, espere a que vnc establezca una conexión antes de abrirlo

La conexión por cable de Jetson se romperá y no puedo decir cómo resolverlo (reinstalé el vnc de Jetson y reinicié la red de la computadora), arp -a ip de Jetson directamente perdida.

Si necesita transferir archivos, puede instalar otro mobaxterm, el uso es el mismo,

 Haga clic en la flecha hacia arriba en la parte superior izquierda para cargar el archivo

Cambio e instalación de fuente de 1.4 pip

5.1 no parece tener pip, si no usa un entorno virtual, instale un pip localmente

sudo python3 get-pip.py 

También instalar embalaje

pip3 install packaging

Pip puede cambiar la fuente más rápido

sudo mkdir .pip
cd .pip

Cree un archivo pip.config e ingrese

sudo touch pip.conf
sudo gedit pip.conf

  Solo escribe el siguiente contenido

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

Instalación de pycharm 1.5

Descargar PyCharm: Python IDE para desarrolladores profesionales de JetBrains

Descarga el paquete comprimido para aarch64

Pycharm depende de Java y se divide en openjdk-8-jdk o openjdk-11-jdk según la versión de pycharm que haya instalado

Instalé una nueva versión aquí, así que necesito openjdk-11-jdk

Aunque está un poco atascado, pero compre nuevo en lugar de viejo, ¿verdad? 

apt-cache search openjdk

sudo apt-get install openjdk-11-jdk

A continuación, configure las variables de entorno, las instrucciones son las siguientes:

sudo gedit ~/.bashrc

Luego escriba el siguiente código en la parte inferior del archivo de configuración:

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

En este punto, la configuración de open-jdk está completa, luego descomprima pycharm, ya sea a través del comando o la herramienta de descompresión de la interfaz gráfica, y luego ubique la carpeta descomprimida en la terminal, busque la carpeta bin en la carpeta pycharm, y cd a la carpeta bin, ejecute en la carpeta bin:

$ sh ./pycharm.sh

Después de la ejecución, ubuntu20.04 utilizado por jetpack5.1 no admite el bloqueo con un clic de pycharm en el menú, por lo que debe abrir pycharm y hacer clic en la configuración en la esquina inferior izquierda

 Simplemente haga clic en crear entrada de escritorio para crear un acceso directo

2 entorno de construcción pytorch

Ha habido muchos episodios en la instalación de pytorch, aquí hay un resumen

Primero, instale la antorcha bajo este enlace

PyTorch para Jetson - Jetson y sistemas integrados / Jetson Nano - Foros de desarrolladores de NVIDIA

De acuerdo con este enlace, podemos usar torch1.11 y 1.12.Si necesita una versión superior, se proporciona el contenedor oficial de torch2.0.0:

NVIDIA L4T PyTorch | NVIDIA NGC

Después de instalar torch1.12, encontré el problema de discrepancia de torchvision0.13.0 (sí, vino de nuevo, y la versión dada por github era incorrecta nuevamente):

torchvision 0.13.0 requires requests, which is not installed.

Pero no hay problema al juntar torch1.11 y torchvision0.12.0. Se recomienda usar este

Si necesita instalar una versión inferior de pytorch en jetson, entonces necesita instalar python3.6 y enfrentar un error de este tipo:

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

Alguien en Internet trató de resolverlo, pero fui al sitio web de la biblioteca para encontrar este archivo y no pude encontrarlo. Debería ser un problema con python3.6

Así que usa torch1.11 y torchvision0.12.0

Si desea seguir su propio camino y desea especificar la antorcha y Python, aquí están

Lanzamientos · KumaTea/pytorch-aarch64 (github.com)

El paquete whl creado por el individuo, pero la antorcha de este paquete no puede usar cuda, es decir, torch.cuda.is_available() devuelve false

El autor también dio una solución: pytorch-aarch64/torch.sh en main KumaTea/pytorch-aarch64 (github.com)

Compile su propia biblioteca por sí mismo, no lo he intentado

2.1 Instalar miniforge para crear un entorno virtual

Aquí todavía necesitamos usar un entorno virtual, es mejor guardar un archivo después de instalar una biblioteca

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

Instale miniforge ahora: simplemente descargue la última miniforge-pypy3-linux-aarch64

Lanzamientos · conda-forge/miniforge · GitHub

Después de descargarlo, instálelo, cd la ruta que descargó en la terminal,

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

Ingrese todo, no está inicializado por defecto, inicialicemos manualmente: vim no usará su propia búsqueda

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

No usemos base:

conda config --set auto_activate_base false

De esta forma abres el terminal sin base

Luego crea un entorno virtual python3.8

conda create -n 环境名 python=3.8

Lo instalaremos en este entorno virtual más adelante.

Aquí conda es un poco lento si no cambias la fuente, creo que está bien cambiarlo o no

#更换下载源

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 linterna, instalación torchvision

Activar el entorno virtual

source activate 
conda activate 环境名

Preprocesamiento: 

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

Descargue el archivo whl de la antorcha, cd su ruta

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

De esta manera, instalamos la antorcha y la revisamos después de la instalación.

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

 Luego instalamos 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

Después de instalar torchvision, impórtalo para ver si hay algún error.

Recuerde que aquí hay un problema que al instalar la almohada, no puede encontrar su ruta de cuda:

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

Como tiene dos cuda incorporados, solo necesita:

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

 simplemente reinstalar

Se agotó el tiempo para instalar numpy, entiendo la solución y csdn no permitirá que se publique. Pero no lo instale directamente en jetson, apt-get update tendrá un pequeño error maravilloso. Error:

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.

Publiqué un blog solo y fui allí para ver cómo resolverlo. Este error malo arruinó todo mi día. Así que instálelo en su computadora y compártalo con jetson usando LAN

Si todo va bien, eso es básicamente todo.

2.3 Instalación de opencv

El sistema aquí viene con opencv y python3.8 (es por eso que dije que es mejor instalar la antorcha con py3.8, todo está completo)

Si no le gusta opencv sin la aceleración cuda, hay tutoriales en Internet, pero usar gstreamer para llamar a la cámara csi causará problemas. No es tan fácil obtener gstreamer en el entorno virtual bajo el opencv que instaló usted mismo (puede probar el cámara usb, no tengo un intento)

Si no tiene una búsqueda tan alta de velocidad, simplemente copie el opencv del sistema al entorno virtual y listo.

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/
#自己根据虚拟环境位置调整指令

Recuerda importar cv2 para probar

Este opencv viene con gstreamer, hablaré sobre cómo lidiar con la advertencia de gstreamer más adelante

Pruébalo y encontrarás:

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

¡Hay tal error!

La forma simple es: pero aún no puedes usar pycharm

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

Gracias al tipo grande por dar la mejor solución: (63 mensajes) libp11-kit.so.0: símbolo indefinido: ffi_type_pointer...Problem Solved_Destinycjk's blog-CSDN blog da una solución en el entorno virtual de Conda:

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

Entonces ls, puedes ver un archivo llamado libffi.so.7

mv libffi.so.7 libffi_bak.so.7

Simplemente cambie el nombre y guárdelo, y luego cree un nuevo libffi.so.7

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

De esta manera, no habrá ningún problema con la importación.

2.4 Instalar tensorrt

Jetpack5.1 tiene un pequeño error mágico, es decir... no puede encontrar trt en /usr/lib/python3.8/dist-packages/

Entonces, ¿qué debo hacer? Nvidia también se sintió un poco avergonzada y dio una publicación

Cómo usar tensorrt en python de AGX Xavier JetPack5.1 - Jetson AGX Xavier - NVIDIA Developer Forums

sudo apt install python3-libnvinfer*

 De esta forma aparecerá tu trt jetpack5.1.1 parece haber cambiado este problema

2023.4 Si se lanza un nuevo tensorrt más tarde, trt8.5.2 es actualmente el último, por lo que puede directamente

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

Por supuesto, es lo mismo cuando haces un enlace suave.

2.5 Instalar torch2trt

así de sencillo

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

poder

Si no encuentra ningún módulo con nombre de embalaje

Entonces

pip3 install packaging

 eso es todo

3 Procesamiento de cámara

jetson puede usar cámara csi y cámara usb, se recomienda usar usb, es fácil y conveniente de usar

cámara 3.1csi

sudo apt install v4l-utils 

Instale v4l-utils, luego

ls /dev/video* 

Encuentra la cámara. Si conectas csi y usb al mismo tiempo, generalmente video0 es csi. usb puede tener múltiples transmisiones de video, como esta:

 Los dos últimos son en realidad una cámara USB.

cap = cv2.VideoCapture(dev)

Cuando dev = 1, use el siguiente comando para ver si se puede abrir csi

nvgstcapture

Instale gstreamer, pero parece que 5.1 está instalado

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

Prueba el siguiente código 

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("打开摄像头失败") 

cámara usb 3.2

Solo úselo como una cámara normal, el parámetro de VideoCapture es el número de video que verificó anteriormente

Te sorprenderá encontrar muchas advertencias de gstreamer, esta advertencia me acompañó desde jetpack4.4dp hasta 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

Solución:

capture = VideoCapture(0, cv.CAP_V4L2)

Suficiente

Los hermanos que necesiten hacer una copia de seguridad de la tarjeta SD pueden buscar directamente el clon de la imagen del sistema de la tarjeta SD. Si esto falla, será fácil desperdiciar todos los esfuerzos anteriores. Lo mejor es guardar una imagen del sistema img en la computadora.

Hay algunos otros errores. Si lo pienso, lo actualizaré uno tras otro. Debería ser fácil de manejar, porque no tengo ninguna impresión. Si tiene alguna pregunta, comuníquese conmigo.

Supongo que te gusta

Origin blog.csdn.net/Yvon_L/article/details/130136080
Recomendado
Clasificación