wut? --- What U Think? SatNOGS Observation AI. https://spacecruft.org/spacecruft/satnogs-wut
 
 
 
 
Go to file
cv server d176821fdf installation stub 2020-01-02 17:30:22 -07:00
pics examples 2020-01-02 16:51:29 -07:00
.gitignore last w/o jq 2020-01-02 11:48:06 -07:00
LICENSE-CC license 2020-01-02 16:55:08 -07:00
LICENSE-GPL license 2020-01-02 16:55:08 -07:00
README.md installation stub 2020-01-02 17:30:22 -07:00
wut rename 2020-01-02 16:07:13 -07:00
wut-api-test APIURL 2020-01-02 16:00:37 -07:00
wut-get-obs APIURL 2020-01-02 16:00:37 -07:00
wut-get-staging renames 2020-01-02 11:53:15 -07:00
wut-get-train-bad renames 2020-01-02 11:53:15 -07:00
wut-get-train-good renames 2020-01-02 11:53:15 -07:00
wut-get-validation-bad renames 2020-01-02 11:53:15 -07:00
wut-get-validation-good renames 2020-01-02 11:53:15 -07:00
wut-get-waterfall APIURL 2020-01-02 16:00:37 -07:00
wut-get-waterfall-range range... 2020-01-02 15:58:24 -07:00
wut-ml rename 2020-01-02 16:07:25 -07:00
wut-review-staging renames 2020-01-02 11:53:15 -07:00

README.md

satnogs-wut

The goal of satnogs-wut is to have a script that will take an observation ID and return an answer whether the observation is "good", "bad", or "failed".

Good Observation

Good Observation

Bad Observation

Bad Observation

Failed Observation

Failed Observation

Machine Learning

The system at present is build upon the following:

  • Debian
  • Tensorflow
  • Keras

Learning/Testing, results are inaccurate.

wut?

The following scripts are in the repo:

  • wut --- Feed it an observation ID and it returns if it is a "good", "bad", or "failed" observation.
  • wut-api-test --- API Tests.
  • wut-get-obs --- Download the JSON for an observation ID.
  • wut-get-staging --- Download waterfalls to data/staging for review (deprecated).
  • wut-get-train-bad --- Download waterfalls to data/train/bad for review (deprecated).
  • wut-get-train-good --- Download waterfalls to data/train/good for review (deprecated).
  • wut-get-validation-bad --- Download waterfalls to data/validation/bad for review (deprecated).
  • wut-get-validation-good --- Download waterfalls to data/validation/good for review (deprecated).
  • wut-get-waterfall --- Download waterfall for an observation ID to download/[ID].
  • wut-get-waterfall-range --- Download waterfalls for a range of observation IDs to download/[ID].
  • wut-ml --- Main machine learning Python script using Tensorflow and Keras.
  • wut-review-staging --- Review all images in data/staging.

Installation

Most of the scripts are simple shell scripts with few dependencies.

Setup

The scripts use files that are ignored in the git repo. So you need to create those directories:

mkdir -p download
mkdir -p data/train/good
mkdir -p data/train/bad
mkdir -p data/train/failed
mkdir -p data/validation/good
mkdir -p data/validataion/bad
mkdir -p data/validataion/failed
mkdir -p data/staging
mkdir -p data/test/unvetted

Debian Packages

You'll need curl and jq, both in Debian's repos.

apt update
apt install curl jq

Machine Learning

For the machine learning scripts, like wut-ml, both Tensorflow and Keras need to be installed. The versions of those in Debian didn't work for me. IIRC, for Tensorflow I built a pip of version 2.0.0 from git and installed that. I installed Keras from pip. Something like:

# XXX These aren't the exact commands, need to check...
# Install bazel or whatever their build system is
# Install Tensorflow
git clone tensorflow...
cd tensorflow
./configure
# run some bazel command
dpkg -i /tmp/pkg_foo/*.deb
apt update
apt -f install
# Install Keras
pip3 install --user keras
# A million other commands....

Usage

The main purpose of the script is to evaluate an observation, but to do that, it needs to build a corpus of observations to learn from. So many of the scripts in this repo are just for downloading and managing observations.

The following steps need to be performed:

  1. Download waterfalls and JSON descriptions with wut-get-waterfall-range. These get put in the downloads/[ID]/ directories.

  2. Organize downloaded waterfalls into categories (e.g. "good", "bad", "failed"). Note: this needs a script written. Put them into their respective directories under:

    • data/train/good/
    • data/train/bad/
    • data/train/failed/
    • data/validation/good/
    • data/validataion/bad/
    • data/validataion/failed/
  3. Use machine learning script wut-ml to build a model based on the files in the data/train and data/validation directories.

  4. Rate an observation using the wut script.

Caveats

This is the first machine learning script I've done, I know little about satellites and less about radio, and I'm not a programmer.

Source License / Copying

Main repository is available here:

License: CC By SA 4.0 International and/or GPLv3+ at your discretion. Other code licensed under their own respective licenses.

Copyright (C) 2019, 2020, Jeff Moe