Case study 05 · 2026

Automated Root Phenotyping & Robotic Inoculation

An end-to-end NPEC system that segments roots from Petri-dish images and drives a robot to inoculate them precisely.

Scroll to explore
Role
Individual project
Field
Computer vision · Robotics · MLOps
NPEC plant phenotyping facilities illustration
87% F1Root segmentation
94.4%Inoculation success
0.54 mmPositioning error
01

Context

NPEC studies how plant genetics and environment interact. Its Hades module images tens of thousands of seedlings, but inoculating each root with microbes was still manual: slow, difficult to scale, and variable. My project automated the step end to end in simulation - detect a root, find a biologically meaningful point, and drive a liquid-handling robot to it.

02

Approach

OpenCV first finds and crops the Petri dish. A TensorFlow/Keras U-Net then labels root, shoot, and seed pixels. Because roots occupy only a fraction of one percent of an image, I used weighted cross-entropy plus Dice loss and evaluated with F1 rather than misleading pixel accuracy. Skeletonization traces each primary root from shoot to tip.

For control, I built a three-axis PID controller with anti-windup for a simulated Opentrons OT-2 in PyBullet. I also wrapped the simulator in a custom Gymnasium environment and trained a PPO agent, then benchmarked it against PID on identical targets. A coordinate transform joins the two halves by translating image pixels into reachable robot coordinates.

03

Results

Root segmentation reached about 87% F1. Root-length extraction achieved 6.4% sMAPE after fixing a plant-position matching error that had kept it near 20%. The integrated PID system achieved 94.4% sub-millimeter success with 0.54 mm mean error - a 52% reduction from baseline - while the classical controller proved more precise and consistent than PPO for this task.

Every reinforcement-learning run was tracked in ClearML, remotely executed, checkpointed, and ranked through a structured hyperparameter search with fixed seeds and a versioned model registry.

04

What I took from it

This project made machine learning feel physical. Small mistakes in segmentation or coordinate mapping did not stay inside a notebook - they changed where the robot moved. Building the complete chain helped me understand how much context, validation, and dependable engineering matter when a model becomes part of a real system.