PyNAS is a modular neural architecture search (NAS) framework developed by ESA Φ-lab and Little Place Lab, specifically designed for deployment optimization on edge devices. It leverages advanced metaheuristic strategies, primarily Genetic Algorithms (GA) 🧬, to efficiently identify optimal deep learning architectures for constrained environments.
- 🧬 Metaheuristic Optimisation: Utilizes Genetic Algorithms (GA) for robust architecture optimization.
- 🔍 Model Architecture Selection: Automates the selection of optimal architectures for specific onboard applications.
- 📱 Edge Device Compatibility: Tailored for efficient deployment on various edge devices.
- 📊 Performance Metrics: Evaluates architectures based on predefined or custom metrics relevant to edge computing.
[!WARNING] 🚧 Work In Progress: This repository currently contains a limited preview of the PyNAS framework. The complete codebase will be publicly disclosed upon the acceptance of our research paper. We appreciate your interest and patience.
Feature | Description |
---|---|
Python Support | |
PyPi | Coming soon 🚧 |
License | |
Documentation | |
Contributions |
- Roberto Del Prete 🎓 (Google Scholar)
- Parampuneet Thind 🤖 (Google Scholar)
- Andrea Mazzeo 🧠
- Lorenzo Papa 🛰️ (Google Scholar)
- Matthew Whitley 📡
- Gabriele Meoni 🔬 (Google Scholar)
- Nicolas Longepe 🌍 (Google Scholar)
Specify the type and context of the project.
- ESA Φ-lab Research Fellowship — Link to ESA page
- Little Place Lab — Link to LPL page
Advancements in spaceborne edge computing has facilitated the incorporation of AI-powered chips into CubeSats, allowing for intelligent data handling and enhanced analytical capabilities with greater operational autonomy. This class of satellites face stringent energy and memory constraints, thus necessitating lightweight models which are often obtained by compression techniques. This paper addresses model compression by Neural Architecture Search (NAS) to enable computational efficiency and balance between accuracy, size, and latency. More in detail, we design an evolutionary-based NAS framework for onboard processing and test its capabilities on the burned area segmentation test case. The proposed solution jointly optimizes network architecture and deployment for hardware-specific resource-constrained platforms. Additionally, hardware-awareness is introduced in the optimization loop for tailoring the network topology to the specific target edge computing chip. The resulting models, which has been designed on CubeSat-class hardware, i.e. an NVIDIA Jetson AGX Orion and the Intel Movidious Myriad X, exhibits a memory footprint below 1 MB, outperforming handcrafted baselines in terms of latency (3× faster) and maintain competitive mean Intersection over Union (mIoU); additionally enabling real-time, high-resolution inference in orbit.
Detailed instructions to set up and run the project.
This repository uses a modern Python environment standard:
- Python ≥ 3.9
- Dependencies are specified in the
pyproject.toml
file.
To install:
pip install .
Or using PDM:
pdm install
Please cite the following works if you use this code:
├── LICENSE
├── README.md
├── pyproject.toml # project metadata & dependencies
├── setup.cfg # optional packaging config
├── environment.yml # optional environment specification
├── src/ # source code & Python package
│ └── your_package/ # replace with your package name
├── notebooks/ # Jupyter notebooks for experiments or analysis
├── papers/ # manuscript sources (LaTeX, figures, assets)
├── data/ # raw/processed datasets or external links
├── scripts/ # utility scripts and entry points
├── tests/ # unit and integration tests
├── docs/ # documentation (Sphinx, MkDocs, GitHub Pages)
│ ├── index.html # main documentation page
│ ├── images/ # documentation assets (images,..)
└── examples/ # usage examples and demos
The docs/
directory contains the project's documentation website with comprehensive information about the project, including:
- Project overview and goals
- Installation and setup instructions
- Usage examples and tutorials
- API documentation
- Links to related resources and publications
- Team and contributor information
This project is licensed under the CC BY-NC-ND 4.0 license. See the LICENSE file or read more at creativecommons.org.
All relevant data supporting the findings of this study are either included in the manuscript and supplementary materials or are publicly available at:
This repository includes a utility script for downloading datasets or models from the Hugging Face Hub:
# Install required dependencies
pip install huggingface_hub
# Run the download script
python data/download_hf_datasets.py
The script (data/download_hf_datasets.py
) provides a robust way to fetch datasets with automatic retries and error handling. It uses the huggingface_hub
library to download repositories with the following features:
- Downloads datasets or models from Hugging Face Hub
- Configurable retry mechanism for handling network issues
- Progress tracking and error reporting
- Supports custom local directories for downloads
- Uses HF's optimized transfer protocol
To customize which datasets to download, edit the repo_ids
list in the script.