Добрый день,

в продолжение серии статей: первая и вторая об использовании fish eye камеры с Raspberry Pi 3 и ROS я бы хотел рассказать об использовании предобученных Deep Learning моделей для компьютерного зрения с камерой Fish eye на Raspberry Pi 3. Кому интересно, прошу под кат.

Классификация изображений


Как и в прошлых статьях будем использовать Ubuntu 16.04. Для работы нам будет нужна библиотека Keras. Его можно установить на Ubuntu следуя руководству отсюда.

Перейдем на страницу и нажмем кнопку DOWNLOAD THE CODE! снизу страницы. Вы получите email с исходниками.

Скачаем архив, разархивируем его и перейдем в папку. Для начала запустим скрипт классификации объектов на основе предобученной модели 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

Получим такой вывод в терминале

[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

image

Здесь используется модуль Deep Neural Network (DNN) из OpenCV 3.3. О нем можно прочитать здесь.

Теперь попробуем классификацию объектов с предобученной моделью Squeezenet:

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

image

У меня классификация сработала за 0.86 sec.

Попробуем теперь на изображении 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

Вывод:

[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

image

Детекция объектов


Теперь попробуем детекцию объектов с Raspberry Pi с fish eye камерой. Перейдем на страницу и нажмем кнопку DOWNLOAD THE CODE! снизу страницы. Вы получите email с исходниками.

Аналогично классификации скачаем, разархивируем, перейдем в папку. Запустим скрипт детекции объектов:

python pi_object_detection.py --prototxt MobileNetSSD_deploy.prototxt.txt --model MobileNetSSD_deploy.caffemodel

Вывод:

[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


При запуске скрипта мы можем получить такую ошибку:

Error: AttributeError: ‘NoneType’ object has no attribute ‘shape’ (comment to post)

Чтобы решить проблему откроем файл pi_object_detection.py и закомментируем строку 74:

vs = VideoStream(src=0).start()

и раскомментируем строку 75


vs = VideoStream(usePiCamera=True).start()

image

image

Мы видим, что скрипт обнаруживает некоторые объекты, хотя не все объекты правильно распознает. По моим наблюдениям скрипт выполняет детекцию объектов довольно быстро (к сожалению, fps не удалось зафиксировать).

Также можем запустить скрипт real_time_object_detection.py. В случае ошибки повторим процедуру для скрипта pi_object_detection.py: закомментируем строку 38 и раскомментируем строку 39. Результат

image

На этом пока все. Всем удачи и до новых встреч!

Комментарии (0)