Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

🍃 Classificação de Espécies de Folhas

Visão Computacional · Segmentação · Extração de Descritores · Aprendizado de Máquina

Python scikit-learn scikit-image Google Colab

Classificação automática de 32 espécies de plantas a partir de imagens de folhas,
usando segmentação KMeans, descritores HOG + forma, PCA e classificadores KNN/SVM.


Pipeline

📷 Imagem
    │
    ▼
🔵 Segmentação
    ├─ Convolução (kernel 10×10 para suavização)
    ├─ KMeans (K=2) → separa folha do fundo
    └─ Limiarização de Otsu → máscara binária
    │
    ▼
📐 Extração de Descritores (10 features por imagem)
    ├─ Forma: Circularity, Eccentricity, Solidity, Aspect Ratio,
    │         Perimeter, Area, Num Corners (Harris)
    └─ Textura: HOG Norm, HOG Mean, HOG Var
    │
    ▼
📉 PCA → 4 componentes principais (93.06% da variância)
    │
    ▼
🤖 Classificação
    ├─ KNN  (K=5, Euclidean)   → 76.61%
    ├─ SVM  (RBF,   C=10)      → 79.23% ✅ melhor
    └─ SVM  (Linear, C=10)     → 77.66%

Resultados — Resumo

Modelo Acurácia Macro Avg Precision Macro Avg Recall Macro Avg F1
SVM RBF C=10, gamma=scale 79.23% 0.79 0.78 0.78
SVM Linear C=10 77.66% 0.77 0.77 0.76
KNN K=5, Euclidean 76.61% 0.76 0.76 0.75

Divisão treino/teste: 70% / 30% estratificado · 1334 treino · 573 teste


Resultados por Espécie — KNN (76.61%)

Espécie Precision Recall F1-Score Suporte
1. Bamboo (Phyllostachys) 0.45 0.28 0.34 18
2. Horse Chestnut (Aesculus) 0.75 0.79 0.77 19
3. Redbud (Cercis) 0.96 1.00 0.98 22
4. Indigo (Indigofera) 1.00 1.00 1.00 22
5. Japanese Maple (Acer) 1.00 1.00 1.00 17
6. Nanmu (Phoebe) 0.70 1.00 0.83 19
7. Castor Aralia (Kalopanax) 0.82 0.88 0.85 16
8. Goldenrain (Koelreuteria) 0.88 0.78 0.82 18
9. Chinese Cinnamon 0.62 0.50 0.55 16
10. Anhui Barberry (Berberis) 0.74 0.89 0.81 19
11. Holly (Ilex) 0.80 0.80 0.80 15
12. Cheesewood (Pittosporum) 0.78 0.74 0.76 19
13. Wintersweet (Chimonanthus) 0.67 0.62 0.65 16
14. Camphortree (Cinnamomum) 0.56 0.53 0.54 19
15. Arrowwood (Viburnum) 0.58 0.61 0.59 18
16. Sweet Osmanthus 0.31 0.24 0.27 ⚠️ 17
17. Deodar Cedar (Cedrus) 0.96 1.00 0.98 23
18. Ginkgo (Ginkgo biloba) 0.72 0.68 0.70 19
19. Crape Myrtle (Lagerstroemia) 0.75 1.00 0.86 18
20. Oleander (Nerium) 0.78 0.90 0.84 20
21. Yew Plum Pine (Podocarpus) 0.71 0.83 0.77 18
22. Cherry (Prunus serrulata) 0.65 0.69 0.67 16
23. Glossy Privet (Ligustrum) 0.65 0.69 0.67 16
24. Chinese Toon (Tonna) 1.00 0.80 0.89 20
25. Peach (Prunus persica) 0.67 0.75 0.71 16
26. Woodlotus (Manglietia) 0.89 0.50 0.64 16
27. Trident Maple (Acer) 0.88 0.94 0.91 16
28. Beales Barberry (Mahonia) 0.67 0.62 0.65 16
29. Southern Magnolia 0.79 0.88 0.83 17
30. Canadian Poplar 0.73 0.84 0.78 19
31. Tulip Tree (Liriodendron) 0.90 0.56 0.69 16
32. Tangerine (Citrus) 0.94 0.88 0.91 17

Resultados por Espécie — SVM RBF (79.23%) ✅ Melhor Modelo

Espécie Precision Recall F1-Score Suporte
1. Bamboo (Phyllostachys) 0.67 0.44 0.53 18
2. Horse Chestnut (Aesculus) 0.65 0.79 0.71 19
3. Redbud (Cercis) 1.00 1.00 1.00 22
4. Indigo (Indigofera) 1.00 1.00 1.00 22
5. Japanese Maple (Acer) 1.00 1.00 1.00 17
6. Nanmu (Phoebe) 0.76 1.00 0.86 19
7. Castor Aralia (Kalopanax) 0.88 0.88 0.88 16
8. Goldenrain (Koelreuteria) 0.84 0.89 0.86 18
9. Chinese Cinnamon 0.60 0.19 0.29 ⚠️ 16
10. Anhui Barberry (Berberis) 0.70 1.00 0.83 19
11. Holly (Ilex) 0.87 0.87 0.87 15
12. Cheesewood (Pittosporum) 0.88 0.79 0.83 19
13. Wintersweet (Chimonanthus) 0.53 0.56 0.55 16
14. Camphortree (Cinnamomum) 0.53 0.42 0.47 19
15. Arrowwood (Viburnum) 0.76 0.72 0.74 18
16. Sweet Osmanthus 0.50 0.47 0.48 17
17. Deodar Cedar (Cedrus) 1.00 1.00 1.00 23
18. Ginkgo (Ginkgo biloba) 0.53 0.47 0.50 19
19. Crape Myrtle (Lagerstroemia) 0.75 1.00 0.86 18
20. Oleander (Nerium) 0.82 0.90 0.86 20
21. Yew Plum Pine (Podocarpus) 0.65 0.83 0.73 18
22. Cherry (Prunus serrulata) 0.75 0.75 0.75 16
23. Glossy Privet (Ligustrum) 0.69 0.69 0.69 16
24. Chinese Toon (Tonna) 1.00 0.85 0.92 20
25. Peach (Prunus persica) 0.71 0.75 0.73 16
26. Woodlotus (Manglietia) 0.88 0.88 0.88 16
27. Trident Maple (Acer) 0.88 0.94 0.91 16
28. Beales Barberry (Mahonia) 0.77 0.62 0.69 16
29. Southern Magnolia 0.87 0.76 0.81 17
30. Canadian Poplar 0.82 0.95 0.88 19
31. Tulip Tree (Liriodendron) 1.00 0.75 0.86 16
32. Tangerine (Citrus) 0.89 0.94 0.91 17

Resultados por Espécie — SVM Linear (77.66%)

Espécie Precision Recall F1-Score Suporte
1. Bamboo (Phyllostachys) 0.50 0.28 0.36 18
2. Horse Chestnut (Aesculus) 0.64 0.74 0.68 19
3. Redbud (Cercis) 0.95 0.95 0.95 22
4. Indigo (Indigofera) 1.00 1.00 1.00 22
5. Japanese Maple (Acer) 1.00 1.00 1.00 17
6. Nanmu (Phoebe) 0.86 1.00 0.93 19
7. Castor Aralia (Kalopanax) 0.93 0.88 0.90 16
8. Goldenrain (Koelreuteria) 0.83 0.83 0.83 18
9. Chinese Cinnamon 0.75 0.38 0.50 16
10. Anhui Barberry (Berberis) 0.70 1.00 0.83 19
11. Holly (Ilex) 0.87 0.87 0.87 15
12. Cheesewood (Pittosporum) 0.87 0.68 0.76 19
13. Wintersweet (Chimonanthus) 0.67 0.50 0.57 16
14. Camphortree (Cinnamomum) 0.58 0.58 0.58 19
15. Arrowwood (Viburnum) 0.72 0.72 0.72 18
16. Sweet Osmanthus 0.69 0.53 0.60 17
17. Deodar Cedar (Cedrus) 1.00 1.00 1.00 23
18. Ginkgo (Ginkgo biloba) 0.43 0.47 0.45 19
19. Crape Myrtle (Lagerstroemia) 0.75 1.00 0.86 18
20. Oleander (Nerium) 0.70 0.80 0.74 20
21. Yew Plum Pine (Podocarpus) 0.67 0.89 0.76 18
22. Cherry (Prunus serrulata) 0.65 0.69 0.67 16
23. Glossy Privet (Ligustrum) 0.65 0.69 0.67 16
24. Chinese Toon (Tonna) 0.89 0.85 0.87 20
25. Peach (Prunus persica) 0.75 0.75 0.75 16
26. Woodlotus (Manglietia) 0.67 0.62 0.65 16
27. Trident Maple (Acer) 0.83 0.94 0.88 16
28. Beales Barberry (Mahonia) 0.80 0.75 0.77 16
29. Southern Magnolia 0.88 0.82 0.85 17
30. Canadian Poplar 0.77 0.89 0.83 19
31. Tulip Tree (Liriodendron) 0.92 0.69 0.79 16
32. Tangerine (Citrus) 0.88 0.82 0.85 17

Análise PCA

Componente Variância Acumulada Principais Contribuintes
PC1 51.33% 51.33% HOG Norm, HOG Mean, HOG Var, Perimeter
PC2 19.68% 71.01% Circularity, Solidity, Area
PC3 14.28% 85.29% Eccentricity, Aspect Ratio
PC4 7.77% 93.06% Num Corners

Loadings (contribuição de cada descritor):

Descritor PC1 PC2 PC3 PC4
Circularity -0.025 +0.667 -0.219 +0.123
Eccentricity -0.248 -0.084 +0.623 -0.053
Solidity -0.164 +0.493 +0.418 -0.205
Perimeter +0.354 -0.238 +0.300 +0.019
Area +0.294 +0.488 +0.055 +0.044
Num Corners +0.314 -0.009 -0.067 +0.732
Aspect Ratio +0.277 -0.044 -0.431 -0.583
HOG Norm +0.415 +0.062 +0.195 -0.168
HOG Mean +0.424 -0.039 +0.166 +0.029
HOG Var +0.414 +0.058 +0.204 -0.180

Dataset

~1907 imagens de 32 espécies do dataset Flavia / Chinese Leaf:

# Espécie Nome Comum Imagens
1 Phyllostachys edulis Bambu 59
2 Aesculus chinensis Castanha-da-índia 63
3 Cercis chinensis Olho-de-boi 72
4 Indigofera tinctoria Índigo 73
5 Acer palmatum Bordo-japonês 56
6 Phoebe nanmu Nanmu 62
7 Kalopanax septemlobus Arália 52
8 Koelreuteria paniculata Chuva-de-ouro 59
9 Cinnamomum japonicum Canela-japonesa 55
10 Berberis anhweiensis Berberis 65
11 Ilex macrocarpa Azevinho 50
12 Pittosporum tobira Pittosporum 63
13 Chimonanthus praecox Chimonanto 52
14 Cinnamomum camphora Cânfora 65
15 Viburnum awabuki Viburno 60
16 Osmanthus fragrans Osmanthus 56
17 Cedrus deodara Cedro 77
18 Ginkgo biloba Ginkgo 62
19 Lagerstroemia indica Resedá 61
20 Nerium oleander Oleandro 66
21 Podocarpus macrophyllus Podocarpus 60
22 Prunus serrulata Cerejeira 55
23 Ligustrum lucidum Ligustro 55
24 Toona sinensis Toon chinês 65
25 Prunus persica Pessegueiro 54
26 Manglietia fordiana Magnólia-da-china 52
27 Acer buergerianum Bordo-tridente 53
28 Mahonia bealei Mahônia 55
29 Magnolia grandiflora Magnólia 57
30 Populus canadensis Álamo canadense 64
31 Liriodendron chinense Tulipeiro 53
32 Citrus reticulata Tangerina 56

Descritores de Forma e Textura

Descritores de Forma (regionprops + Harris)

Descritor Fórmula / Definição
Circularity 4π·Area / Perimeter² — 1.0 = círculo perfeito
Eccentricity Excentricidade da elipse equivalente (0 = círculo, 1 = linha)
Solidity Area / Area_convexa — mede reentrâncias e recortes
Perimeter Comprimento do contorno da região segmentada
Area Número de pixels na região segmentada
Aspect Ratio height / width da bounding box
Num Corners Cantos detectados por Harris (min_distance=20, threshold_rel=0.02)

Descritores HOG (Histogram of Oriented Gradients)

Configuração: orientations=9, pixels_per_cell=(8,8), cells_per_block=(2,2), transform_sqrt=True

Descritor Definição
HOG Norm ‖hog_features‖ — quantidade total de gradientes orientados
HOG Mean Força média dos gradientes na imagem
HOG Var Variância dos gradientes — irregularidade da textura

Dependências

pip install numpy matplotlib scikit-image scikit-learn pandas seaborn scipy

Como Executar

O projeto roda no Google Colab com imagens armazenadas no Google Drive.

# Ajuste o caminho conforme sua estrutura no Drive
path_images = '/content/drive/MyDrive/VC/Leaves'
  1. Abra classificacao_folhas.py no Colab ou IDE local
  2. Monte o Google Drive quando solicitado
  3. Certifique-se que as imagens estão no caminho acima
  4. Execute o script

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages