Plants species classifier

Classify plant images among 10K species from the iNaturalist dataset.

Model | Trainable | Inference | Pre-trained

Published by DEEP-Hybrid-DataCloud Consortium
Created: - Updated:

Model Description

Build Status

The deep learning revolution has brought significant advances in a number of fields [1], primarily linked to image and speech recognition. The standardization of image classification tasks like the ImageNet Large Scale Visual Recognition Challenge [2] has resulted in a reliable way to compare top performing architectures.

The use of deep learning for plant classification is not novel [3, 4] but has mainly focused in leaves and has been restricted to a limited amount of species, therefore making it of limited use for large-scale biodiversity monitoring purposes.

This Docker container contains a trained Convolutional Neural network optimized for plant identification using images. The architecture used is an Xception [5] network using Keras on top of Tensorflow. A detailed article about this network and the results obtained with it can be found in [6].

The PREDICT method expects an RGB image as input (or the url of an RGB image) and will return a JSON with the top 5 predictions.

The original training dataset was the great collection of images which are available in PlantNet under a Creative-Common AttributionShareAlike 2.0 license. It consists of around 250K images belonging to more than 6K plant species of Western Europe. These species are distributed in 1500 genera and 200 families.

A new iteration of the application has been trained using plant images from iNaturalist. This dataset has around 4.4M observations with 7M images from 58K worldwide species. We have restricted our training to the 10K most popular species.

This service is based in the Image Classification with Tensorflow model.


[1]: Yann LeCun, Yoshua Bengio, and Geofrey Hinton. Deep learning. Nature, 521(7553):436-444, May 2015.

[2]: Olga Russakovsky et al. ImageNet Large Scale Visual Recognition Challenge. International Journal of Computer Vision (IJCV), 115(3):211-252, 2015.

[3]: Sue Han Lee, Chee Seng Chan, Paul Wilkin, and Paolo Remagnino. Deep-plant: Plant identification with convolutional neural networks, 2015.

[4]: Mads Dyrmann, Henrik Karstoft, and Henrik Skov Midtiby. Plant species classification using deep convolutional neural network. Biosystems Engineering, 151:72-80, 2016.

[5]: Chollet, Francois. Xception: Deep learning with depthwise separable convolutions arXiv preprint (2017): 1610-02357.

[6]: Heredia, Ignacio. Large-scale plant classification with deep neural networks. Proceedings of the Computing Frontiers Conference. ACM, 2017.

Test this module

You can test and execute this module in various ways.

Excecute locally on your computer using Docker

You can run this module directly on your computer, assuming that you have Docker installed, by following these steps:

$ docker pull deephdc/deep-oc-plants-classification-tf
$ docker run -ti -p 5000:5000 deephdc/deep-oc-plants-classification-tf

Execute on your computer using udocker

If you do not have Docker available or you do not want to install it, you can use udocker within a Python virtualenv:

$ virtualenv udocker
$ source udocker/bin/activate
(udocker) $ pip install udocker
(udocker) $ udocker pull deephdc/deep-oc-plants-classification-tf
(udocker) $ udocker create deephdc/deep-oc-plants-classification-tf
(udocker) $ udocker run -p 5000:5000  deephdc/deep-oc-plants-classification-tf

In either case, once the module is running, point your browser to and you will see the API documentation, where you can test the module functionality, as well as perform other actions (such as training).

For more information, refer to the user documentation.

Train this module

You can train this model using the DEEP framework. In order to execute this module in our pilot e-Infrastructure you would need to be registered in the DEEP IAM.

Once you are registedered, you can go to our training dashboard to configure and train it.

For more information, refer to the user documentation.

Configure and train

Get the code

Github Docker Hub

Get the data

Dataset Training files

Citing this module