YOLOv8-based household waste detection with a modular Streamlit inference app for image and video analysis.
Live demo • Tested locally with Homebrew Python 3.14
Waste Sorting Vision is a computer vision project for recognising common household waste categories. It combines model inference, a lightweight Streamlit interface, and a concise set of project documents covering the main experimental results.
This public release is designed to be straightforward to run and easy to review. The focus is on the working application, the class set used by the app, and the project outcomes that are most relevant in a portfolio context.
Sample detection output from the current application:
- image and video inference through a Streamlit app
- configurable checkpoint selection for local evaluation
- bundled 15-class and 16-class checkpoints for comparison
- annotated image download for quick result review
- project figures, result summaries, and workflow notes
- the recorded training history covers
8,11,15, and16-class settings - the highest
mAP@50listed in the summary table is0.957from ayolov8s,640,38,000image,8-class experiment - the default app checkpoint is
best5.pt, which uses a16-class label set - the alternate
best.ptcheckpoint uses a15-class label set embedded in the model
Representative project figure:
Additional tables and figures are summarised in docs/modeling_report.md and docs/experiment_history.md.
- a thin Streamlit entry point in
app/streamlit_app.py - modular application logic under
src/waste_sorting_vision/ - configurable class names, demo assets, and checkpoint locations in
configs/ - project figures under
assets/figures/ - supporting project notes under
docs/
waste-sorting-vision/
├─ app/
├─ assets/
├─ configs/
├─ docs/
├─ models/
├─ requirements/
├─ src/
└─ tests/
python -m venv .venv
source .venv/bin/activate
pip install -r requirements/app.txt
streamlit run app/streamlit_app.pyThe commands above assume that python points to the interpreter you want to use for this project environment.
If you manage multiple Python installations locally, create the virtual environment with your preferred interpreter first and then activate .venv.
For the closest match to the tested local environment, install from requirements/full-lock.txt instead.
For Streamlit Community Cloud deployment, use app/streamlit_app.py as the entry point.
This repository also includes a root requirements.txt so the deployment environment can resolve the application dependencies automatically.
It also includes a root packages.txt for the Linux system packages required by OpenCV in Community Cloud.
For deployment stability, choose Python 3.13 or 3.14 in the deployment settings when those options are available.
source .venv/bin/activate
pip install -r requirements/dev.txt
pytest -p no:cacheprovider testsThe app exposes two model keys right now:
bestbest5
Resolution order is:
- matching environment variable
models/path configured inconfigs/model_sources.yaml
Environment variables:
WSV_MODEL_BESTWSV_MODEL_BEST5
If you later decide to move the checkpoints outside the repository, point those environment variables to release assets, Git LFS files, or another artefact location.
- Project scope note
- Environment reference
- Class labels
- Modelling report
- Experiment history
- Preprocessing summary
- Checkpoint storage strategy
- AI-Hub Household Waste Dataset: https://aihub.or.kr/aihubdata/data/view.do?dataSetSn=71385
- Ultralytics YOLO: https://github.com/ultralytics/ultralytics
- Streamlit: https://streamlit.io/
This repository presents the project as a standalone public release. My original work on the project centred on detection model training, inference, and the end-to-end application workflow. For this release, I also reorganised the repository, modularised the codebase, and prepared the documentation and configuration for a cleaner public-facing version.

