Skip to content

ESA-PhiLab/pynas

Repository files navigation

GitHub stars GitHub forks GitHub issues GitHub pull requests GitHub last commit GitHub code size GitHub top language GitHub repo size GitHub contributors Python 3.9+ Documentation Status PRs Welcome DOI License: GPL v3

ESA-PhiLab Logo

> powered by:

LPL Logo

🧬 pynas website

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.

Key Features

  • 🧬 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 Python 3.9+
PyPi Coming soon 🚧
License License: GPL v3
Documentation Documentation Status
Contributions PRs Welcome

👥 Authors

📖 Reference

Specify the type and context of the project.

📝 Abstract

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.

overview

🛠️ How to Use

Detailed instructions to set up and run the project.

Requirements

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

📚 Citations

Please cite the following works if you use this code:

📂 Repository Structure

├── 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

📄 License

This project is licensed under the CC BY-NC-ND 4.0 license. See the LICENSE file or read more at creativecommons.org.

📊 Dataset Hosting

All relevant data supporting the findings of this study are either included in the manuscript and supplementary materials or are publicly available at:

📥 Data Download Utilities

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.

About

Evolutionary framework for edge AI deployment on satellites

Resources

License

Stars

Watchers

Forks