Skip to content

Navigation Menu

Sign in
Sign up

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

Releases

Packages

Used by

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /