Creé un programa de Python para la detección de objetos y OCR, utilizando torchvision y tesseract, respectivamente (modelos preentrenados perfeccionados). Ahora, cuando lo ejecuto en mi computadora portátil (con i7 7700), toma alrededor de 4-5 segundos procesar una sola imagen, y estoy satisfecho con eso.
Lo que me gustaría hacer es ejecutar el programa en mi Raspberry PI 4 (con 4 GB de RAM y ejecutando Raspbian de 64 bits). Después de probar algunas versiones de bibliotecas, logré ejecutarlo con algunas de ellas configuradas en versiones más antiguas (torch~=1.8.0, torchvision~=0.9.0, opencv-python~=4.5.3.56, numpy~ =1.21.1, matplotlib~=3.4.2, Pillow~=8.3.1, pytesseract~=0.3.8) . Ahora, ese mismo programa se ejecuta en el PI en aproximadamente 60 s por imagen, y lo que más me desconcierta es el mensaje repetido de spam OpenBLAS Warning : Detect OpenMP Loop and this application may hang. Please rebuild the library with USE_OPENMP=1 option. . Ahora, esto fue confuso para mí, porque nunca antes había necesitado construir nada desde la fuente, pero después de buscar en Google, descubrí que OpenCV puede ser el problema, específicamente la biblioteca OpenBLAS que usa. Entonces, con el objetivo de construir la biblioteca OpenBLAS con USE_OPENMP=1, descargué el repositorio de OpenBLAS y seguí la guía que se proporciona aquí .
La cuestión es que ahora esta biblioteca está construida e instalada, supongo, y hay una nueva carpeta /opt/OpenBLAS presente en mi sistema con las subcarpetas bin , include y lib . Sin embargo, cada vez que ejecuto mi secuencia de comandos de python, aún toma alrededor de 60 segundos y envía spam al mismo mensaje, así que supongo que esto no lo ha solucionado del todo. Entonces, ¿cómo hago para que opencv-python use este OpenBLAS recién compilado? ¿Tengo que compilarlo yo mismo, y si es así, cómo? No he logrado encontrar en ninguna parte de sus guías cómo construirlo con OpemBLAS "personalizado". Por último, si OpenCV no es el problema, ¿de dónde más podría provenir la advertencia de OpenBLAS?
Gracias por tu tiempo :D
Solo una pequeña actualización, intenté ejecutar export OMP_NUM_THREADS=1 , y la advertencia desapareció, y el programa se ejecuta en 45-50 s para 1 imagen. Pero eso todavía no es lo suficientemente rápido, así que intenté configurar export OMP_NUM_THREADS=2 , pero eso empeora el rendimiento y vuelve la advertencia.