Projeto · 2013

TCC — Reconhecimento de Plantas por Rede Neural

Meu TCC de Ciência da Computação (2013): um aplicativo móvel de reconhecimento de espécies de plantas. Um app Android fotografa a folha, envia a um servidor Java, e o reconhecimento usa Inteligência Artificial (rede neural) e processamento de imagem (contornos e cores), classificando contra um banco Oracle de espécies. Anos antes do boom de IA.

Enquanto o mundo sonhava com IA, eu já entregava com IA — em 2013, reconhecendo espécies de plantas pela foto, com rede neural e visão computacional feitas à mão em Java.

Diagrama da arquitetura: app Android e página web enviam a foto ao servidor Java, que roda visão computacional e rede neural (ART) e consulta o Oracle; um desktop Java cadastra as espécies. Tema escuro com âmbar.

Em 2013, no meu TCC de Ciência da Computação, construí um aplicativo móvel para reconhecer espécies de plantas pela foto da folha — anos antes de IA virar assunto de todo mundo. A motivação era simples: diante de uma planta desconhecida (num parque, por exemplo), poder identificá-la na hora pelo celular — e, na época, não existiam apps assim.

O usuário final tem dois caminhos para enviar a foto: um app Android (câmera) e uma página web cliente. Os dois mandam a imagem, por socket, ao mesmo servidor Java — o cliente só captura; o peso do processamento fica no servidor.

No servidor, um pipeline de visão computacional prepara a imagem: redimensiona, converte para escala de cinza, binariza por limiar e detecta o contorno da folha varrendo a imagem em quatro sentidos; depois recorta a moldura útil e gera a matriz de características.

O reconhecimento usa Rede Neural Artificial. Escolhi a rede ART (Adaptive Resonance Theory) de propósito: ela é auto-organizável e não supervisionada, e resolve o dilema plasticidade-estabilidade — aprende uma espécie nova sem precisar reiniciar todo o treinamento. Implementei a ART do zero em Java (e também um MLP com backpropagation), sem frameworks de IA.

Do outro lado, um software desktop em Java é a ferramenta do especialista: cadastra e classifica as plantas de referência (foto original + versão processada) num banco Oracle. É contra essa base que o reconhecimento compara — devolvendo ao cliente a espécie reconhecida ou uma lista de candidatas, com nome e uma curiosidade sobre cada uma.

Decisões de engenharia

  1. 01

    ART pela plasticidade-estabilidade

    Escolhi a rede ART em vez de um MLP comum porque ela é auto-organizável e aprende padrões novos sem esquecer os antigos nem reiniciar o treinamento — exatamente o que um catálogo de espécies que cresce com o tempo pede.

  2. 02

    Processar no servidor, não no celular

    Em 2013 o celular era limitado; o app só captura e envia a foto por socket, e todo o peso — visão computacional e rede neural — roda num servidor Java.

  3. 03

    Contorno em vez da folha inteira

    Em vez de alimentar a rede com a imagem cheia, extraio o contorno da folha (varredura em quatro sentidos) e recorto a moldura útil — menos dados, reconhecimento mais rápido e focado na forma.

  4. 04

    Redes neurais escritas à mão

    Implementei a ART e um MLP com backpropagation do zero em Java, sem bibliotecas de IA — em 2013 não havia o ecossistema de hoje.

Arquitetura

Clientes

App Android + Web

Usuário final envia a foto da folha (câmera ou navegador) por socket.

Servidor Java

O elo central

Servidor Java que conecta tudo: recebe as imagens dos clientes, roda o reconhecimento e conversa com o Oracle.

Visão computacional

Pré-processamento

Cinza → binariza → contorno → recorte → matriz.

Rede neural (ART)

Reconhecimento

Rede ART auto-organizável, feita à mão em Java.

Banco Oracle

Espécies

Catálogo cadastrado; devolve a planta ou candidatas.

Desktop (especialista)

Cadastro Java

Software desktop onde o especialista cadastra e classifica as plantas de referência.

Responsivo

Pipeline com as folhas reais: foto, escala de cinza e binária, até a espécie.
Da foto à espécie, com as folhas reais do TCC: a imagem vira escala de cinza, depois binária (contorno), e alimenta o reconhecimento.
Tela do software desktop Java de cadastro de plantas.
O software desktop em Java: o especialista cadastra e classifica as plantas de referência (nome, taxonomia, curiosidade e imagem) que alimentam o banco.
App Android mostrando a espécie reconhecida e sua classificação.
Resultado no app Android: espécie reconhecida, com classificação taxonômica completa e uma curiosidade sobre a planta.
App Android listando plantas candidatas.
Quando não há certeza, o app lista as plantas candidatas — “alguma dessas pode ser a sua?”.

Stack

Rede Neural (ART/MLP)Visão ComputacionalJavaAndroidOracle