Boa tarde
na continuação de uma série de artigos: o
primeiro e o
segundo sobre o uso de uma câmera olho de peixe com Raspberry Pi 3 e ROS, gostaria de falar sobre o uso de modelos pré-treinados de Deep Learning para visão computacional com uma câmera olho de peixe no Raspberry Pi 3. Quem se importa, por favor, com gatos.
Classificação da imagem
Como nos artigos anteriores, usaremos o Ubuntu 16.04. Para o trabalho, precisaremos da biblioteca Keras. Ele pode ser instalado no Ubuntu seguindo as instruções
aqui .
Iremos para a
página e pressionaremos o botão DOWNLOAD THE CODE! parte inferior da página. Você receberá um email com a fonte.
Baixe o arquivo, descompacte-o e vá para a pasta Primeiro, execute o script de classificação de objetos com base no modelo pré-treinado do GoogleNet:
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
Temos essa conclusão no 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

Ele usa o módulo Deep Neural Network (DNN) do OpenCV 3.3. Você pode ler sobre isso
aqui .
Agora, vamos tentar classificar objetos com o modelo Squeezenet pré-treinado:
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

Minha classificação funcionou por 0,86 s.
Vamos tentar agora na imagem 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
Conclusão:
[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

Detecção de Objetos
Agora tente detectar objetos com o Raspberry Pi com uma câmera olho de peixe. Iremos para a
página e pressionaremos o botão DOWNLOAD THE CODE! parte inferior da página. Você receberá um email com a fonte.
Semelhante à classificação, faça o download, descompacte, vá para a pasta Execute o script para detectar objetos:
python pi_object_detection.py --prototxt MobileNetSSD_deploy.prototxt.txt --model MobileNetSSD_deploy.caffemodel
Conclusão:
[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
Ao executar o script, podemos obter o seguinte erro:
Error: AttributeError: 'NoneType' object has no attribute 'shape' (comment to post)
Para resolver o problema, abra o arquivo pi_object_detection.py e comente a linha 74:
vs = VideoStream(src=0).start()
e descomente a linha 75
vs = VideoStream(usePiCamera=True).start()


Vemos que o script detecta alguns objetos, embora nem todos os objetos sejam reconhecidos corretamente. De acordo com minhas observações, o script detecta objetos rapidamente (infelizmente, o fps não pôde ser corrigido).
Também podemos executar o script real_time_object_detection.py. Em caso de erro, repita o procedimento para o script pi_object_detection.py: comente a linha 38 e descomente a linha 39. Resultado

Por enquanto é tudo. Boa sorte a todos e até breve!