CV

Carly CheryResearch

Research

Deep learning and computer vision for plants, and the imaging and sensing hardware behind them. A statement of what I study, followed by the three projects it grew from.

Research Statement

Teaching machines to see plants
through images and sensors.

I am a final-year agricultural sciences student at EARTH University in Costa Rica, working in deep learning and computer vision for plants. I turn plant images and sensor data into measurements a grower can act on, and I build the imaging and sensing hardware those models depend on.

I came to this research from two directions. From Haiti, where I grew up watching coffee, mango, and breadfruit production constrained by disease that was rarely measured until it was too late. From Costa Rica, where EARTH's focus on tropical agriculture met my own curiosity about machine learning. The question I want to work on as a scientist: how can cameras, sensors, and deep learning see plant stress and disease early, accurately, and cheaply enough for the farms that need it most?

Two threads in particular pull at me:

  1. Plant pathology & computer vision. My graduation thesis applies three deep-learning segmentation architectures to coffee leaf rust (Hemileia vastatrix) and ojo de gallo (Mycena citricolor), measuring disease severity on 684 scanned leaves and serving the models in an offline mobile app and a web app. Next, I want to extend this into multi-disease, multi-species pipelines, a single model that diagnoses tropical staple-crop pathologies from a smallholder's smartphone, with calibrated uncertainty.
  2. Plant sensing & controlled-environment engineering. My internship at Auburn's E.W. Shell Fisheries Center put me on an aquaponic system coupling tilapia and greenhouse tomato, where I built the sensor data-logging workflow the team used, and my Arduino pH controller automated pH regulation in a hydroponic system. Next, I want to combine plant images with sensor data so that a growing system can see plant stress and correct its environment on its own.

Both threads rest on a shared commitment: reproducible, field-deployable methods. Standardized imaging, sealed test sets, open code and models, and models small enough to run offline on a phone.

The research I want to do puts deep learning, cameras, and sensors in service of plants: rigorous enough to trust, and simple enough to deploy on a smallholder's farm.

Featured Research

Four lines of work.

The research I have built so far. Each is grounded in a real problem and a real population, and each is the seed of a longer programme.

Comparative evaluation of three semantic segmentation architectures for severity assessment of Hemileia vastatrix and Mycena citricolor on Coffea arabica var. Esperanza L4A5.

Three deep-learning segmentation models, the compact DeepLabV3+ and UNet++ (MobileNetV2 encoders) and the SegFormer-B5 transformer, compared for measuring the severity of coffee leaf rust (Hemileia vastatrix) and American leaf spot, or ojo de gallo (Mycena citricolor), on 684 scanned leaves of Coffea arabica var. Esperanza L4A5.

Each model segments lesions pixel by pixel, converts the lesioned area into a severity percentage, and maps it to a four-level grade (G0 to G3). One model was trained per disease, in the environment where it occurs: ojo de gallo at EARTH University in Guácimo (35 m) and rust on a farm in Sarchí (1,248 m). Rust cut regional coffee production by 16 to 31 % during the 2008–2013 crisis in Central America and Colombia (Avelino et al., 2015); this work offers an objective, reproducible alternative to grading severity by eye. Code, models and a demonstration dataset are public (Zenodo DOI 10.5281/zenodo.22701350).

Keywords semantic segmentation · SegFormer · UNet++ · DeepLabV3+ · disease severity · expert panel · mobile deployment · coffee
Eight scanned coffee leaves in two rows, rust above and ojo de gallo below, from healthy (G0) to severe (G3), with outlined lesions and the severity percentage under each leaf
Severity scale The four grades on scanned leaves, rust (top) and ojo de gallo (bottom), with the reference lesion outlines: G0 below 0.5 % of leaf area, G1 0.5 to 5 %, G2 5 to 20 %, G3 20 % or more. Thesis, Fig. 3.
Methodology flow: Leaf Scanning → Annotation → Model Training → Evaluation → Deployment 01 Leaf Scanning 684 leaves · 1,367 images Epson V39 II flatbed both faces · 23.6 px/mm flat-field correction 02 Annotation ojo de gallo: CVAT, by hand rust: detector + SAM 2 grades G0–G3 from masks leaf-level split, no leakage 03 Model Training DeepLabV3+ · 17 MB UNet++ · 27 MB SegFormer-B5 · 340 MB matched protocol · 3 seeds 04 Evaluation leaf IoU · severity MAE QWK · Wilcoxon + Holm colour-threshold baseline blinded 5-expert panel 05 Deployment offline mobile app DeepLabV3+ · UNet++ on device web app · SegFormer-B5 pg.carlychery.com
  1. 01

    Leaf Scanning

    684 leaves · 1,367 images · Epson V39 II flatbed scanner, both leaf faces at 23.6 px/mm · flat-field correction and white balance.

  2. 02

    Annotation

    ojo de gallo masks corrected by hand in CVAT · rust masks semi-automatic (colour detector refined with SAM 2, spot-checked) · grades G0–G3 from the masks · leaf-level splits audited to zero leakage.

  3. 03

    Model Training

    DeepLabV3+ and UNet++ with MobileNetV2 encoders (17 and 27 MB) against the SegFormer-B5 transformer (340 MB) · one model per disease · all three retrained under one matched protocol with three random seeds.

  4. 04

    Evaluation

    Sealed test set · leaf-level IoU, severity MAE and Bland–Altman, quadratic-weighted kappa · Wilcoxon tests with Holm correction · colour-threshold baseline · blinded panel of five experts.

  5. 05

    Deployment

    Two tiers: an offline mobile app for Android and iOS runs DeepLabV3+ and UNet++ on the phone with ONNX Runtime; a trilingual web app at pg.carlychery.com serves all three models, SegFormer-B5 among them.

All figures are out-of-sample, on a test set sealed before final training (55 ojo de gallo and 21 rust leaves). Trained once each, SegFormer-B5 had the highest lesion overlap (leaf IoU 0.884 for ojo de gallo, 0.767 for rust). Retrained under one matched protocol with three seeds, that ranking largely dissolved.

1/12
UNet++ size vs SegFormer-B5, within about 0.01 leaf IoU (matched protocol)
<0.3%
Severity error (MAE) on ojo de gallo, all three models · rust 0.99 to 1.77 %
0.88
Kappa of SegFormer-B5 with a blinded 5-expert panel, ojo de gallo · average expert 0.80
0/21
Healthy leaves flagged by the networks · colour threshold: 12 of 21
Two scatter plots of leaf-level lesion IoU against model size in megabytes: under the matched protocol UNet++ at 27 MB sits close to SegFormer-B5 at 340 MB, and DeepLabV3+ at 17 MB is lower
Accuracy vs size Leaf-level lesion IoU against exported model size, rust (a) and ojo de gallo (b). Filled markers: the original single runs; open markers: the matched protocol, mean and range over three seeds. Thesis, Fig. 15.

The three architectures on the sealed test set. The compact models are one twelfth (UNet++, 27 MB) to one twentieth (DeepLabV3+, 17 MB) of the transformer's 340 MB, which is why only they run on the phone.

Model Size IoU
rust
IoU
ojo de gallo
QWK
rust
QWK
ojo de gallo
On-device
SegFormer-B5 (MiT-B5)340 MB0.769 ± 0.0050.888 ± 0.0010.880.95Web app
UNet++ (MobileNetV2)27 MB0.759 ± 0.0150.878 ± 0.0040.790.98Yes
DeepLabV3+ (MobileNetV2)17 MB0.725 ± 0.0100.847 ± 0.0150.880.97Yes

IoU: leaf-level lesion IoU under the matched training protocol, mean ± SD over three seeds. QWK: quadratic-weighted kappa of the original models' grades against the mask-derived reference (rust: a semi-automatic reference). Test set: 21 rust and 55 ojo de gallo leaves.

Two dot-and-interval charts of quadratic-weighted kappa against the expert consensus for the average evaluator, SegFormer-B5, UNet++ and DeepLabV3+, for rust and for ojo de gallo
Expert panel Agreement with a blinded panel of five evaluators (four plant pathologists and one agronomist), quadratic-weighted kappa with 95 % CI, rust (a) and ojo de gallo (b). For ojo de gallo, SegFormer-B5 agreed more closely than the average expert (0.88 vs 0.80; Holm-adjusted p = 0.048); for rust, no model differed from the experts. Thesis, Fig. 8.
Two phone screens of the offline mobile app: an ojo de gallo leaf at 8.2 percent and a rust leaf at 19.7 percent, both grade G2, with lesion outlines
Mobile app · offline The compact DeepLabV3+ and UNet++ run on the phone with ONNX Runtime, so severity can be measured without a signal: here ojo de gallo at 8.2 % and rust at 19.7 % of the leaf, both G2. Thesis, Fig. A4.
Two phone screens of the web app: the upload form with disease, model and threshold, and a rust leaf read at 22.02 percent, grade G3
Web app · online pg.carlychery.com serves all three models, SegFormer-B5 among them, in three languages: choose the disease, the model and the detection threshold, and it returns the lesion overlay, severity and grade (here rust, 22.02 %, G3). Thesis, Fig. A5.
  1. The ranking was mostly training budget. Trained once each, SegFormer-B5 led clearly. Under one matched protocol with three seeds, UNet++ came level on rust (leaf IoU 0.759 vs 0.769) and within about 0.01 on ojo de gallo (0.878 vs 0.888), at one twelfth of the size.
  2. Severity close to the reference. Predicted severity fell within 0.15 to 0.25 % of the reference for ojo de gallo and 0.99 to 1.77 % for rust (Pearson r ≥ 0.95), and grade errors stayed between adjacent grades. Against a blinded five-expert panel, SegFormer-B5 agreed more closely than the average expert for ojo de gallo, though not for rust.
  3. No disease invented on healthy leaves. A tuned colour threshold flagged 12 of 21 healthy leaves as rust; the networks flagged none. The rust overestimation was an operating-point effect: a calibrated threshold, or a symmetric loss, cut the SegFormer-B5 bias from +0.99 % to about +0.12 %.

A decision-support research tool, not a validated diagnosis. Results are on flatbed scans; phone photos still need an external validation before any field-use claim. Rust masks are semi-automatic, and all healthy leaves came from the ojo de gallo site, so rust specificity is confounded with site.

Interactive demo of my graduation project

Test the thesis models on a coffee leaf

Upload a coffee-leaf image at pg.carlychery.com, choose the disease and the model, and the web app returns the lesion overlay, the severity percentage and a G0–G3 grade. It serves all three thesis models, SegFormer-B5 among them, for coffee leaf rust and ojo de gallo.

Try the live model →

Integrated tilapia & greenhouse tomato, an aquaponic dataset from the E.W. Shell Fisheries Center.

A season's water-quality, yield, and fish-health data from a coupled aquaponic system, collected as part of the integrated aquaponics research program at Auburn's E.W. Shell Fisheries Center.

Designed and operated biometric monitoring protocols and contributed to data pipelines for real-time system performance evaluation. The dataset, pH, ammonia/nitrite/nitrate cycling, dissolved oxygen, fish length-weight, tomato yield, is the seed for the digital-twin modeling I want to pursue next.

Keywords Aquaponics · tilapia · greenhouse tomato · water-quality · digital twin

A smart-hydroponic pH-regulation controller built on Arduino, for a university electronics competition.

A closed-loop pH stabilizer for nutrient-film hydroponics, dosing dilute acid and base via peristaltic pumps in response to a live probe reading on an Arduino board.

Hydroponic crops sit in a narrow pH window (5.5 – 6.5); drift outside that window costs yield within hours. The prototype reads a glass pH probe through an analog converter, runs a debounced setpoint loop on the Arduino, and triggers two peristaltic pumps (acid / base) in short pulses with a cool-down period to prevent over-shooting. An LCD shows the live reading and the last action. Built and tested against laboratory pH standards over a weekend, then submitted to the Cenfotec inter-university Arduino competition where it placed 6th of 16 projects.

Keywords Arduino · embedded systems · hydroponics · pH control · closed-loop dosing · peristaltic pumps · prototyping

A 3D-printed imaging rig that helps people collect images to train deep-learning models.

I built an imaging rig that helps people collect images for training deep-learning models. It holds a phone at a fixed distance above the sample, so every picture in a dataset is taken the same way.

Two columns hold the phone mount on top, looking straight down at the sample on the base plate from a 20 cm working distance. The rig is modelled in OpenSCAD and 3D-printed. The same framing and distance from one photo to the next make it easier to build clean image datasets for training and testing deep-learning models.

Keywords 3D printing · OpenSCAD · image acquisition · dataset collection · computer vision · deep learning
3D render Two columns · phone mount on top · base plate for the sample · modelled in OpenSCAD · 20 cm working distance.