Speeding up taxonomy in the digital age: A deep learning approach for identifying cryptic freshwater snails

Fuente: Zenodo
Saved in:
Bibliographic Details
Main Author: Vetter, Dennis
Format: Recurso digital
Published: Zenodo 2026
Online Access:
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866901819931754496
author Vetter, Dennis
author_facet Vetter, Dennis
contents <p>This is the companion repository for the paper.</p> <p>We demonstrate how to use multimodal siamese networks to achieve high performance in the taxonomy of cryptic species with <em>Radomaniola</em> as model genus.</p> <div dir="auto"> <h2>Dataset download</h2> The dataset can be obtained from <a href="https://doi.org/10.5281/zenodo.18745386" target="_blank" rel="noopener">Zenodo</a>. Before running experiments adapt the dataset directory in <code>experiments/experiment.py</code> to reflect the local data setup.</div> <div dir="auto"> <h2>Installation</h2> This code was developed with python 3.10 and cuda 12.6.<br>First, clone repository files into new directory:</div> <div> <pre><code>mkdir taxonomy_ai && cd taxonomy_ai git clone https://github.com/dennisrv/identifying-cryptic-snails identifying_cryptic_snails cd identifying_cryptic_snails </code></pre> </div> <p dir="auto">To install requried packages run</p> <div> <pre><code>pip install -r requrirements.txt </code></pre> </div> <p dir="auto">Now you can run experiments. For example to run the cross-validation experiment use</p> <div> <pre><code>$PYTHONPATH=$PYTHONPATH:$(pwd) python experiments/crossval.py --device=cuda:0 --epochs=20 --batch_size=64 --repeats=5 </code></pre> </div> <p dir="auto">This command makes the local library files available to python, and runs the experiment on GPU 0, with 20 epochs of training, a batch size of 64 and 5-fold cross validation.<br>For a full list of supported command line arguments see <code>experiments/utils/__init__.py</code>.</p> <p dir="auto">Important: Current logic puts the whole training dataset on the GPU to accelerate training. Training with the <em>Radomaniola</em> dataset and MobileNetV3small network requires ~4GB available VRAM and takes ~2 minutes. Use of larger backbone models and / or datasets might drastically increase required GPU memory.</p> <div dir="auto"> <h2>Repository Structure</h2> <code>src/</code> - core library code. Includes implementation of different models (<code>src/models</code>), different training regimes ( <code>src/experiments/training</code>), and validation schemes (<code>src/experiments/validation</code>).</div> <p dir="auto"><code>tests/</code> - unit tests for some components.</p> <p dir="auto"><code>experiments/</code> - implementation of the different experiments described in the paper. Dataset pre-processing logic is located in <code>experiments/utils/__init__.py</code>.</p> <p dir="auto"><code>notebooks/</code> - exploratory notebooks. <code>graphs.ipynb</code> contains the logic to reproduce the graphs in the paper; <code>explore_embeddings.ipynb</code> contains additional code to investigate the embedding space of trained models.</p> <div dir="auto"> <h2>Extending this code</h2> To implement new pre-trained networks, extend <code>PretrainedConfModelConfig</code> in <code>src/experiments/models/pretrained.py</code>; to implement new methods for embedding learning extend <code>OnlineEmbeddingClassification</code> in <code>src/experiments/training/online_embedding_classification.py</code>. See the respecitve directories for example implementations of using pre-trained MobileNets or triplet learning.</div> <p dir="auto">New experiments should inherit from abstract class <code>Experiment</code> in <code>experiments/experiment.py</code>.</p> <p dir="auto">Different datasets likely need adaption of the data pre-processing logic in <code>experiments/utils/__init__.py</code> to work properly with the code.</p> <div dir="auto"> <h2>License</h2> This code is available under the MIT license. See <code>LICENSE.md</code> file for more info.</div> <div dir="auto"> <h2>Citation</h2> If you use this work, please cite the corresponding paper:</div>
format Recurso digital
id zenodo_https___doi_org_10_5281_zenodo_18748980
institution Zenodo
language
publishDate 2026
publisher Zenodo
record_format zenodo
spellingShingle Speeding up taxonomy in the digital age: A deep learning approach for identifying cryptic freshwater snails
Vetter, Dennis
<p>This is the companion repository for the paper.</p> <p>We demonstrate how to use multimodal siamese networks to achieve high performance in the taxonomy of cryptic species with <em>Radomaniola</em> as model genus.</p> <div dir="auto"> <h2>Dataset download</h2> The dataset can be obtained from <a href="https://doi.org/10.5281/zenodo.18745386" target="_blank" rel="noopener">Zenodo</a>. Before running experiments adapt the dataset directory in <code>experiments/experiment.py</code> to reflect the local data setup.</div> <div dir="auto"> <h2>Installation</h2> This code was developed with python 3.10 and cuda 12.6.<br>First, clone repository files into new directory:</div> <div> <pre><code>mkdir taxonomy_ai && cd taxonomy_ai git clone https://github.com/dennisrv/identifying-cryptic-snails identifying_cryptic_snails cd identifying_cryptic_snails </code></pre> </div> <p dir="auto">To install requried packages run</p> <div> <pre><code>pip install -r requrirements.txt </code></pre> </div> <p dir="auto">Now you can run experiments. For example to run the cross-validation experiment use</p> <div> <pre><code>$PYTHONPATH=$PYTHONPATH:$(pwd) python experiments/crossval.py --device=cuda:0 --epochs=20 --batch_size=64 --repeats=5 </code></pre> </div> <p dir="auto">This command makes the local library files available to python, and runs the experiment on GPU 0, with 20 epochs of training, a batch size of 64 and 5-fold cross validation.<br>For a full list of supported command line arguments see <code>experiments/utils/__init__.py</code>.</p> <p dir="auto">Important: Current logic puts the whole training dataset on the GPU to accelerate training. Training with the <em>Radomaniola</em> dataset and MobileNetV3small network requires ~4GB available VRAM and takes ~2 minutes. Use of larger backbone models and / or datasets might drastically increase required GPU memory.</p> <div dir="auto"> <h2>Repository Structure</h2> <code>src/</code> - core library code. Includes implementation of different models (<code>src/models</code>), different training regimes ( <code>src/experiments/training</code>), and validation schemes (<code>src/experiments/validation</code>).</div> <p dir="auto"><code>tests/</code> - unit tests for some components.</p> <p dir="auto"><code>experiments/</code> - implementation of the different experiments described in the paper. Dataset pre-processing logic is located in <code>experiments/utils/__init__.py</code>.</p> <p dir="auto"><code>notebooks/</code> - exploratory notebooks. <code>graphs.ipynb</code> contains the logic to reproduce the graphs in the paper; <code>explore_embeddings.ipynb</code> contains additional code to investigate the embedding space of trained models.</p> <div dir="auto"> <h2>Extending this code</h2> To implement new pre-trained networks, extend <code>PretrainedConfModelConfig</code> in <code>src/experiments/models/pretrained.py</code>; to implement new methods for embedding learning extend <code>OnlineEmbeddingClassification</code> in <code>src/experiments/training/online_embedding_classification.py</code>. See the respecitve directories for example implementations of using pre-trained MobileNets or triplet learning.</div> <p dir="auto">New experiments should inherit from abstract class <code>Experiment</code> in <code>experiments/experiment.py</code>.</p> <p dir="auto">Different datasets likely need adaption of the data pre-processing logic in <code>experiments/utils/__init__.py</code> to work properly with the code.</p> <div dir="auto"> <h2>License</h2> This code is available under the MIT license. See <code>LICENSE.md</code> file for more info.</div> <div dir="auto"> <h2>Citation</h2> If you use this work, please cite the corresponding paper:</div>
title Speeding up taxonomy in the digital age: A deep learning approach for identifying cryptic freshwater snails
url https://doi.org/10.5281/zenodo.18748980