Buenas tardes
En la continuación de una serie de artículos: el
primero y el
segundo sobre el uso de una cámara de ojo de pez con Raspberry Pi 3 y ROS, me gustaría hablar sobre el uso de los modelos preaprendidos de aprendizaje profundo para la visión por computadora con la cámara de ojo de pez en el Raspberry Pi 3. A quién le importa, le pido un gato.
Clasificación de la imagen
Como en artículos anteriores, usaremos Ubuntu 16.04. Para el trabajo, necesitaremos la biblioteca Keras. Se puede instalar en Ubuntu siguiendo las instrucciones
de aquí .
¡Vaya a la
página y presione el botón DESCARGAR EL CÓDIGO! parte inferior de la página Recibirá un correo electrónico con la fuente.
Descarga el archivo, descomprímelo y ve a la carpeta. Primero, ejecute el script de clasificación de objetos basado en el modelo de GoogleNet previamente entrenado:
cd pi-deep-learning/ python pi_deep_learning.py --prototxt models/bvlc_googlenet.prototxt \ --model models/bvlc_googlenet.caffemodel --labels synset_words.txt \ --image images/barbershop.png
Llegamos a esta conclusión en la terminal
[INFO] loading model... [ INFO:0] Initialize OpenCL runtime... [INFO] classification took 1.7103 seconds [INFO] 1. label: barbershop, probability: 0.78055 [INFO] 2. label: barber chair, probability: 0.2194 [INFO] 3. label: rocking chair, probability: 3.4663e-05 [INFO] 4. label: restaurant, probability: 3.7257e-06 [INFO] 5. label: hair spray, probability: 1.4715e-06

Utiliza el módulo de red neuronal profunda (DNN) de OpenCV 3.3. Puedes leer sobre esto
aquí .
Ahora intentemos clasificar objetos con el modelo Squeezenet pre-entrenado:
python pi_deep_learning.py --prototxt models/squeezenet_v1.0.prototxt \ --model models/squeezenet_v1.0.caffemodel --labels synset_words.txt \ --image images/barbershop.png
[INFO] loading model... [ INFO:0] Initialize OpenCL runtime... [INFO] classification took 0.86275 seconds [INFO] 1. label: barbershop, probability: 0.80578 [INFO] 2. label: barber chair, probability: 0.15124 [INFO] 3. label: half track, probability: 0.0052873 [INFO] 4. label: restaurant, probability: 0.0040124 [INFO] 5. label: desktop computer, probability: 0.0033352

Mi clasificación funcionó durante 0,86 segundos.
Probemos ahora con la imagen cobra.png:
python pi_deep_learning.py --prototxt models/squeezenet_v1.0.prototxt \ --model models/squeezenet_v1.0.caffemodel --labels synset_words.txt \ --image images/cobra.png
Conclusión
[INFO] classification took 0.87402 seconds [INFO] 1. label: Indian cobra, probability: 0.47972 [INFO] 2. label: leatherback turtle, probability: 0.16858 [INFO] 3. label: water snake, probability: 0.10558 [INFO] 4. label: common iguana, probability: 0.059227 [INFO] 5. label: sea snake, probability: 0.046393

Detección de objetos
Ahora intenta detectar objetos con la Raspberry Pi con una cámara de ojo de pez. ¡Vamos a la
página y presionamos el botón DESCARGAR EL CÓDIGO! parte inferior de la página Recibirá un correo electrónico con la fuente.
Similar a la clasificación, descarga, descomprime, ve a la carpeta. Ejecute el script para detectar objetos:
python pi_object_detection.py --prototxt MobileNetSSD_deploy.prototxt.txt --model MobileNetSSD_deploy.caffemodel
Conclusión
[INFO] loading model... [INFO] starting process... [INFO] starting video stream... [ INFO:0] Initialize OpenCL runtime... libEGL warning: DRI3: failed to query the version libEGL warning: DRI2: failed to authenticate
Al ejecutar el script, podemos obtener el siguiente error:
Error: AttributeError: 'NoneType' object has no attribute 'shape' (comment to post)
Para resolver el problema, abra el archivo pi_object_detection.py y comente la línea 74:
vs = VideoStream(src=0).start()
y descomentar la línea 75
vs = VideoStream(usePiCamera=True).start()


Vemos que el script detecta algunos objetos, aunque no todos los objetos se reconocen correctamente. Según mis observaciones, el script detecta objetos bastante rápido (desafortunadamente, no se pudo corregir fps).
También podemos ejecutar el script real_time_object_detection.py. En caso de error, repita el procedimiento para el script pi_object_detection.py: comente la línea 38 y descomente la línea 39. Resultado

Eso es todo por ahora. ¡Buena suerte a todos y hasta pronto!