Información y ayuda

HPC Universidad de Oriente

Herramientas de usuario

Herramientas del sitio


hpc-gpu-vc

VISIÓN POR COMPUTADORA CON GPU

OpenCV es una biblioteca de código abierto para Visión por Computadora, Aprendizaje Automático y Procesamiento de Imágenes. Puede procesar imágenes y videos para identificar objetos y rostros, trabajar con código de barras y código QR, entre otros. Admite una amplia variedad de lenguajes de programación como Python, C++, Java y otros.

La versión instalada de OpenCV es 4.5.5, compilada con CUDA 10.2 y cuDNN 7.6.5.

Se sugiere el trabajo con OpenCV en entornos virtuales de Python. Para ello se debe:

1. Crear un entorno virtual con Anaconda, por ejemplo, cv_gpu

conda create -n cv_gpu Python=3.7 anaconda

Nota: Consultar los cuatro primeros pasos de creación de entornos virtuales de Python para la instalación de Anaconda3.

2. Activar el entorno virtual

source ~/.bashrc
conda activate cv_gpu

3. Con el entorno virtual activado, hacer un enlace simbólico.

ln -s /opt/apps/manually/cv_GPU/lib/python3.7/site-packages/cv2/python-3.7/cv2.cpython-37m-x86_64-linux-gnu.so ~/anaconda3/envs/cv_gpu/lib/python3.7/site-packages/cv2.so

4. Verificar el funcionamiento de OpenCV

Escriba el código version.py:

import cv2
import re
print ("Version de cv2 =",  cv2.__version__)
cv_info = [re.sub('\s+', ' ', ci.strip()) 
for ci in cv2.getBuildInformation().strip().split('\n') 
    if len(ci) > 0 and re.search(r'(nvidia*:?)|(cuda*:)|(cudnn*:)', ci.lower()) is not None]
        print(cv_info)

Y envíelo a ejecutar con el script version.sl, utilizando el comando sbatch version.sl.

version.sl

#!/bin/bash
#SBATCH --partition=gpu
#SBATCH --job-name=cv_version
SBATCH --gres=gpu:m10:1
#SBATCH -o slurm.%N.%j.out #STDOUT 
#SBATCH -e slurm.%N.%j.err #STDERR

# Activar el entorno cv_gpu
source ~/.bashrc
conda activate cv_gpu

# Cambiar al directorio de envío
cd $SLURM_SUBMIT_DIR

# Ejecutar el  programa
python version.py > cv2.txt

5. Enviar un trabajo

Por ejemplo, escriba el código rotate_image.py:

# Rotar 12 grados la imagen usando OpenCV y GPU

import cv2
import cv2.cuda as cuda
image = cv2.imread("myimage.png")

# Storing the image on GPU
src = cv2.cuda_GpuMat()
src.upload(image)

# Applying the rotation
a = cv2.cuda.rotate(src=src, dsize = (414,500), angle = 12, xShift= 0, yShift=0, interpolation=cv2.INTER_NEAREST)

# Downloading the image from GPU and visualizing the image
result = a.download()
cv2.imwrite('myimage_rotated.jpg',result)

con myimage.png en el directorio de envío y ejecute el script rotate_image.sl con el comando sbatch rotate_image.sl.

rotate_image.sl

#!/bin/bash
#SBATCH --partition=gpu
#SBATCH --job-name=rotate
SBATCH --gres=gpu:m10:1
#SBATCH -o slurm.%N.%j.out #STDOUT
#SBATCH -e slurm.%N.%j.err #STDERR

# Cargar módulo
module load opencv/4.5.4

# Activar el entorno cv_gpu
source ~/.bashrc
conda activate cv_gpu

# Cambiar al directorio de envío
cd $SLURM_SUBMIT_DIR

# Ejecutar el  programa
python rotate_image.py
hpc-gpu-vc.txt · Última modificación: 2023/03/14 19:38 por Beatriz Valdés Díaz