Todo el proceso de construcción y ejecución del modelo pointNet++ desde cero y la resolución de problemas comunes

Cree y ejecute la versión Tensorflow del modelo pointNet++ desde cero y resuelva problemas comunes

本次采用的是Tensorflow版的pointNet++模型
服务器环境是Ubuntu18/python3.7/cuda10.0/cudnn7.4/tensorflow-gpu1.4/g++5

Referencia: Tutorial del modelo pointNet++ de reproducción basada en cero y código pointnet2 de pointnet++ que ejecuta el tutorial de nivel de niñera

1. Instalación e inicialización del sistema Ubuntu18

Referencia: instalación e inicialización del sistema Ubuntu18 (servicio SSH, configuración de red)
Si el sistema Ubuntu16 está instalado, puede ejecutar el siguiente comando para actualizar a Ubuntu18:

sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo apt autoremove
sudo do-release-upgrade

2. Descarga del código fuente y del conjunto de datos

1. código fuente pointNet++

Dirección de descarga: https://github.com/charlesq34/pointnet2
Copie el archivo pointnet2-master.zip descargado en el servidor y luego ejecuteunzip pointnet2-master.zip

2. Conjunto de datos ModelNet40 (XYZ y normal de malla, 10k puntos)

Dirección de descarga: modelnet40_normal_resampled.zip
Copie el archivo del conjunto de datos descargado en el directorio de datos del programa pointnet2-master y ejecute el unzip modelnet40_normal_resampled.zipcomando para descomprimir el conjunto de datos

3. Conjunto de datos ModelNet40 en formato h5 (XYZ y normal de malla, 2048 puntos)

Descargue la dirección modelnet40_ply_hdf5_2048.zip
Copie el archivo del conjunto de datos descargado en el directorio de datos en el programa pointnet2-master y ejecute unzip modelnet40_ply_hdf5_2048.zipel comando para descomprimir el conjunto de datos

3. El entorno necesario para construir pointNet++ (Anaconda, Cuda, cuDNN, Pytorch, Python)

Combinado con el hardware de su propia tarjeta gráfica, haga coincidir las versiones del controlador de la tarjeta gráfica, cuda, cudnn y tensorflow de acuerdo con la siguiente figura.
El entorno seleccionado esta vez es /cuda10.0/cudnn7.4/tensorflow-gpu1.4

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

1. Descarga e instalación del controlador de la tarjeta gráfica

Puede consultar: Varias formas de instalar el controlador de la tarjeta gráfica en una máquina física Ubuntu
(1) Ver el controlador adecuado para esta tarjeta gráfica:ubuntu-drivers devices
inserte la descripción de la imagen aquí

(2) Agregue la fuente del controlador: sudo add-apt-repository ppa:graphics-drivers/ppa
(3) Actualice la fuente del software: sudo apt-get update
(4) Instale el controlador de la tarjeta gráfica recomendado por el sistema: sudo apt-get install nvidia-driver-470
(5) Instale la herramienta nvidia-cuda-toolkit: sudo apt-get install nvidia-cuda-toolkit
(6) Pruebe si el controlador de la tarjeta gráfica se instala correctamente:nvidia-smi
inserte la descripción de la imagen aquí

2. Instalación y configuración de Anaconda y Cuda

La configuración de instalación de Anaconda y Cuda puede referirse a: Ubuntu construye el entorno Pytorch (Anaconda, Cuda, cuDNN, Pytorch, Python, Pycharm, Jupyter) , preste atención a la versión de Cuda, yo uso cuda10.0

3.cudnn instalación y configuración

Consulte el tutorial del modelo pointNet++ de reproducción de base cero

Si ocurre el siguiente error durante la instalación de cudnn: libcudnn7-doc_7.4.2.24-1+cuda10.0_amd64.deb no es un archivo de paquete en formato Debian

inserte la descripción de la imagen aquí
El motivo es que la fuente de instalación del tercer paquete está dañada, se recomienda instalar cudnn7.4 siguiendo los siguientes pasos:

(1) Primero cambie al directorio /usr/local y luego cree un directorio CuDNN

cd /usr/local
mkdir CuDNN
cd CuDNN

(2) Vaya a https://developer.nvidia.com/rdp/cudnn-archive para descargar los archivos necesarios
inserte la descripción de la imagen aquí
(3) Copie los archivos descargados en el directorio /usr/local/CuDNN/ y
inserte la descripción de la imagen aquí
ejecute el siguiente comando para instalar CUDNN7 .4.2, instalar aquí El orden debe ser el siguiente:

sudo dpkg -i libcudnn7_7.4.2.24-1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.4.2.24-1+cuda10.0_amd64.deb 
sudo dpkg -i libcudnn7-doc_7.4.2.24-1+cuda10.0_amd64.deb

(4) Copie el archivo en la carpeta /usr/local/cuda/include y modifique los permisos:

sudo cp /usr/include/cudnn.h /usr/local/cuda/include 
sudo chmod a+x /usr/local/cuda/include/cudnn.h

(5) Comando de prueba para verificar si la instalación es exitosa:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

inserte la descripción de la imagen aquí

4. Instalación y configuración del entorno python y la biblioteca dependiente de tensorflow

(1) Active el entorno virtual predeterminado (entorno base): source activate
(2) Cree un entorno virtual llamado torch basado en python3.7: conda create -n torch python=3.7
(3) Cambie al entorno virtual de torch creado: conda activate torch
(4) Instale la biblioteca python3-pip:sudo apt-get install python3-pip

Si se informa el siguiente error al instalar la biblioteca python3-pip: Los siguientes paquetes tienen dependencias no satisfechas

inserte la descripción de la imagen aquí
Puede usar la instalación de aptitude en lugar de apt-get, aptitude es más inteligente en el manejo de problemas de dependencia:

apt-get install aptitude
sudo aptitude install python3-pip

(5) Instale otras bibliotecas dependientes: pip install numpy scipy matplotlib pylint
(6) Instale tensorflow: pip install tensorflow-gpu==1.14.0
después de la instalación, realice python -c 'import tensorflow as tf; print(tf.__version__)'una prueba para ver si se puede usar la GPU y aparecerá la información de la versión de tensorflow.
inserte la descripción de la imagen aquí
Nota: es normal tener advertencias en este paso. Obsesivo -el trastorno compulsivo puede seguir las indicaciones para poner el archivo de respuesta entre paréntesis El "1" se cambia a "(1,)", que es causado por el problema de la clase python, que puede ignorarse

Si ocurre el siguiente error al probar tensorflow: TypeError: los descriptores no se pueden crear directamente.

inserte la descripción de la imagen aquí
Primero ingrese pip uninstall protobufpara desinstalar la versión existente
y luego ingrese para pip install protobuf==3.19.0reinstalar la versión correspondiente

5. Instalación y configuración de gcc5 y g++5

(1) Instale gcc5 y g++5: sudo apt install gcc-5 g++-5
(2) Verifique la información de la versión de gcc y g++:

gcc -v
g++ -v

Verifique la versión y descubra que gcc y g ++ aún apuntan a gcc7 y g ++ 7, por lo que debe modificar manualmente el enlace suave

(3) Ingrese al directorio /usr/bin y haga una copia de seguridad del enlace antiguo:

cd /usr/bin
sudo mv gcc gcc_backup
sudo mv g++ g++_backup

(4) Crear un nuevo enlace blando

sudo ln -s gcc-5 gcc
sudo ln -s g++-5 g++

(5) Verifique la información de la versión de gcc y g ++ nuevamente y encontrará que ya es 5

gcc -v
g++ -v

4. Ejecute pointNet++

1. Modificar el archivo de script de tf

(1) Ingrese al directorio /pointnet2-master/tf_ops/ y modifique los siguientes archivos

vi tf_ops/sampling/tf_sampling_compile.sh
vi tf_ops/grouping/tf_grouping_compile.sh
vi tf_ops/3d_interpolation/tf_interpolate_compile.sh

(2) Tomando tf_sampling_compile.sh como ejemplo, el contenido original es
inserte la descripción de la imagen aquí

(3) El contenido modificado es el siguiente:
1. Esta vez uso tensorflow 1.14, comento el contenido de TF1.2 y publico el comentario de TF1.4 2.
La versión gcc5 utilizada esta vez, si gcc la versión es mayor que 4, entonces la opción -D_GLIBCXX_USE_CXX11_ABI = 0 no es necesaria en el script de compilación, elimínelo
3. Verifique la ruta de cuda y tensorflow instalado por usted mismo

  • ruta cuda: reemplace /usr/local/cuda-${ VERSION } según la versión que instaló, la mía es /usr/local/cuda-10.0
  • La ruta de tensorflow: ejecute python -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())'el comando, la salida es la ruta de tensorflow, la mía es /opt/anaconda3/envs/torch/lib/python3.7/site-packages/tensorflow

Reemplace la ruta cuda y la ruta tensorflow en el script de la siguiente manera

contenido original Contenido reemplazado
/usr/local/cuda-8.0 /usr/local/cuda-10.0
/usr/local/lib/python2.7/dist-packages/tensorflow /opt/anaconda3/envs/torch/lib/python3.7/site-packages/tensorflow

(4) El contenido modificado es:
inserte la descripción de la imagen aquí

2. Compilar y generar un archivo

(1) Ejecute el siguiente comando para obtener el archivo libtensorflow_framework.so (modifique de acuerdo con su propio directorio de tensorflow)

cd /opt/anaconda3/envs/torch/lib/python3.7/site-packages/tensorflow/
cp libtensorflow_framework.so.1 libtensorflow_framework.so

Si no se realiza este paso, puede aparecer el siguiente error durante la compilación: /usr/bin/ld: no se puede encontrar -ltensorflow_framework collect2: error: ld devolvió 1 estado de salida

inserte la descripción de la imagen aquí

(2) Ejecute el siguiente comando para compilar y generar el archivo so (modifique según el directorio de su propio pointnet2-master)

cd /home/sdg/code/pointnet2-master/tf_ops/grouping/
chmod 777 tf_grouping_compile.sh
sh tf_grouping_compile.sh
cd /home/sdg/code/pointnet2-master/tf_ops/sampling/
chmod 777 tf_sampling_compile.sh
sh tf_sampling_compile.sh
cd /home/sdg/code/pointnet2-master/tf_ops/3d_interpolation/
chmod 777 tf_interpolate_compile.sh
sh tf_interpolate_compile.sh

Si no se ejecutan los comandos chmod y cd aparecerá el siguiente error: gcc: error: tf_sampling_g.cu: No such file or directory

inserte la descripción de la imagen aquí

(3) Una vez completada la compilación, se obtendrán los archivos .cu.o y .so correspondientes
inserte la descripción de la imagen aquí

3. Modificar el código fuente de pointNet++

Debido a la diferencia gramatical entre python2 y python3, debe reemplazar xrange en el código con range y agregar corchetes después de imprimir
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

4. Ejecute el modelo de entrenamiento

(1) Cambiar al entorno virtual correspondiente: conda activate torch
(2) Ejecutar el modelo de entrenamiento:python train.py

5. Solución de problemas comunes en funcionamiento

1.报错:{NotFoundError}libcudart.so.10.0: no se puede abrir el archivo de objeto compartido: no existe tal archivo o directorio

inserte la descripción de la imagen aquí
Motivo del error: hay un problema con las variables de entorno de anaconda y cuda
Solución: verifique los directorios de anaconda y cuda, y agregue las variables de entorno relevantes
inserte la descripción de la imagen aquí

2. Siguiente:{NotFoundError}/home/sdg/code/pointnet2-master/tf.ops/sampling/tf.sampling_so.s0:( símbolo indefinido: _ZM10temsorflow120pDefBuilder4AttrESs

inserte la descripción de la imagen aquí
Motivo del error: si la versión de gcc es mayor que 4, la opción -D_GLIBCXX_USE_CXX11_ABI = 0 no es necesaria en el script de compilación.
Solución: elimine -D_GLIBCXX_USE_CXX11_ABI = 0 en los 3 scripts de compilación anteriores

3. Siguiente: FileNotFoundError: [Errno 2] No existe tal archivo o directorio: '/home/sdg/code/pointnet2-master/data/modelnet40_normal_resampled/shape_names.txt'

inserte la descripción de la imagen aquí
Motivo del error: No se encontraron archivos relevantes
Solución: Cambie el nombre del archivo modelnet40_shape_names.txt en data/modelnet40_normal_resampled/ a shape_names.txt

4. Nota:{AttributeError}módulo 'proveedor' no tiene atributo 'rotate_point_cloud'

inserte la descripción de la imagen aquí
Causa del error: el nombre del archivo python es el mismo que el error causado por la biblioteca de terceros utilizada. Hay un archivo de proveedor.py en el código fuente, por lo que no es necesario instalar la biblioteca del proveedor.
Solución: desinstale la biblioteca del proveedor instalada (proveedor de desinstalación de pip), y la bandera roja del proveedor de importación no afectará la operación
inserte la descripción de la imagen aquí

5. Nota: no se pudieron asignar 64,00 M (67108864 bytes) del dispositivo: CUDA_ERROR_OUT_OF_MEMORY: memoria insuficiente

inserte la descripción de la imagen aquí
Motivo del error: memoria de tarjeta gráfica insuficiente
inserte la descripción de la imagen aquí

Solución: reemplace la tarjeta gráfica (memoria de video recomendada de 24G)

Supongo que te gusta

Origin blog.csdn.net/weixin_44330367/article/details/132042143
Recomendado
Clasificación