Skip to content

RedisGrafana/redis-camera-ai

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Analyzing camera feed using RedisAI, OpenCV and Grafana

Redis-Camera-AI

Grafana 8 Redis Data Source Redis Application plug-in Docker

Introduction

This project demonstrates how to analyze camera feed stored as Redis Streams using serverless engine RedisGears, RedisAI and display analyzed frames with metrics in Grafana.

Redis-Camera-AI

Demo

Demo is available on demo.volkovlabs.io:

Requirements

Redis with OpenCV Docker image

This project provides Docker image with Redis, RedisTimeSeries, RedisGears, RedisAI and installed OpenCV for Python library.

docker run -p 6379:6379 --name=redis-opencv ghcr.io/redisgrafana/redis-opencv:latest

OpenCV requirements

Check that OpenCV with dependencies downloaded, installed and registered in the RedisGears requirements:

cluster.remote:6379> rg.pydumpreqs 1) 1) "GearReqVersion" 2) (integer) 1 3) "Name" 4) "Pillow" 5) "IsDownloaded" 6) "yes" 7) "IsInstalled" 8) "yes" 9) "CompiledOs" 10) "linux-buster-x64" 11) "Wheels" 12) 1) "Pillow-8.2.0-cp37-cp37m-manylinux1_x86_64.whl" 2) 1) "GearReqVersion" 2) (integer) 1 3) "Name" 4) "opencv-python" 5) "IsDownloaded" 6) "yes" 7) "IsInstalled" 8) "yes" 9) "CompiledOs" 10) "linux-buster-x64" 11) "Wheels" 12) 1) "numpy-1.20.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl" 2) "opencv_python-4.5.2.52-cp37-cp37m-manylinux2014_x86_64.whl" 3) 1) "GearReqVersion" 2) (integer) 1 3) "Name" 4) "numpy" 5) "IsDownloaded" 6) "yes" 7) "IsInstalled" 8) "yes" 9) "CompiledOs" 10) "linux-buster-x64" 11) "Wheels" 12) 1) "numpy-1.20.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl"

Import AI model and script

To load AI model and PyTorch script to the Redis database run:

cd ai/ cat tiny-yolo-voc.pb | redis-cli -h redis -x AI.MODELSTORE yolo:model TF CPU INPUTS 1 input OUTPUTS 1 output BLOB cat ai-yolo-script.py| redis-cli -h redis -x AI.SCRIPTSET yolo:script CPU SOURCE

Start Grafana

Grafana can be started using Docker Compose or installed locally with Redis plug-ins for Grafana and Volkov Labs Image panel.

docker-compose pull docker-compose up

When starting using Docker Compose, dashboard and plug-ins will be auto-provisioned and available in Grafana.

Register RedisGears script

Select Camera Processing dashboard and copy-paste gears-yolo.py script to RedisGears Script editor panel.

RedisGears Script Editor

Click on the Run script button and you should see registered script StreamReader in the Registrations panel.

Camera AI

Start Camera

Copy script edge-camera.py and requirements.txt to IoT or any device with camera. Run script by specifying Redis URL, number of frames per second and rotate camera if required.

cd camera/ pip3 install -r requirements.txt python3 edge-camera.py -u redis://redis:6379 --fps 6 --rotate-90-clockwise true

You should see output with Stream's Id and size of the jpeg file.

# python3 camera.py -u redis://red:6379 --fps 6 --rotate-90-clockwise true Connected to Redis: ParseResult(scheme='redis', netloc='redis:6379', path='', params='', query='', fragment='') id: b'1622145939609-0', size: 5479 id: b'1622145939769-0', size: 10006 id: b'1622145939928-0', size: 6709 id: b'1622145940100-0', size: 6037 id: b'1622145940266-0', size: 6468 id: b'1622145940435-0', size: 11607 id: b'1622145940597-0', size: 5577 id: b'1622145940768-0', size: 6041 id: b'1622145940926-0', size: 5570 id: b'1622145941098-0', size: 5916

Learn more

Contributing

  • Fork the repository.
  • Find an issue to work on and submit a pull request.
  • Could not find an issue? Look for documentation, bugs, typos, and missing features.

License

  • Apache License Version 2.0, see LICENSE.

About

Analyzing camera feed using @RedisAI, OpenCV, and Redis plugins for @grafana

Topics

Resources

License

Stars

Watchers

Forks

Packages