Skip to content

rydikov/argus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

339 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Argus

Details
Neural network: YOLOv11
CV Framework: OpenVINO 2026.2.1
Hardware: Минимум Intel CPU 6-го поколения, PC с Intel GPU.

Detected

Argus использует технологии компьютерного зрения для определение объектов. В качестве источников могут использоваться RTSP потоки с камер. Приложение сохраняет кадры с обнаруженными объектами и отправляет уведомления в Telegram и email.

Архитектура

Кадры с камер добавляются в двухсторонние очереди в отдельных потоках. В главном потоке кадры извлекаются из очередей и передаются на асинхронное распознавание. Всегда берется самый свежий кадр. Также проверяется – есть ли распознанный кадр. Если есть, то в зависимости от обраруженных на нем объектов он сохраняется или выбрасывается. Если были обнаружены important_objects, то происходит оповещение в Telegram и/или email. Оповещение происходит не чаще одного раза в 30 минут с каждого потока. Если в конфигурации указаны настройки MQTT, то происходит публикация события.

Дополнительно можно настроить сохранение кадров на диск каждые N секунд. Список распознаваемых объектов можно посмотреть в models

Запуск через Docker

Предполагается, что Docker уже устновлен на хостовой машине.

  1. Склонируйте проект и перейдите в него
git clone git@github.com:rydikov/argus.git
cd argus
  1. Запустите сборку
docker-compose build
  1. Запустите проект
docker-compose up

По умолчанию проект запускается на модели yolo9s, в качестве потока испльзуется демонстрационное видео в каталоге res.

Для использования собственного файла конфигурации нужно создать файл c названием env и добавить в него переменную: CONFIG_PATH с полным путем к файлу. Файл лучше разместить в дирректории data, т.к. она монтируется при запуске. Пример:

CONFIG_PATH = /app/data/development.override.yml

Также можно установить приложение сразу на хостовую машину.

Настройка

App section

Option Required Description
app + Основная секция

Sources secton

Option Required Description
sources + Источники кадров.
source-name + Название
source + Ссылка на поток, например, rtsp адрес камеры
stills_dir + Дирректория, куда будут сохраняться кадры
host_stills_uri Ссылка web. Если nginx раздает сохраненные изображения, то в телграмм отправляется она, если не указана, то отправляется сам кадр
important_objects Объекты, при обнаружении который будет оповещение в Telegram/email. По умолчани: person.
other_objects Объекты, которые будут распозноваться и помечаться на изображении
save_every_sec Сохранять изображения каждые N секунд, если 0, то будут сохраняться только изображения с important_objects
object_detected_prompt Подпись/prompt для кадра, отправляемого в Telegram при обнаружении important_objects. По умолчанию: Object detected.
photo_requested_prompt Подпись/prompt для кадра, отправляемого в Telegram по команде get_photos. По умолчанию: Photo requested.

Пример с двумя камерами и всеми опциями для секций:

sources:
  first-cam:
    source: rtsp://login:password@192.168.1.55:554/Streaming/Channels/101
    save_every_sec: 15
    stills_dir: /../../Stills/first
    object_detected_prompt: Object detected.
    photo_requested_prompt: Photo requested.
    important_objects:
      - person
  second-cam:
    source: rtsp://login:password@192.168.1.66:554/Streaming/Channels/101
    save_every_sec: 0
    stills_dir: ../../Stills/second
    host_stills_uri: http://localhost/Stills/second
    object_detected_prompt: "@volta_clawdbot Охранная система обнаружила объект на фото. Опиши, что там происходит и риск опасности"
    photo_requested_prompt: "@volta_clawdbot Опиши, что сейчас видно на фото"
    important_objects:
      - person
      - car
      - cow
    other_objects:
      - bicycle
      - motorcycle
      - bird
      - cat
      - dog
      - horse

Recognizer secton

Option Required Description
recognizer + Секция распознования
model Модель (по умолчнанию yolov9s, более точные 9m и 9c можно сказать на вкладыке Releases)
device_name + Устройсто распознования (CPU, GPU, MYRIAD)
num_requests + Количество потоков распонования. Оптимально 4 для каждого MYRIAD. Подбирается эмпирически

Example for recognizer secton with all options:

recognizer:
  model: yolo11n
  device_name: MYRIAD
  num_requests: 4

Telegram secton (опциональная)

Option Required Description
telegram_bot Telegram секция для опещения
token Токен
chat_id ID чата в который будет приходить оповещение
proxy URL прокси для Telegram, например socks5://user:pass@host:port

Пример Telegram-секции:

telegram_bot:
  token: 123456:ABCDEF
  chat_id: -1001234567890
  proxy: socks5://user:pass@proxy.example.com:1080

Email secton (опциональная)

Option Required Description
email Email секция для оповещения
smtp_host + SMTP хост
smtp_port + SMTP порт
username Пользователь для SMTP авторизации
password Пароль для SMTP авторизации
from_addr + Email отправителя
to_addrs + Список email получателей
use_tls Использовать STARTTLS. По умолчанию: true
use_ssl Использовать SMTP_SSL. Если true, STARTTLS не используется
subject Тема письма. По умолчанию: Argus object detected

Если у источника указан host_stills_uri, в письме отправляется ссылка на кадр. Если ссылка недоступна, кадр отправляется JPEG-вложением.

Пример Email-секции:

email:
  smtp_host: smtp.example.com
  smtp_port: 587
  username: user@example.com
  password: secret
  from_addr: argus@example.com
  to_addrs:
    - alerts@example.com
  use_tls: true
  use_ssl: false
  subject: "Argus object detected"

Mqtt secton (опциональная)

Option Required Description
mqtt Telegram секция для опещения
hostname Хост mqtt
port Порт mqtt

Credit

About

Real-time AI object detection based on Intel OpenVINO

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors