Project · 2013

TCC — Reconhecimento de Plantas por Rede Neural

My Computer Science capstone (2013): a mobile application for plant species recognition. An Android app photographs the leaf, sends it to a Java server, and recognition uses Artificial Intelligence (a neural network) and image processing (contours and colors), classifying against an Oracle database of species. Years before the AI boom.

While the world was dreaming of AI, I was already shipping with it — in 2013, recognizing plant species from a photo, with a neural network and computer vision hand-built in Java.

Architecture diagram: Android app and web page send the photo to the Java server, which runs computer vision and a neural network (ART) and queries Oracle; a Java desktop registers the species. Dark theme with amber.

In 2013, for my Computer Science capstone, I built a mobile app to recognize plant species from a photo of the leaf — years before AI became everyone's topic. The motivation was simple: facing an unknown plant (in a park, say), being able to identify it on the spot with your phone — and back then no such apps existed.

The end user has two ways to send the photo: an Android app (camera) and a web client page. Both send the image, over a socket, to the same Java server — the client only captures; the heavy lifting stays on the server.

On the server, a computer-vision pipeline prepares the image: it resizes, converts to grayscale, binarizes by threshold and detects the leaf's contour by scanning the image in four directions; then it crops the useful frame and builds the feature matrix.

Recognition uses an Artificial Neural Network. I chose ART (Adaptive Resonance Theory) on purpose: it's self-organizing and unsupervised, and solves the stability-plasticity dilemma — it learns a new species without restarting the whole training. I implemented ART from scratch in Java (plus an MLP with backpropagation), with no AI frameworks.

On the other side, a Java desktop application is the specialist's tool: it registers and classifies the reference plants (original photo + processed version) in an Oracle database. Recognition compares against that base — returning to the client the recognized species or a list of candidates, each with a name and a fun fact.

Engineering decisions

  1. 01

    ART for stability-plasticity

    I chose ART over a plain MLP because it's self-organizing and learns new patterns without forgetting old ones or restarting training — exactly what a species catalog that grows over time needs.

  2. 02

    Process on the server, not the phone

    In 2013 phones were limited; the app only captures and sends the photo over a socket, and all the heavy work — computer vision and the neural network — runs on a Java server.

  3. 03

    Contour instead of the whole leaf

    Instead of feeding the network the full image, I extract the leaf's contour (four-direction scan) and crop the useful frame — less data, faster recognition focused on shape.

  4. 04

    Neural networks written by hand

    I implemented ART and an MLP with backpropagation from scratch in Java, with no AI libraries — in 2013 today's ecosystem didn't exist.

Architecture

Clientes

Android app + Web

End user sends the leaf photo (camera or browser) over a socket.

Servidor Java

The hub

The Java server that connects everything: receives the clients' images, runs recognition and talks to Oracle.

Visão computacional

Preprocessing

Grayscale → binarize → contour → crop → matrix.

Rede neural (ART)

Recognition

Self-organizing ART network, hand-built in Java.

Banco Oracle

Species

Registered catalog; returns the plant or candidates.

Desktop (especialista)

Java registration

Desktop software where the specialist registers and classifies the reference plants.

Responsive

Pipeline with the real leaves: photo, grayscale and binary, to the species.
From photo to species, with the TCC's real leaves: the image becomes grayscale, then binary (contour), and feeds recognition.
Screen of the Java desktop plant-registration software.
The Java desktop software: the specialist registers and classifies the reference plants (name, taxonomy, fun fact and image) that feed the database.
Android app showing the recognized species and its classification.
Result on the Android app: recognized species, with full taxonomic classification and a fun fact about the plant.
Android app listing candidate plants.
When it isn't certain, the app lists candidate plants — “could any of these be yours?”.

Stack

Rede Neural (ART/MLP)Visão ComputacionalJavaAndroidOracle