Skip to main content

No project description provided

Project description

PumaGuard

Build and Test Webpage

Test and package code

Open in GitHub Codespaces

Open in Colab

Introduction

Please visit http://pumaguard.rtfd.io/ for more information.

Get PumaGuard

PyPI - Version

GitHub Codespaces

If you do not want to install any new software on your computer you can use GitHub Codespaces, which provide a development environment in your browser.

Open in GitHub Codespaces

Local Development Environment

You can set up a local development environment using either uv (recommended for speed) or poetry.

Using uv (Recommended)

uv is an extremely fast Python package installer and resolver.

Install uv:

curl -LsSf https://astral.sh/uv/install.sh | sh

Or on Windows:

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

Create a virtual environment and install dependencies:

uv venv
source .venv/bin/activate  # On Linux/macOS
# or
.venv\Scripts\activate  # On Windows

# Install with development dependencies
uv pip install -e ".[dev,extra-dev]"

Or use uv sync for automatic environment management:

uv sync --extra dev --extra extra-dev

Using Poetry

Alternatively, you can use poetry:

sudo apt install python3-poetry
poetry install

Running the scripts on colab.research.google.com

Google Colab offers runtimes with GPUs and TPUs, which make training a model much faster. In order to run the training script in Google Colab, do the following from the terminal:

git clone https://github.com/PEEC-Nature-Youth-Group/pumaguard.git
cd pumaguard
scripts/train.py --help

For example, if you want to train the model from row 1 in the notebook,

scripts/train.py --notebook 1

Web UI

PumaGuard includes a modern Flutter-based web interface for monitoring and configuration.

Starting the Web UI

Using uv:

uv run pumaguard-webui --host 0.0.0.0 --port 5000

Using poetry:

poetry run pumaguard-webui --host 0.0.0.0 --port 5000

The web interface will be accessible at http://your-server-ip:5000 or http://pumaguard.local:5000 (if mDNS is enabled).

mDNS/Zeroconf Support

PumaGuard supports automatic server discovery via mDNS (also known as Bonjour or Zeroconf). This allows clients to connect using a friendly hostname like pumaguard.local instead of needing to know the IP address.

Setup mDNS on the server:

  • Linux: Install Avahi

    sudo apt install avahi-daemon avahi-utils
    sudo systemctl enable avahi-daemon
    sudo systemctl start avahi-daemon
    
  • macOS: Built-in, no setup needed

  • Windows: Install Bonjour Print Services

Using mDNS:

Once mDNS is set up, your server will be automatically discoverable at:

http://pumaguard.local:5000

You can customize the hostname:

pumaguard-webui --mdns-name my-server
# Accessible at: http://my-server.local:5000

Or disable mDNS:

pumaguard-webui --no-mdns

For detailed mDNS setup instructions including Docker/container configurations, see docs/MDNS_SETUP.md.

Running the server

The pumaguard-server watches a folder and classifies new files as they are added to that folder. Run with

Using uv:

uv run pumaguard-server FOLDER

Using poetry:

poetry run pumaguard-server FOLDER

Where FOLDER is the folder to watch.

Server Demo Session

Training new models

For reproducibility, training new models should be done via the train script and all necessary data, i.e. images, and the resulting weights and history should be committed to the repository.

  1. Get a TPU instance on Colab or run the script on your local machine.

  2. Open a terminal and run

    git clone https://github.com/PEEC-Nature-Youth-Group/pumaguard.git
    cd pumaguard
    
  3. Get help on how to use the script

    On Colab, run

    ./scripts/pumaguard --help
    ./scripts/pumaguard train --help
    

    On your local machine with uv:

    sudo apt install nvidia-cudnn
    uv sync --extra dev --extra extra-dev
    uv run pumaguard --help
    uv run pumaguard train --help
    

    Or with poetry:

    sudo apt install nvidia-cudnn
    poetry install
    poetry run pumaguard --help
    poetry run pumaguard train --help
    
  4. Train the model from scratch

    ./scripts/pumaguard train --no-load --settings pumaguard-models/model_settings_6_pre-trained_512_512.yaml
    

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pumaguard-20.post163.tar.gz (58.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pumaguard-20.post163-py3-none-any.whl (25.1 MB view details)

Uploaded Python 3

File details

Details for the file pumaguard-20.post163.tar.gz.

File metadata

  • Download URL: pumaguard-20.post163.tar.gz
  • Upload date:
  • Size: 58.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pumaguard-20.post163.tar.gz
Algorithm Hash digest
SHA256 309ca249bcffeb04e40df696cc0b15cbdd2122fce70829e0f004c594ec2b3305
MD5 9edf7a725cadb5affdf065c49368fe61
BLAKE2b-256 2bcc355f927d10b77588f7757d0300624d45f9f3f2117147a7a6dcad4fa36278

See more details on using hashes here.

Provenance

The following attestation bundles were made for pumaguard-20.post163.tar.gz:

Publisher: test-and-package.yaml on PEEC-Nature-Youth-Group/pumaguard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pumaguard-20.post163-py3-none-any.whl.

File metadata

  • Download URL: pumaguard-20.post163-py3-none-any.whl
  • Upload date:
  • Size: 25.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pumaguard-20.post163-py3-none-any.whl
Algorithm Hash digest
SHA256 7e2a121fc2dd2d9146de03c422ed67e8248505b77d80fe4c633dda03578456ef
MD5 814fb2086abee21f8c16e423440a6d11
BLAKE2b-256 a8f829c07ec57f17eac2c1c28c0497b9d83afad97a91d621ec71775041b3422d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pumaguard-20.post163-py3-none-any.whl:

Publisher: test-and-package.yaml on PEEC-Nature-Youth-Group/pumaguard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page