Запуск скрипта OpenVINO Python при загрузке для Raspberry PI

Я использую Raspberry Pi 3 Model B Rev 1.2 под управлением Raspbian 10 (Buster). Я хочу запустить скрипт python при запуске, который использует OpenVINO и OpenCV для обнаружения объектов и отображения потока с веб-камеры.

Я создал сценарий оболочки launcher.sh который содержит

#!/bin/sh

/opt/inte/openvino/bin/setupvars.sh
/usr/bin/python3 /home/pi/project/run.py

Я побежал $ chmod 775 launcher.sh и подтвердил, что скрипт работает с $ sh launcher.sh.

Для запуска скрипта при запуске я использовал $ sudo crontab -e и добавил @reboot sh /home/pi/project/launcher.sh >/home/pi/logs/cronlog 2>&1 ко дну.

Сценарий запускается при перезагрузке. Журналы показывают, что среда OpenVINO инициализирована, но журналы также указывают на то, что я получаю ModuleNotFoundError: нет модуля с именем 'openvino'. Я предполагаю, что он работает только тогда, когда я запускаю его с терминала, потому что мой bash.rc каждый раз настраивает env OpenVINO.

Что я делаю неправильно? Есть ли лучший способ сделать это на Buster?

2 ответа

Решение

Благодаря Mauricio.R из Intel я смог найти подходящее решение.

  1. Создайте скрипт, который инициализирует OpenVINO и запускает мой скрипт python, используя nano ~/openvino-app-script с содержанием:
   #!/bin/bash
   source /opt/intel/openvino/bin/setupvars.sh     
   /usr/bin/python3 /path/to/script/run.py
  1. Измените разрешения и владельца сценария bash с помощью chmod u+x ~/openvino-app-script. Вы должны убедиться, что этот сценарий работает, запустив его сbash ./openvino-app-script

  2. Создайте служебный файл, используя sudo nano /etc/systemd/system/openvino-app.service с содержанием

    [Unit]
    Description=OpenVINO Python Script
    After=network.target

    [Service]
    Environment="DISPLAY=:0"
    Environment="XAUTHORITY=/home/pi/.Xauthority"
    ExecStart=/home/pi/openvino-app-script
    WorkingDirectory=/home/pi
    StandardOutput=inherit
    StandardError=inherit
    Restart=on-failure
    User=pi

    [Install]
    WantedBy=graphical.target
  1. Активируйте услугу с помощью sudo systemctl enable openvino-app.service

Вы можете проверить статус или отключить услугу, изменив enable к disable или status

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

Мне не удалось решить мою конкретную проблему, но мне удалось найти способ запустить мой скрипт при загрузке.

Я добавил следующие строки в конец моего.bashrc,

source /opt/intel/openvino/bin/setupvars.sh
cd /home/pi/project
python3 run.py 
cd 

чтобы инициализировать среду OpenVINO и запускать мой скрипт каждый раз, когда открывается новый терминал, а затем я запустил LXTerminal при загрузке, добавив @lxterminal до конца /etc/xdg/lxsession/LXDE-pi/autostart.

Это довольно хакерский способ сделать это и непрактично, если вы планируете использовать свой Pi для чего-то еще. Любой совет все равно будет оценен

Другие вопросы по тегам