Long-term trends in global flowering phenology

Supporting data for our publication, "Long-term trends in global flowering phenology". We trained our neural network to detect flowering phenology, using images from six previously published datasets, as detailed in the article (and see also the related works section below). The files here contain information on the images used, their labels as previously published, their taxonomy, how they were split up for model training, the predictions resulting from our model's application to the test set and a large GBIF target dataset, comparison with a human-labelled validation set, and the model weights. image_urls.csv gives the location online of all of the images used in training. It contains three columns: dataset, id, url. dataset takes one of six values denoting the difference sources of our images. id is an integer obtained from the image's identifier in the source dataset. Note that that id is not guaranteed to be unique since the datasets use different identification schemes. However the combination of id and dataset is unique to each image. taxa.csv gives the taxonomy of the training images. It contains 6 columns: dataset, id, order, family, genus, species. Apart from dataset and id, not all of these fields are guaranteed to be populated. Two datasets, speed2022 and younis2020, were linked with GBIF IDs, and in this case taxonomy was obtained from GBIF. Other datasets provided taxonomic information in supporting data associated with their publication. For lorieul2019, order was inferred from either family or genus. training_datasets.csv shows how the images were split between our training (train), validation (val), and test (test) datasets, as well as the image labels. Images were labelled 0 for no open flowers, and 1 for at least one open flower. It contains four columns: dataset, id, training_split, and label. test_preds.csv shows the model output on the test dataset. It contains four columns: dataset, id, label, prediction. label is the same as in training_dataset.csv, while prediction is a number continuous between 0 and 1. Details of how these predictions were binarized can be found in the article. gbif_preds.csv is a file that contains a list of the GBIF IDs corresponding to the occurrence records used for inference in our article, and the model predictions for each. Since we excluded records associated with more than one image, each ID should correspond to a single image. It contains two columns: gbifID and prediction. human_validation.csv is a file giving information on the images presented to our human annotators for model validation. It contains the columns: gbifID, label, prediction. Note that GBIF records with more than one image were not excluded from this dataset, and the GBIF ID does not uniquely identify the image, only the record it is associated with. label takes an integer value in [0,3] where 0 indicates no flower, 1 at least one flower, 2 not a herbarium sheet, and 3 that the annotator was not definitively able to classify the image. The model is not allowed to skip images and is not expected to classify images as not being herbarium sheets, so again produces a value for prediction continuous in (0,1). weights.h5 contains the Keras model weights used for inference. These weights require the exact same model architecture to be reproduced to be useful . This can be built as follows (assuming a Python environment with Keras and Tensorflow): prebuilt_model = keras.src.applications.convnext.ConvNeXtSmall base_model = prebuilt_model( weights='imagenet', input_shape=(756, 504, 3), include_top=False, ) x = base_model.output x = keras.layers.GlobalAveragePooling2D()(x) x = tf.keras.layers.Dropout(self.dropout_rate)(x) x = keras.layers.Dense( units=1, kernel_regularizer=keras.regularizers.l2(0.01), activation='sigmoid', name='output', )(x) head_model = x model = keras.Model(inputs=base_model.inputs, outputs=head_model)

Institutions

Publication Details

Journal
Zenodo (CERN European Organization for Nuclear Research)
Published
2024-11-27
DOI
https://doi.org/10.5281/zenodo.14230754
Primary Topic
Remote Sensing in Agriculture
Type
article
Field-Weighted Citation Impact
0.00
Controls
|||
ALL TIME
JAN
FEB
MAR
APR
MAY
JUN
JUL
AUG
SEP
OCT
article

Long-term trends in global flowering phenology

Zenodo (CERN European Organization for Nuclear Research)
Remote Sensing in Agriculture
article

Long-term trends in global flowering phenology

article en

Abstract

Supporting data for our publication, "Long-term trends in global flowering phenology". We trained our neural network to detect flowering phenology, using images from six previously published datasets, as detailed in the article (and see also the related works section below). The files here contain information on the images used, their labels as previously published, their taxonomy, how they were split up for model training, the predictions resulting from our model's application to the test set and a large GBIF target dataset, comparison with a human-labelled validation set, and the model weights. image_urls.csv gives the location online of all of the images used in training. It contains three columns: dataset, id, url. dataset takes one of six values denoting the difference sources of our images. id is an integer obtained from the image's identifier in the source dataset. Note that that id is not guaranteed to be unique since the datasets use different identification schemes. However the combination of id and dataset is unique to each image. taxa.csv gives the taxonomy of the training images. It contains 6 columns: dataset, id, order, family, genus, species. Apart from dataset and id, not all of these fields are guaranteed to be populated. Two datasets, speed2022 and younis2020, were linked with GBIF IDs, and in this case taxonomy was obtained from GBIF. Other datasets provided taxonomic information in supporting data associated with their publication. For lorieul2019, order was inferred from either family or genus. training_datasets.csv shows how the images were split between our training (train), validation (val), and test (test) datasets, as well as the image labels. Images were labelled 0 for no open flowers, and 1 for at least one open flower. It contains four columns: dataset, id, training_split, and label. test_preds.csv shows the model output on the test dataset. It contains four columns: dataset, id, label, prediction. label is the same as in training_dataset.csv, while prediction is a number continuous between 0 and 1. Details of how these predictions were binarized can be found in the article. gbif_preds.csv is a file that contains a list of the GBIF IDs corresponding to the occurrence records used for inference in our article, and the model predictions for each. Since we excluded records associated with more than one image, each ID should correspond to a single image. It contains two columns: gbifID and prediction. human_validation.csv is a file giving information on the images presented to our human annotators for model validation. It contains the columns: gbifID, label, prediction. Note that GBIF records with more than one image were not excluded from this dataset, and the GBIF ID does not uniquely identify the image, only the record it is associated with. label takes an integer value in [0,3] where 0 indicates no flower, 1 at least one flower, 2 not a herbarium sheet, and 3 that the annotator was not definitively able to classify the image. The model is not allowed to skip images and is not expected to classify images as not being herbarium sheets, so again produces a value for prediction continuous in (0,1). weights.h5 contains the Keras model weights used for inference. These weights require the exact same model architecture to be reproduced to be useful . This can be built as follows (assuming a Python environment with Keras and Tensorflow): prebuilt_model = keras.src.applications.convnext.ConvNeXtSmall base_model = prebuilt_model( weights='imagenet', input_shape=(756, 504, 3), include_top=False, ) x = base_model.output x = keras.layers.GlobalAveragePooling2D()(x) x = tf.keras.layers.Dropout(self.dropout_rate)(x) x = keras.layers.Dense( units=1, kernel_regularizer=keras.regularizers.l2(0.01), activation='sigmoid', name='output', )(x) head_model = x model = keras.Model(inputs=base_model.inputs, outputs=head_model)

Zenodo (CERN European Organization for Nuclear Research)
Norwegian University of Science and Technology (NO), Norwegian Biodiversity Information Centre (NO)
Openalex Percentile: Top 55%
Remote Sensing in Agriculture
AI Navigator

Ask Laika to Summarize, Analyze, and Connect papers live on the map.

Summarize Papers & Methodologies

Extract key findings, datasets, and comparative methods across publications.

Benchmark Rankings & Visual Analytics

Rank top research institutions, authors, funders, topics, and journals by Field-Weighted Citation Impact (FWCI) and paper volume with instant charts.

Connect Distant Disciplines

Bridge topological clusters on the map to find hidden collaborative intersections.