Skip to main content

Action segmentation framework built with PyTorch Lightning

Project description

Lightning Action

GitHub PyPI

A modern action segmentation framework built with PyTorch Lightning for behavioral analysis.

Features

  • Modern Architecture: Built with PyTorch Lightning for scalable and reproducible training
  • Multiple Backbones: Support for TemporalMLP, RNN (LSTM/GRU), and Dilated TCN architectures
  • Command-line Interface: Easy-to-use CLI for training and inference
  • Comprehensive Logging: Built-in metrics tracking and visualization with TensorBoard
  • Extensive Testing: Full test coverage for reliable development

Installation

Prerequisites

  • Python 3.10+
  • PyTorch with CUDA support (for GPU training; optional for keypoint models, required for video models)

Install from Source

git clone https://github.com/paninski-lab/lightning-action.git
cd lightning-action
pip install -e .

Dependencies

Core dependencies include:

  • pytorch-lightning - Training framework
  • torch - Deep learning backend
  • numpy - Numerical computing
  • pandas - Data manipulation
  • scikit-learn - Machine learning utilities
  • tensorboard - Experiment tracking

Quick Start

1. Prepare Your Data

Organize your data in the following structure:

data/
├── markers/
│   ├── experiment1.csv
│   ├── experiment2.csv
│   └── ...
├── labels/
│   ├── experiment1.csv
│   ├── experiment2.csv
│   └── ...
└── features/  # optional, hand-crafted featurization of markers or other video representations
    ├── experiment1.csv
    ├── experiment2.csv
    └── ...

2. Create a Configuration File

Create a YAML configuration file (see configs/segmenter_example.yaml):

data:
  data_path: /path/to/your/data
  input_dir: markers
  transforms:  # optional, defaults to ZScore
    - ZScore

model:
  input_size: 10
  output_size: 4
  backbone: temporalmlp
  num_hid_units: 256
  num_layers: 2
  
optimizer:
  type: Adam
  lr: 1e-3
  
training:
  num_epochs: 100
  batch_size: 32
  device: cpu  # or 'gpu'

3. Train a Model

Using the CLI:

litaction train --config configs/my_config.yaml --output-dir runs/my_experiment

Using the Python API:

from lightning_action.api import Model

# Load model from config
model = Model.from_config('configs/my_config.yaml')

# Train model
model.train(output_dir='runs/my_experiment')

4. Generate Predictions

Using the CLI:

litaction predict --model-dir runs/my_experiment --data-dir /path/to/data --input-dir markers --output-dir predictions/

Using the Python API:

# Load trained model
model = Model.from_dir('runs/my_experiment')

# Generate predictions
model.predict(
    data_path='/path/to/data',
    input_dir='markers',
    output_dir='predictions/'
)

See configs/README.md for detailed configuration options.

Monitoring Training with TensorBoard

Lightning Action automatically logs training metrics to TensorBoard. To visualize your training progress:

  1. Launch TensorBoard after starting training:

    tensorboard --logdir /path/to/your/runs/directory
    
  2. Set the correct logdir: Use the deepest directory that contains all your model directories. For example:

    # If your models are in:
    # runs/experiment1/
    # runs/experiment2/
    # runs/baseline/
    
    # Launch TensorBoard with:
    tensorboard --logdir runs/
    
  3. Open your browser and navigate to http://localhost:6006 to view the TensorBoard dashboard.

  4. Available metrics include:

    • Training and validation loss
    • Training and validation accuracy
    • Training and validation F1 score
    • Learning rate schedules

Tip: Keep TensorBoard running while training multiple experiments to compare results in real-time.

Development

Running Tests

# Install development dependencies
pip install -e ".[dev]"

# Run all tests
pytest

# Run with coverage
pytest --cov=lightning_action

Code Style

The project uses:

  • flake8 for linting
  • isort for import sorting
  • Maximum line length: 99 characters

Project Structure

lightning_action/
├── api/           # High-level API for model usage
├── cli/           # Command-line interface
├── data/          # Data loading and preprocessing
├── models/        # Model architectures
│   └── backbones/ # Backbone implementations
└── tests/         # Test suite

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Add tests for new functionality
  5. Run the test suite (pytest)
  6. Commit your changes (git commit -m 'Add amazing feature')
  7. Push to the branch (git push origin feature/amazing-feature)
  8. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Citation

If you use this framework in your research, please cite:

@software{lightning_action,
  title = {Lightning Action: A PyTorch Lightning Framework for Action Segmentation},
  author = {Whiteway, Matt},
  url = {https://github.com/paninski-lab/lightning-action},
  year = {2024}
}

Acknowledgments

This framework is built upon the work of:

Project details


Download files

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

Source Distribution

lightning_action-1.0.2.tar.gz (64.9 kB view details)

Uploaded Source

Built Distribution

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

lightning_action-1.0.2-py3-none-any.whl (86.4 kB view details)

Uploaded Python 3

File details

Details for the file lightning_action-1.0.2.tar.gz.

File metadata

  • Download URL: lightning_action-1.0.2.tar.gz
  • Upload date:
  • Size: 64.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.4 CPython/3.11.15 Linux/6.17.0-1010-azure

File hashes

Hashes for lightning_action-1.0.2.tar.gz
Algorithm Hash digest
SHA256 809bb12301ebcfe1c97660e09872be87c13ab1e418af1da258d3ec0e3d5818eb
MD5 26b42d97a9a5b8f720a4e4ef2eded2ac
BLAKE2b-256 7a1247c8bdc3662a0deadcefe90544fe8aee941c841125bb907092694a8bbabb

See more details on using hashes here.

File details

Details for the file lightning_action-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: lightning_action-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 86.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.4 CPython/3.11.15 Linux/6.17.0-1010-azure

File hashes

Hashes for lightning_action-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 03aaeaf5913ff86f3e0a4020acb728e8252067ea8b86b183d431d1a5ee47fe30
MD5 e1895f9ab86a31eebba04c4ba15e1e37
BLAKE2b-256 0b4b7c50f6ed46f48908686ec12a4504cc0528c8e991a5733bc6bee93339fcf0

See more details on using hashes here.

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