File size: 2,953 Bytes
e38e363
0d44bdc
 
 
 
 
 
 
 
 
 
 
e38e363
 
0d44bdc
e38e363
0d44bdc
e38e363
0d44bdc
e38e363
0d44bdc
 
 
 
 
e38e363
0d44bdc
e38e363
0d44bdc
 
 
e38e363
0d44bdc
e38e363
0d44bdc
 
 
 
 
e38e363
0d44bdc
 
 
 
 
 
e38e363
0d44bdc
 
 
e38e363
0d44bdc
 
 
 
 
 
 
 
 
 
 
e38e363
0d44bdc
 
e38e363
0d44bdc
 
 
 
 
e38e363
 
 
0d44bdc
 
 
 
 
 
 
e38e363
0d44bdc
e38e363
0d44bdc
 
 
e38e363
0d44bdc
e38e363
0d44bdc
 
 
 
e38e363
0d44bdc
e38e363
0d44bdc
e38e363
0d44bdc
 
 
 
 
 
 
 
 
e38e363
0d44bdc
e38e363
0d44bdc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
---
library_name: peft
base_model: google/gemma-3-4b-it
tags:
- vision
- image-classification
- beans
- plant-disease
- gemma-3
- lora
- fine-tuned
license: gemma
---

# Gemma-3-4B Fine-tuned for Bean Disease Classification

This model is a fine-tuned version of [google/gemma-3-4b-it](https://huggingface.co/google/gemma-3-4b-it) for classifying bean plant diseases.

## Model Description

- **Base Model:** Gemma-3-4B-IT (Vision)
- **Fine-tuning Method:** LoRA (r=8, alpha=16)
- **Dataset:** [beans](https://huggingface.co/datasets/beans) (100 samples)
- **Task:** Image captioning / disease classification
- **Final Validation Loss:** 0.001 (excellent!)

## Classes

1. Healthy bean plant
2. Angular leaf spot disease
3. Bean rust disease

## Usage

```python
from transformers import AutoProcessor, Gemma3ForConditionalGeneration
from peft import PeftModel
from PIL import Image
import torch

# Load base model
base_model = Gemma3ForConditionalGeneration.from_pretrained(
    "google/gemma-3-4b-it",
    torch_dtype=torch.bfloat16,
    device_map="auto"
)

# Load LoRA adapter
model = PeftModel.from_pretrained(base_model, "Nefflymicn/gemma3-4b-bean-captioning")
processor = AutoProcessor.from_pretrained("Nefflymicn/gemma3-4b-bean-captioning")

# Prepare input
image = Image.open("bean_plant.jpg")
messages = [
    {
        "role": "user",
        "content": [
            {"type": "image"},
            {"type": "text", "text": "Describe this plant image."}
        ]
    }
]

text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = processor(text=text, images=image, return_tensors="pt").to(model.device)

# Generate
outputs = model.generate(**inputs, max_new_tokens=50, do_sample=False)
response = processor.decode(outputs[0], skip_special_tokens=True)
print(response)
```

## Training Details

- **Epochs:** 10
- **Batch Size:** 1 (effective: 4 with gradient accumulation)
- **Learning Rate:** 5e-5
- **Precision:** FP16
- **Hardware:** NVIDIA T4 GPU
- **Training Time:** ~25 minutes
- **Max Sequence Length:** 512 tokens

## Performance

- **Final Training Loss:** 0.69
- **Final Validation Loss:** 0.001
- **Accuracy:** Very high (based on validation loss)

## Limitations

- Trained on 100 images for demonstration purposes
- Best suited for the 3 specific bean disease types in the training data
- May not generalize to other bean varieties or diseases
- Should be validated on real-world data before production use

## Citation

If you use this model, please cite:

```bibtex
@misc{gemma3-bean-captioning,
  author = {younaice},
  title = {Gemma-3-4B Fine-tuned for Bean Disease Classification},
  year = {2024},
  publisher = {Hugging Face},
  howpublished = {\url{https://huggingface.co/Nefflymicn/gemma3-4b-bean-captioning}}
}
```

## License

This model inherits the Gemma license from the base model. Please refer to the [Gemma license](https://ai.google.dev/gemma/terms) for usage terms.