Image Classification
timm
English
classifier-lab
embry-os
automated-ml
beans
plant-disease
Eval Results (legacy)
Instructions to use grahamaco/beans-classifier with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- timm
How to use grahamaco/beans-classifier with timm:
import timm model = timm.create_model("hf_hub:grahamaco/beans-classifier", pretrained=True) - Notebooks
- Google Colab
- Kaggle
| 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 | |