Home

Awesome

KSO System

The Koster Seafloor Observatory is an open-source, citizen science and machine learning approach to analyse subsea movies.

<!-- PROJECT SHIELDS --> <!-- *** I'm using markdown "reference style" links for readability. *** Reference links are enclosed in brackets [ ] instead of parentheses ( ). *** See the bottom of this document for the declaration of the reference variables *** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use. *** https://www.markdownguide.org/basic-syntax/#reference-style-links -->

Contributors Forks Stargazers Issues GPL License

KSO overview

The KSO system has been developed to:

koster_info_diag

The system is built around a series of easy-to-use Jupyter Notebooks. Each notebook allows users to perform a specific task of the system (e.g. upload footage to the citizen science platform or analyse the classified data).

Users can run these notebooks via Google Colab (by clicking on the Colab links in the table below), locally or on a high-performance computing (HPC) environment.

Notebooks

Our notebooks are modular and grouped into four main task categories; Set up, Classify, Analyse and Publish.

TaskNotebookDescriptionTry it!
Set upCheck_metadataCheck format and contents of footage and sites, media and species csv filesOpen In Colab binder
ClassifyUpload_subjects_to_ZooniversePrepare original footage and upload short clips to Zooniverse, extract frames of interest from the original footage and upload them to ZooniverseOpen In Colab binder
ClassifyProcess_classificationsPull and process up-to-date classifications from ZooniverseOpen In Colab binder
AnalyseTrain_modelsPrepare the training and test data, set model parameters and train modelsOpen In Colab binder
AnalyseEvaluate_modelsUse ecologically relevant metrics to test the modelsOpen In Colab binder
PublishPublish_modelsPublish the model to a public repositoryOpen In Colab binder
PublishPublish_observationsAutomatically classify new footage and export observations to GBIFOpen In Colab binder

Local Installation

Docker Installation

Requirements

Pull KSO Docker image

Bash
docker pull ghcr.io/ocean-data-factory-sweden/kso:dev

Conda Installation

Requirements

Download this repository

Clone this repository using

git clone https://github.com/ocean-data-factory-sweden/kso.git

Prepare your system

Depending on your system (Windows/Linux/MacOS), you might need to install some extra tools. If this is the case, you will get a message about what you need to install in the next steps. For example, Microsoft Build Tools C++ with a version higher than 14.0 is required for Windows systems.

Set up the environment with Conda

  1. Open the Anaconda Prompt
  2. Navigate to the folder where you have cloned the repository or unzipped the manually downloaded repository. Then go into the kso folder.
cd kso
  1. Create an Anaconda environment with Python 3.8. Remember to change the name env.
conda create -n <name env> python=3.8
  1. Enter the environment:
conda activate <name env>
  1. Specify your GPU details.

5a. Find out the pytorch installation you need. Navigate to the system options (example below) and select your device/platform details.

<div style="text-align: center;"> <img src="https://github.com/ocean-data-factory-sweden/kso/blob/dev/assets/cuda_gpu_example_requirements.png?raw=true" alt="CUDA Requirements" width="450" height="150"> </div>

5b. Add the recommended command to the KSO's gpu_requirements_user.txt file.

  1. Install all the requirements:
pip install -r requirements.txt -r gpu_requirements_user.txt

Cloudina

Cloudina is a hosted version of KSO (powered by JupyterHub) on NAISS Science Cloud. It allows users to scale and automate larger workflows using a powerful processing backend. This is currently an invitation-only service. To access the platform, please contact jurie.germishuys[at]combine.se.

The current portals are accessible as:

  1. Console (object storage) - storage
  2. Album (JupyterHub) - notebooks
  3. Vendor (MLFlow) - mlflow

Starting a new project

To start a new project you will need to:

  1. Create initial information for the database: Input the information about the underwater footage files, sites and species of interest. You can use a template of the csv files and move the directory to the "db_starter" folder.
  2. Link your footage to the database: You will need files of underwater footage to run this system. You can download some samples and move them to db_starter. You can also store your own files and specify their directory in the notebooks.

Please remember the format of the underwater media is standardised (typically .mp4 or .jpg) and the associated metadata captured in three CSV files (“movies”, “sites” and “species”) should follow the Darwin Core standards (DwC).

Developer instructions

If you would like to expand and improve the KSO capabilities, please follow the instructions above to set the project up on your local computer.

When you add any changes, please create your branch on top of the current 'dev' branch. Before submitting a Merge Request, please:

black filename 
Commit TypeTitleDescriptionEmoji
featFeaturesA new feature
fixBug FixesA bug Fix🐛
docsDocumentationDocumentation only changes📚
styleStylesChanges that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)💎
refactorCode RefactoringA code change that neither fixes a bug nor adds a feature📦
perfPerformance ImprovementsA code change that improves performance🚀
testTestsAdding missing tests or correcting existing tests🚨
buildBuildsChanges that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)🛠
ciContinuous IntegrationsChanges to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)⚙️
choreChoresOther changes that don't modify src or test files♻️
revertRevertsReverts a previous commit🗑

Citation

If you use this code or its models in your research, please cite:

Anton V, Germishuys J, Bergström P, Lindegarth M, Obst M (2021) An open-source, citizen science and machine learning approach to analyse subsea movies. Biodiversity Data Journal 9: e60548. https://doi.org/10.3897/BDJ.9.e60548

Collaborations/Questions

You can find out more about the project at https://subsim.se.

We are always excited to collaborate and help other marine scientists. Please feel free to contact us (matthias.obst(at)marine.gu.se) with your questions.

Troubleshooting

If you experience issues with the Panoptes package and/or uploading movies to Zooniverse, it might be related to the libmagic package. In Windows, the following commands might fix the issue:

pip install python-libmagic
pip install python-magic-bin
<!-- MARKDOWN LINKS & IMAGES --> <!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->