SmartApple AI Detection & Classification
Orchard Intelligence: an AI-powered computer vision system that detects and classifies apples from images with adjustable confidence thresholds. Built as a Final Year Project, combining a YOLO/Ultralytics-based detection model with a persistent Python classification service to avoid model-reload overhead on each request.
- Client
- Final Year Project
- Duration
- 6 month
Built with
- React
- Vite
- Tailwind CSS
- Express
- Python
- PyTorch
- YOLO / Ultralytics
The problem it solves
Counting apples and judging their ripeness is done by eye, which is slow and inconsistent across a whole orchard. The aim of this Final Year Project was to turn that into a computer-vision system someone could actually use from a web page, not a notebook experiment.
Who it's for
Growers and packing operations that count or grade produce, and anyone who wants to see an AI model turned into a working app. The same approach fits counting and grading other fruit or products from photos.
What it does
Apple detection
A YOLO object-detection model finds every apple in a photo and draws a box around each one.
Adjustable confidence
A slider sets how sure the model must be before it counts something as an apple, passed all the way down to the model.
Ripeness classification
Each detected apple is cropped and labelled ripe or unripe by a second model, with a confidence score.
Results summary
Total apples found, ripe and unripe counts and the average confidence, shown together.
Zoom and pan
Move around the annotated photo to check individual apples, even in a crowded orchard shot.
Batch classification
All the apples in a photo are classified in one request instead of one round trip per apple.
How it works
4 steps, each one in the walkthrough video above
01Upload an orchard photo
Upload a photo of apples, on the tree or in a crate, and set the confidence threshold for detection.
02193 apples detected
The detector boxes every apple it finds. This orchard photo came back with 193, and the annotated image can be zoomed and panned.
03Ripeness classification
Every detected apple is then classified as ripe or unripe, each with its own confidence score.
04Model statistics
The statistics view brings the run together, with the counts and confidence from both models.
How it's built
- React and Vite with Tailwind CSS on the front end; a Node.js and Express back end that receives the uploads.
- Detection uses YOLO (Ultralytics) trained on a custom apple dataset; classification uses a PyTorch model fine-tuned to tell ripe from unripe. Training was done in a Jupyter notebook.
- Two ways of running the models, chosen on purpose: detection runs fresh for each request, while the classifier stays loaded as a long-running Python service, so it doesn't pay the multi-second model-loading cost on every call.
- The model files (about 360 MB) are versioned with Git LFS instead of being committed as raw files.
What this shows I can build
AI apps
AI-powered tools such as image detection and predictive maintenance, built around your data and needs.
More projects
- Postage & Delivery Route OptimizerA route-planning web app for postage and delivery workers that geocodes real-world addresses -- including messy, incomplete, or abbreviated Malaysian address formats -- and plans delivery routes, with clear reporting when an address cannot be located.
- Website Landing pageA landing page for thrifted.af, a thrift clothing drop brand -- presents a "Drop Archive" catalog with tag-based pricing (RM5/RM10/RM20), polaroid-style product photography, a grid-to-detail browsing flow, and an access-gated reveal, in a warm cream, flat paper-like aesthetic with no gradients or shadows.
Want something like this built?
Tell me what your business needs and I'll suggest the simplest way to build it.