Фото машины бпан на рабочий стол: Бпан приора — картинки

Отслеживание объектов в реальном времени с помощью TensorFlow, Raspberry Pi и Pan-Tilt HAT

Обнаруживайте и отслеживайте объекты в режиме реального времени с помощью Raspberry Pi, Pan-Tilt HAT и TensorFlow. Идеально подходит для любителей, интересующихся компьютерным зрением и машинным обучением.

Портативное компьютерное зрение и отслеживание движения по бюджету.

На фото: Raspberry Pi 4GB, Pi Camera v2.1, Pimoroni Pan-Tilt HAT, Coral Edge TPU USB Accelerator

Часть 1 — Введение 👋

Вы только начинаете работать с машинным/глубоким обучением, TensorFlow или Raspberry Pi? Отлично, этот пост в блоге для вас! Я создал rpi-deep-pantilt в качестве интерактивной демонстрации обнаружения объектов в дикой природе. 🦁 ОБНОВЛЕНИЕ

(9 февраля 2020 г.)  —  Добавлено обнаружение и отслеживание лиц!

Я покажу вам, как воспроизвести приведенное ниже видео, на котором изображена камера, которая поворачивается и наклоняется, чтобы отслеживать мое перемещение по комнате.

Я всего лишь девушка, стоящая перед крошечным компьютером и напоминающая вам, что большинство вычислительных задач можно решить одной лишь силой воли. 💪

Модель MobileNetv3 + SSD @TensorFlow Я конвертировал #TFLite#RaspberryPi + шапку @pimoroni, ПИД-регулятор.

Скоро запись! ✨ https://t.co/v63KSJtJHO pic.twitter.com/dmyAlWCnWk

— Ли (@grepLeigh) 28 ноября 2019 г.

Я расскажу о следующем:

  1. Строительные материалы и инструкции по сборке оборудования.
  2. Разверните модель обнаружения объектов TensorFlow Lite (MobileNetV3-SSD) на Raspberry Pi.
  3. Отправка инструкций по отслеживанию серводвигателям панорамирования/наклона с помощью пропорционально-интегрально-дифференциального регулятора (ПИД) .
  4. Ускорьте выводы любой модели TensorFlow Lite с помощью Coral USB Edge TPU Accelerator и Edge TPU Compiler .

Условия и ссылки 📚

Raspberry Pi  — небольшой недорогой компьютер, популярный среди преподавателей, любителей аппаратного обеспечения и роботов. 🤖

Raspbian  —  официальная операционная система Raspberry Pi Foundation для Pi. Raspbian является производным от Debian Linux.

TensorFlow   —  платформа с открытым исходным кодом для программирования потоков данных, используемая для машинного обучения и глубокого нейронного обучения.

TensorFlow Lite  — платформа с открытым исходным кодом для развертывания моделей TensorFlow на мобильных и встроенных устройствах.

Сверточная нейронная сеть — тип архитектуры нейронной сети, который хорошо подходит для задач классификации изображений и обнаружения объектов.

Single Shot Detector (SSD)   — тип архитектуры сверточной нейронной сети (CNN), предназначенный для обнаружения, классификации и локализации объектов в режиме реального времени.

MobileNetV3  —  современная модель компьютерного зрения, оптимизированная для работы на скромных процессорах мобильных телефонов.

MobileNetV3-SSD  — однократный детектор на базе архитектуры MobileNet . В этом руководстве будут использоваться модели MobileNetV3-SSD , доступные в зоопарке моделей обнаружения объектов TensorFlow.

Searching for MobileNetV3

Edge TPU  — блок тензорной обработки (TPU) представляет собой интегральную схему для ускорения вычислений, выполняемых TensorFlow. Edge TPU был разработан с небольшими габаритами для мобильных и встраиваемых устройств «на периферии»


Part 2— Build List 🛠

Essential

  • Raspberry Pi 4 (4GB recommended)
  • Raspberry Pi Camera V2
  • Pimoroni Pan-tilt HAT Kit
  • Micro SD card 16+ GB
  • Micro HDMI Кабель

Дополнительно

  • Лента CSI/DSI 12 дюймов для камеры Raspberry Pi. 0138 Этот компонент добавляет в ваш проект постоянный источник света.
  • USB-ускоритель Coral Edge TPU
    Повышает скорость логического вывода (прогноза) на Raspberry Pi. Вам не нужно это, чтобы воспроизвести демонстрацию.

👋 Ищете проект с меньшим количеством движущихся частей s?Проверьте Portable Computer Vision: TensorFlow 2.0 на Raspberry Pi, чтобы создать ручное изображение классного. ✨


Часть 3 — Установка Raspberry Pi

Существует два способа установки Raspbian на карту Micro SD:

  1. NOOBS (новое готовое программное обеспечение) — это менеджер установки операционной системы с графическим интерфейсом. Если это ваш первый проект Raspberry Pi, я бы порекомендовал начать здесь.
  2. Запись образа Raspbian на SD-карту.

Это руководство и вспомогательное программное обеспечение были написаны с использованием R aspbian (Buster) . Если вы используете другую версию Raspbian или другую платформу, вы, вероятно, столкнетесь с некоторыми трудностями.

Прежде чем продолжить , вам необходимо:

  • Подключить Pi к Интернету (doc)
  • SSH к Raspberry Pi (doc)

 $ sudo apt-get update && sudo apt-get install -y python3-dev libjpeg-dev libatlas-base-dev raspi-gpio libhdf5-dev python3-smbus 

2. Создайте новый каталог проекта

 $ mkdir rpi -deep-pantilt && cd rpi-deep-pantilt 

3. Создать новую виртуальную среду

 $ python3 -m venv .venv 

4. Активировать виртуальную среду

 $ source .venv/bin/activate && python3 -m pip install --upgrade pip 

5. Установите TensorFlow 2.0 с колеса, созданного сообществом.

 $ pip install https://github.com/leigh-johnson/Tensorflow-bin/blob/master/tensorflow-2.0.0-cp37-cp37m-linux_armv7l.whl?raw=true 

6. Установите rpi -deep-pantilt Пакет Python

 $ python3 -m pip install rpi-deep-pantilt 

Часть 5 — Сборка аппаратного обеспечения поворотно-наклонного HAT

Если вы приобрели предварительно собранный комплект Pan-Tilt HAT , вы можете перейти к следующему разделу.

В противном случае перед продолжением выполните шаги, описанные в разделе Сборка поворотно-наклонного HAT.


Часть 6 — Подключение камеры Pi

  1. Выключение Raspberry Pi
  2. Найдите модуль камеры между модулем USB и модулями HDMI.
  3. Разблокируйте черный пластиковый зажим, (осторожно) потянув вверх
  4. Вставьте ленточный кабель модуля камеры (металлические разъемы обращены в сторону от портов Ethernet / USB на Raspberry Pi 4)
  5. Зафиксируйте черный пластиковый зажим

Изображение предоставлено: Начало работы с камерой Pi


Часть 7 — Включите Pi Camera

  1. Включите Raspberry Pi
  2. Запустите sudo raspi-config и выберите Interfacing Options в главном меню инструмента настройки программного обеспечения Raspberry Pi. Нажмите Ввод.

3. Выберите пункт меню «Включить камеру» и нажмите ENTER.

4. В следующем меню с помощью клавиши со стрелкой вправо выделите ENABLE и нажмите ENTER.


Часть 8 — Проверка HAT для панорамирования и наклона

Затем проверьте установку и настройку модуля HAT для панорамирования и наклона.

  1. Подключитесь к Raspberry Pi по SSH
  2. Активируйте виртуальную среду: source .venv/bin/activate
  3. Выполните следующую команду: rpi-deep-pantilt test pantilt
  4. Выйдите из теста, нажав Ctrl+C
  5. правильно установили HAT, вы должны увидеть, как оба сервопривода движутся плавно по синусоиде во время выполнения теста.


    Часть 9 — Проверка камеры Pi

    Затем убедитесь, что камера Pi установлена ​​правильно, запустив наложение предварительного просмотра камеры. Наложение будет отображаться на основном дисплее Pi (HDMI).

    1. Подключите Raspberry Pi к экрану HDMI
    2. SSH к Raspberry Pi
    3. Активируйте виртуальную среду: $ source .venv/bin/activate
    4. Выполните следующую команду: $ rpi-deep-pantilt test camera
    5. Выйти из теста с помощью Ctrl+C

    Если вы правильно установили камеру Pi, вы должны увидеть кадры с камеры, отображаемые на вашем HDMI или композитном дисплее.


    Часть 10. Проверка обнаружения объектов

    Затем убедитесь, что вы можете запустить модель обнаружения объектов ( MobileNetV3-SSD ) на Raspberry Pi.

    1. Подключитесь к Raspberry Pi по SSH
    2. Активируйте виртуальную среду: $ source .venv/bin/activate
    3. Выполните следующую команду:
     $ rpi-deep-pantiltDetect 

    Ваш Raspberry Pi должен обнаруживать объекты, пытаться классифицировать объект и рисовать вокруг него ограничивающую рамку.

     $ rpi-deep-pantilt face-detect 

    Примечание. С помощью модели MobileNetV3-SSD по умолчанию можно обнаруживать и отслеживать только следующие объекты.

     $ rpi-deep-pantilt list-labels
    ['человек', 'велосипед', 'автомобиль', 'мотоцикл', 'самолет', 'автобус', 'поезд', 'грузовик', 'лодка', 'светофор', 'пожарный гидрант', 'знак остановки ', 'паркомат', 'скамейка', 'птица', 'кошка', 'собака', 'лошадь', 'овца', 'корова', 'слон', 'медведь', 'зебра', 'жираф' , 'рюкзак', 'зонт', 'сумочка', 'галстук', 'чемодан', 'летающая тарелка', 'лыжи', 'сноуборд', 'спортивный мяч', 'воздушный змей', 'бейсбольная бита', 'бейсбольная перчатка ', 'скейтборд', 'доска для серфинга', 'теннисная ракетка', 'бутылка', 'бокал', 'чашка', 'вилка', 'нож', 'ложка', 'миска', 'банан', 'яблоко ', 'бутерброд', 'апельсин', 'брокколи', 'морковь', 'хот-дог', 'пицца', 'пончик', 'торт', 'стул', 'диван', 'растение в горшке', 'кровать ', 'обеденный стол', 'туалет', 'телевизор', 'ноутбук', 'мышь', 'пульт ДУ', 'клавиатура', 'сотовый телефон', 'микроволновая печь', 'духовка', 'тостер', 'раковина ', 'холодильник', 'книга', 'часы', 'ваза', 'ножницы', 'плюшевый мишка', 'фен', 'зубная щетка'] 

    Часть 11.

    Отслеживание объектов со скоростью ~8 кадров в секунду

    Это момент, которого мы все ждали! Выполните следующие шаги, чтобы отслеживать объект со скоростью примерно 8 кадров в секунду с помощью Pan-Tilt HAT.

    1. Подключитесь к Raspberry Pi по SSH
    2. Активируйте виртуальную среду: $source .venv/bin/activate
    3. Выполните следующую команду: $ rpi-deep-pantilt track

    По умолчанию будут отслеживаться объекты с меткой человек. Вы можете отслеживать другой тип объекта, используя параметр —label.

    Например, чтобы отследить банан, вы должны запустить:

    $ rpi-deep-pantilt track —label=banana

    На Raspberry Pi 4 (4 ГБ) я сравнил свою модель примерно с 8 кадрами. в секунду.

     ИНФОРМАЦИЯ: корень: FPS: 8.100870481091935
    ИНФОРМАЦИЯ: корень: FPS: 8.130448201926173
    ИНФОРМАЦИЯ: root: FPS: 7.6518234817241355
    ИНФОРМАЦИЯ: корень: FPS: 7.657477766009717
    ИНФОРМАЦИЯ: root: FPS: 7.861758172395542
    ИНФОРМАЦИЯ: root: FPS: 7. 8549541944597
    INFO:root:FPS: 7.9078576901 

    Часть 12. Отслеживание объектов в реальном времени с помощью Edge TPU

    Мы можем ускорить вывод модели до скорости с помощью Coral USB Accelerator. Ускоритель USB содержит Edge TPU, который представляет собой микросхему ASIC, специализированную для операций TensorFlow Lite. Для получения дополнительной информации ознакомьтесь с разделом Начало работы с USB Accelerator.

    1. SSH на Raspberry Pi
    2. Установите среду выполнения Edge TPU
     $ echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
    $ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-ключ добавить -
    $ sudo apt-get update && sudo apt-get install libedgetpu1-std 

    3. Подключите Edge TPU (предпочитаем порт USB 3.0 ). Если ваш Edge TPU уже был подключен, удалите и снова подключите его , чтобы диспетчер устройств udev мог его обнаружить.

    4. Попробуйте выполнить команду обнаружения с опцией —edge-tpu. Вы должны уметь обнаруживать объекты в режиме реального времени! 🎉

     $ rpi-deep-pantilt detect --edge-tpu --loglevel=INFO 

    Примечание: loglevel=INFO покажет вам FPS, при котором объекты обнаруживаются, а ограничивающие рамки отображаются в оверлее камеры Raspberry Pi. .

    Вы должны увидеть около ~ 24 кадров в секунду, что является скоростью, с которой кадры сэмплируются из камеры Pi в буфер кадров.

     ИНФОРМАЦИЯ: корень: FPS: 24.716493958392558
    ИНФОРМАЦИЯ: корень: FPS: 24.836166606505206
    ИНФОРМАЦИЯ: корень: FPS: 23.031063233367547
    ИНФОРМАЦИЯ: корень: FPS: 25.467177106703623
    ИНФОРМАЦИЯ: корень: FPS: 27.480438524486594
    INFO:root:FPS: 25.41399952505432 

    5. Попробуйте команду track с параметром —edge-tpu.

     $ rpi-deep-pantilt track --edge-tpu 

    Часть 13 — Обнаружение и отслеживание лиц (НОВОЕ в версии 1.1.x)

    Я добавил совершенно новую модель распознавания лиц в версию v1. 1.x rpi-deep-pantilt 🎉

    Модель получена из Facessd_mobilenet_v2_quantized_320x320_open_image_v4 модели исследования Tensor.Flow

    Новые команды: rpi-deep-pantilt face-detect (обнаружение всех лиц) и rpi-deep-pantilt face-track (отслеживание лиц с помощью Pantilt HAT). Обе команды поддерживают параметр —edge-tpu, который ускорит выводы при использовании USB-акселератора Edge TPU.

     rpi-deep-pantilt определение лица --help
    Использование: cli.py определение лица [ВАРИАНТЫ]
    Опции:
      --loglevel ТЕКСТ Запустить обнаружение объектов без элементов управления панорамированием и наклоном. Проходить
                       --loglevel=DEBUG для проверки FPS.
      --edge-tpu Ускорение выводов с помощью Coral USB Edge TPU
      --help Показать это сообщение и выйти. 

     rpi-deep-pantilt face-track --help
    Использование: cli.py face-track [ВАРИАНТЫ]
    Опции:
      --loglevel ТЕКСТ Запустить обнаружение объектов без элементов управления панорамированием и наклоном.  Проходить
                       --loglevel=DEBUG для проверки FPS.
      --edge-tpu Ускорение выводов с помощью Coral USB Edge TPU
      --help Показать это сообщение и выйти. 

    Подведение итогов 🌻

    Поздравляем! Теперь вы гордый обладатель самодельной системы отслеживания объектов, которая использует однократный детектор (разновидность сверточной нейронной сети ) для классификации и локализации объектов.

    ПИД-регулятор

    В системе слежения за поворотом/наклоном используется пропорционально-интегрально-дифференциальный (ПИД) контроллер для плавного отслеживания центра тяжести ограничивающей рамки.

    Архитектура ПИД-регулятора, Ли Джонсон, 2019 г.

    TensorFlow Model Zoo

    Модели в этом руководстве получены из ssd_mobilenet_v3_small_coco и ssd_mobilenet_edgetpu_coco в TensorFlow Detection Model Zoo 10. 🦁🦄🐼

    Мои модели доступны для загрузки через заметки о выпусках Github @leigh-johnson/rpi-deep-pantilt.

    Я добавил пользовательскую операцию TFLite_Detection_PostProcess , которая реализует вариант Non-maximum Suppression (NMS) на выходе модели. Немаксимальное подавление — это метод, который фильтрует множество предложений ограничивающих рамок, используя операции над наборами .

    Изображение предоставлено: Non-maximum Suppression (NMS)

    Особая благодарность и благодарность 🤗

    MobileNetEdgeTPU SSDLite Авторы: Юньян Сюн, Бо Чен, Суйог Гупта, Хансяо Лю, Габриэль Бендер, Минсин Тан, Беркин Акин, Чжичао Лу, Куок Ле.

    MobileNetV3 SSDLite Авторы: Бо Чен, Чжичао Лу, Вивек Ратод, Джонатан Хуанг.

    Особая благодарность Адриану Роузброку за написание Отслеживание панорамирования/наклона лица с помощью Raspberry Pi и OpenCV , , которое послужило источником вдохновения для всего этого проекта!

    Особая благодарность Джейсону Заману за рецензирование этой статьи и кандидатов на ранний выпуск. 💪

    Искусство панорамирования. Джейми Прайс

    Фотография — это запечатление момента во времени. Но иногда ваш объект движется быстрее, чем другие. Добро пожаловать в мой мир, где все движется с головокружительной скоростью.

    В гонках главное показать, что автомобиль или мотоцикл действительно движется. Общее эмпирическое правило заключается в том, что если вы видите боковину шины или марку шины на автомобиле, на фотографии должно быть какое-то движение. А это означает уменьшение скорости затвора камеры.

    Играть с выдержкой — все равно что в подвешенном состоянии. Иди так низко, как посмеешь. Иногда это работает, иногда нет. Но часто наш мир выглядит довольно странно, когда все замедляется. Свет, цвета и линии сливаются в одно интересное изображение.

    Вот несколько быстрых и простых советов для отличной панорамной фотографии!

    Выберите свое оборудование.

    Панорамирование можно выполнять в любое время и в любом месте. Единственное, что вам нужно, это цифровая зеркальная камера, которая позволяет вам контролировать выдержку. Какой объектив использовать? Небо это предел! Широкие линзы или длинные линзы. Неважно, чем вы снимаете. Все это может быть интересно.

    Получите баланс.

    Больше всего на резкость панорамного снимка влияет вы сами. У вас должно быть место, которое позволит вам следить за объектом по всему кадру, не теряя равновесия. Так что поставьте ноги на ширине плеч и выполняйте плавно. Так же, как качели в гольфе.

    Будьте изобретательны.

    Пока не попробуешь, никогда не знаешь, что получится. Начните с простых скоростей. 1/150. Затем уменьшите его до 1/100. Затем 1/50. Затем 1/30. Потом 1/20. Затем вы начинаете заходить на территорию, где ваш «рейт удержания» будет очень низким, но результаты могут быть захватывающими! Но суть в том, что не тратьте весь день на съемку с выдержкой 1/100. Сколько вам нужно фотографий одной и той же машины, проезжающей поворот с одинаковой скоростью? Но помните, чем медленнее вы двигаетесь, тем больше света попадает в камеру. Попробуйте надеть поляризатор или фильтр нейтральной плотности, чтобы вернуть часть света. Средь бела дня вы не сможете панорамировать ниже 1/50 без фильтра на объективе, который пропускает меньше света на матрицу.

    Просматривайте предметы.

    Иногда самые интересные панорамы можно сделать, просматривая объекты. Это означает, что между вами и вашим объектом находится роща деревьев, группа вееров, автомобили, цветы или здание. Просто воспользуйтесь теми же советами, что и выше, и сделайте это с чем-нибудь мешающим. Используя более медленную скорость затвора, вы можете быть поражены тем, что у вас получится.

    Практика. Упражняться. Упражняться.

    Для совершенствования панорамирования требуются годы. С первого раза не уложишься. Но вы можете узнать, как работает ваша камера, задолго до того, как попадете на гоночную трассу. Потренируйтесь дома на машинах, проезжающих снаружи. Все, что движется последовательно и быстро, поможет отточить ваши навыки.