A service to detect if a given image of palm is ripe or not. A R&D initiated for Swopt
|
|
7 小时之前 | |
|---|---|---|
| palm_oil_mobile | 4 天之前 | |
| src | 8 小时之前 | |
| .env | 3 周之前 | |
| .gitignore | 3 天之前 | |
| LICENSE | 3 周之前 | |
| README.md | 7 小时之前 | |
| Streamlit.md | 3 周之前 | |
| best.onnx | 1 周之前 | |
| best.pt | 2 周之前 | |
| demo_app.py | 8 小时之前 | |
| export_mobile.py | 2 周之前 | |
| export_raw_tflite.py | 1 周之前 | |
| gemini-embedding-service-key.json | 3 周之前 | |
| last.pt | 2 周之前 | |
| main.py | 3 周之前 | |
| manual_convert_tflite.py | 2 周之前 | |
| requirements.txt | 4 天之前 | |
| sawit_tbs.pt | 3 天之前 | |
| test_benchmark.py | 3 天之前 | |
| test_model.py | 2 周之前 | |
| train_palm.py | 2 周之前 | |
| unify.py | 2 周之前 | |
| yolo26n.pt | 2 周之前 | |
| yolov8n.pt | 3 周之前 |
⚠️ PROTOTYPE / PROOF OF CONCEPT (PoC) > This system is developed strictly for demonstration purposes to potential clients and is not intended for production use in its current state.
A high-fidelity AI prototype for detecting the ripeness of Palm Oil Fresh Fruit Bunches (FFB) according to MPOB standards. Built on a custom-trained YOLO26 model (utilizing the latest high-performance architecture via ultralytics) with a triple-engine inference backend and a specialized 5-tab operations dashboard.
| Component | Technology | Purpose |
|---|---|---|
| Primary Engine | YOLO26 (Latest SOTA Backbone) | High-accuracy FFB Ripeness Detection. |
| ONNX Runtime | onnxruntime + best.onnx |
Ultra-fast edge inference simulation (~39ms). |
| PyTorch Runtime | ultralytics + best.pt |
High-resolution auditing and verification. |
| Benchmark Engine | YOLOv8-Sawit (sawit_tbs.pt) |
Competitive baseline comparison. |
| Inference Server | FastAPI (Python) | REST API for multi-client orchestration. |
| Local Audit Log | SQLite (palm_history.db) |
Primary offline-first data persistence. |
| Operations UI | Streamlit (demo_app.py) |
5-tab industrial management dashboard. |
The system demonstrates three distinct AI pathways to showcase deployment flexibility:
manifest.json data contracts and verify resolution-agnostic norm_box coordinates.The following features are currently KIV (Keep In View) and are disabled in the current prototype due to cloud service constraints:
The API server must be running to provide the NMS-Free inference logic.
python main.py
In a separate terminal, run the Streamlit UI:
streamlit run demo_app.py
Every batch job generates a manifest.json in batch_outputs/. This file demonstrates the "Subscriber Payload"—a clean JSON structure ready for hand-off to corporate ERP systems or future vector databases.
The prototype follows Domain-Driven Design to ensure that while this is a PoC, the underlying logic is built on a scalable enterprise foundation:
src/api/: Model orchestration and API endpoints.src/application/: Industrial use cases (Batch, Analysis).src/domain/: Core PalmOilBunch business entities.src/infrastructure/: Repository logic and AI Service wrappers.