A modern action segmentation framework built with PyTorch Lightning for behavioral analysis.
- 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
- Python 3.10+
- PyTorch with CUDA support (optional, for GPU training)
git clone https://github.com/paninski-lab/lightning-action.git
cd lightning-action
pip install -e .
Core dependencies include:
pytorch-lightning
- Training frameworktorch
- Deep learning backendnumpy
- Numerical computingpandas
- Data manipulationscikit-learn
- Machine learning utilitiestensorboard
- Experiment tracking
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
└── ...
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'
litaction train --config configs/my_config.yaml --output-dir runs/my_experiment
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')
litaction predict --model-dir runs/my_experiment --data-path /path/to/data --input-dir markers --output-dir predictions/
# 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.
Lightning Action automatically logs training metrics to TensorBoard. To visualize your training progress:
-
Launch TensorBoard after starting training:
tensorboard --logdir /path/to/your/runs/directory
-
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/
-
Open your browser and navigate to
http://localhost:6006
to view the TensorBoard dashboard. -
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.
# Install development dependencies
pip install -e ".[dev]"
# Run all tests
pytest
# Run with coverage
pytest --cov=lightning_action
The project uses:
flake8
for lintingisort
for import sorting- Maximum line length: 99 characters
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
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Make your changes
- Add tests for new functionality
- Run the test suite (
pytest
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
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}
}
This framework is built upon the work of:
- PyTorch Lightning for the training framework
- PyTorch for the deep learning backend
- Previous action segmentation work from the Paninski Lab