No project description provided
Project description
PumaGuard
Introduction
Please visit http://pumaguard.rtfd.io/ for more information.
Get PumaGuard
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.
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.
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.
-
Get a TPU instance on Colab or run the script on your local machine.
-
Open a terminal and run
git clone https://github.com/PEEC-Nature-Youth-Group/pumaguard.git cd pumaguard
-
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
-
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
309ca249bcffeb04e40df696cc0b15cbdd2122fce70829e0f004c594ec2b3305
|
|
| MD5 |
9edf7a725cadb5affdf065c49368fe61
|
|
| BLAKE2b-256 |
2bcc355f927d10b77588f7757d0300624d45f9f3f2117147a7a6dcad4fa36278
|
Provenance
The following attestation bundles were made for pumaguard-20.post163.tar.gz:
Publisher:
test-and-package.yaml on PEEC-Nature-Youth-Group/pumaguard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pumaguard-20.post163.tar.gz -
Subject digest:
309ca249bcffeb04e40df696cc0b15cbdd2122fce70829e0f004c594ec2b3305 - Sigstore transparency entry: 732056218
- Sigstore integration time:
-
Permalink:
PEEC-Nature-Youth-Group/pumaguard@d45381f6c4145fda0a25031d022bc5069ab1e1a9 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/PEEC-Nature-Youth-Group
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
test-and-package.yaml@d45381f6c4145fda0a25031d022bc5069ab1e1a9 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e2a121fc2dd2d9146de03c422ed67e8248505b77d80fe4c633dda03578456ef
|
|
| MD5 |
814fb2086abee21f8c16e423440a6d11
|
|
| BLAKE2b-256 |
a8f829c07ec57f17eac2c1c28c0497b9d83afad97a91d621ec71775041b3422d
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pumaguard-20.post163-py3-none-any.whl -
Subject digest:
7e2a121fc2dd2d9146de03c422ed67e8248505b77d80fe4c633dda03578456ef - Sigstore transparency entry: 732056219
- Sigstore integration time:
-
Permalink:
PEEC-Nature-Youth-Group/pumaguard@d45381f6c4145fda0a25031d022bc5069ab1e1a9 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/PEEC-Nature-Youth-Group
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
test-and-package.yaml@d45381f6c4145fda0a25031d022bc5069ab1e1a9 -
Trigger Event:
push
-
Statement type: