beans-classifier / README.md
grahamaco's picture
Upload README.md with huggingface_hub
599944b verified
---
datasets:
- AI-Lab-Makerere/beans
language: en
library_name: timm
license: apache-2.0
pipeline_tag: image-classification
tags:
- image-classification
- classifier-lab
- embry-os
- automated-ml
- beans
- plant-disease
model-index:
- name: efficientnet_b0
results:
- task:
type: image-classification
dataset:
name: Beans
type: AI-Lab-Makerere/beans
metrics:
- type: f1
value: 0.9218
name: Macro F1
- type: accuracy
value: 0.9219
---
# Model Card for grahamaco/beans-classifier
<!-- Provide a quick summary of what the model is/does. -->
## Model Details
### Model Description
<!-- Provide a longer summary of what this model is. -->
Bean leaf disease classifier trained with self-improving Classifier Lab pipeline.
- **Developed by:** Graham Anderson (Embry OS)
- **Funded by [optional]:** [More Information Needed]
- **Shared by [optional]:** [More Information Needed]
- **Model type:** [More Information Needed]
- **Language(s) (NLP):** en
- **License:** apache-2.0
- **Finetuned from model [optional]:** [More Information Needed]
### Model Sources [optional]
<!-- Provide the basic links for the model. -->
- **Repository:** https://github.com/grahamaco/embry-os
- **Paper [optional]:** [More Information Needed]
- **Demo [optional]:** [More Information Needed]
## Uses
<!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
### Direct Use
<!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
[More Information Needed]
### Downstream Use [optional]
<!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
[More Information Needed]
### Out-of-Scope Use
<!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->
[More Information Needed]
## Bias, Risks, and Limitations
<!-- This section is meant to convey both technical and sociotechnical limitations. -->
[More Information Needed]
### Recommendations
<!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.
## How to Get Started with the Model
Use the code below to get started with the model.
[More Information Needed]
## Training Details
### Training Data
<!-- This should link to a Dataset Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
[More Information Needed]
### Training Procedure
<!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
#### Preprocessing [optional]
[More Information Needed]
#### Training Hyperparameters
- **Training regime:** [More Information Needed] <!--fp32, fp16 mixed precision, bf16 mixed precision, bf16 non-mixed precision, fp16 non-mixed precision, fp8 mixed precision -->
#### Speeds, Sizes, Times [optional]
<!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
[More Information Needed]
## Evaluation
<!-- This section describes the evaluation protocols and provides the results. -->
### Testing Data, Factors & Metrics
#### Testing Data
<!-- This should link to a Dataset Card if possible. -->
[More Information Needed]
#### Factors
<!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->
[More Information Needed]
#### Metrics
<!-- These are the evaluation metrics being used, ideally with a description of why. -->
[More Information Needed]
### Results
[More Information Needed]
#### Summary
## Model Examination [optional]
<!-- Relevant interpretability work for the model goes here -->
[More Information Needed]
## Environmental Impact
<!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->
Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
- **Hardware Type:** [More Information Needed]
- **Hours used:** [More Information Needed]
- **Cloud Provider:** [More Information Needed]
- **Compute Region:** [More Information Needed]
- **Carbon Emitted:** [More Information Needed]
## Technical Specifications [optional]
### Model Architecture and Objective
[More Information Needed]
### Compute Infrastructure
[More Information Needed]
#### Hardware
[More Information Needed]
#### Software
[More Information Needed]
## Citation [optional]
<!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->
**BibTeX:**
[More Information Needed]
**APA:**
[More Information Needed]
## Glossary [optional]
<!-- If relevant, include terms and calculations in this section that can help readers understand the model or model card. -->
[More Information Needed]
## More Information [optional]
[More Information Needed]
## Model Card Authors [optional]
[More Information Needed]
## Model Card Contact
[More Information Needed]
## Results (Verified on Held-Out Test Set)
**128 test images, never seen during training or validation.**
| Metric | Value |
|--------|-------|
| **Macro F1** | **0.9218** |
| **Accuracy** | **0.9219** |
| **Holdout Gate** | **PASSED >= 0.90** |
### Per-Class Metrics
| Class | Precision | Recall | F1 | Support |
|-------|-----------|--------|----|---------|
| angular_leaf_spot | 0.92 | 0.84 | 0.88 | 43.0 |
| bean_rust | 0.87 | 0.95 | 0.91 | 43.0 |
| healthy | 0.98 | 0.98 | 0.98 | 42.0 |
### Confusion Matrix
| | angular_leaf_spot | bean_rust | healthy |
|---|---|---|---|
| **angular_leaf_spot** | 36 | 6 | 1 |
| **bean_rust** | 2 | 41 | 0 |
| **healthy** | 1 | 0 | 41 |
## Self-Improvement Loop
The classifier was trained iteratively until the holdout gate (F1 >= 0.90) was met.
Each round adjusts hyperparameters and augmentation strategy based on prior failures.
| Round | Epochs | LR | Augment | Val F1 | Test F1 | Gate |
|-------|--------|----|---------|--------|---------|------|
| 1 | 10 | 0.0002 | 1 | 0.9328 | 0.8762 | FAILED |
| 2 | 15 | 0.0001 | 2 | 0.9240 | 0.9218 | PASSED |
**Winning configuration**: Round 2
## Architecture
- **Backbone**: efficientnet_b0 (pretrained on ImageNet)
- **Framework**: PyTorch + timm
- **Classes**: angular_leaf_spot, bean_rust, healthy
- **Image size**: 224x224
## Training Pipeline (Classifier Lab)
1. **Research** -- Identified EfficientNet B0 as candidate
2. **Data** -- Beans dataset from HuggingFace (1034 train, 133 val, 128 test)
3. **Self-improvement loop** -- Round 1 failed gate (F1 0.876), adjusted LR and augmentation, Round 2 passed (F1 0.922)
4. **Evaluate** -- Held-out test set (128 images, never seen during training)
5. **Promote** -- Gate passed, pushed to HuggingFace with model checkpoint
## License
Apache 2.0